in jax-rs.whiteboard/src/main/java/org/apache/aries/jax/rs/whiteboard/internal/introspection/ClassIntrospector.java [69:123]
private static Stream<ResourceMethodInfoDTO> convert(
Set<ClassResourceInfo> visited,
String parentPath, String defaultHttpMethod,
List<MediaType> defaultConsumeTypes,
List<MediaType> defaultProduceTypes,
Set<String> defaultNameBindings, boolean recurse,
ClassResourceInfo classResourceInfo) {
visited.add(classResourceInfo);
String path = parentPath + getPathSafe(classResourceInfo);
List<MediaType> consumeMime = getConsumesInfo(
classResourceInfo.getResourceClass());
if (consumeMime == null) {
consumeMime = defaultConsumeTypes;
}
List<MediaType> produceMime = getProducesInfo(
classResourceInfo.getResourceClass());
if (produceMime == null) {
produceMime = defaultProduceTypes;
}
Set<String> nameBindings = classResourceInfo.getNameBindings();
if (nameBindings.isEmpty()) {
nameBindings = defaultNameBindings;
}
MethodDispatcher methodDispatcher =
classResourceInfo.getMethodDispatcher();
Set<OperationResourceInfo> operationResourceInfos =
methodDispatcher.getOperationResourceInfos();
List<MediaType> consumeParam = consumeMime == null ? null : new ArrayList<>(consumeMime);
List<MediaType> produceParam = produceMime == null ? null : new ArrayList<>(produceMime);
HashSet<String> nameBindingsParam = nameBindings == null ? null : new HashSet<>(nameBindings);
Stream<ResourceMethodInfoDTO> stream =
operationResourceInfos.stream().
flatMap(
ori -> convert(
visited, path, defaultHttpMethod, consumeParam,
produceParam, nameBindingsParam, recurse, ori)
).collect(
Collectors.toList()
).stream();
visited.remove(classResourceInfo);
return stream;
}