addAllConsumesProducesCombinations(httpMethodBoundAcceptors, methodRouting); this.router = createHeadEnrichedRouter(); } else { this.router = createInternalRouter();
private boolean fillMediaTypes(final Set<MediaType> effectiveTypes, final ResourceMethod resourceMethod, final List<MediaType> methodTypes, final boolean inputTypes) { // Add method types to the resulting list iff there is more than just */* if (methodTypes.size() > 1 || !methodTypes.contains(MediaType.WILDCARD_TYPE)) { effectiveTypes.addAll(methodTypes); } boolean mediaTypesFromWorkers = effectiveTypes.isEmpty(); if (mediaTypesFromWorkers) { final Invocable invocableMethod = resourceMethod.getInvocable(); // If not predefined from method - get it from workers. if (inputTypes) { fillInputTypesFromWorkers(effectiveTypes, invocableMethod); } else { fillOutputTypesFromWorkers(effectiveTypes, invocableMethod.getRawResponseType()); } mediaTypesFromWorkers = !effectiveTypes.isEmpty(); // If still empty - get all available. if (!mediaTypesFromWorkers) { if (inputTypes) { effectiveTypes.addAll(workers.getMessageBodyReaderMediaTypesByType(Object.class)); } else { effectiveTypes.addAll(workers.getMessageBodyWriterMediaTypesByType(Object.class)); } mediaTypesFromWorkers = true; } } return mediaTypesFromWorkers; }
private void addAllConsumesProducesCombinations(final List<ConsumesProducesAcceptor> acceptors, final MethodRouting methodRouting) { final ResourceMethod resourceMethod = methodRouting.method; final Set<MediaType> effectiveInputTypes = new LinkedHashSet<>(); boolean consumesFromWorkers = fillMediaTypes(effectiveInputTypes, resourceMethod, resourceMethod.getConsumedTypes(), true); final Set<MediaType> effectiveOutputTypes = new LinkedHashSet<>(); boolean producesFromWorkers = fillMediaTypes(effectiveOutputTypes, resourceMethod, resourceMethod.getProducedTypes(), false); final Set<ConsumesProducesAcceptor> acceptorSet = new HashSet<>(); for (MediaType consumes : effectiveInputTypes) { for (MediaType produces : effectiveOutputTypes) { acceptorSet.add(new ConsumesProducesAcceptor( new CombinedMediaType.EffectiveMediaType(consumes, consumesFromWorkers), new CombinedMediaType.EffectiveMediaType(produces, producesFromWorkers), methodRouting)); } } acceptors.addAll(acceptorSet); }
|| candidate.methodRouting.method != method.selected.methodRouting.method) { if (isReadable(candidate) && isWriteable(candidate)) { method.consider(candidate); } else {
private boolean isReadable(final RequestSpecificConsumesProducesAcceptor candidate) { final Invocable invocable = candidate.methodRouting.method.getInvocable(); final Method handlingMethod = invocable.getHandlingMethod(); final Parameter entityParam = getEntityParam(invocable); if (entityParam == null) { return true; } else { final Class<?> entityType = entityParam.getRawType(); for (final ReaderModel model : workers.getReaderModelsForType(entityType)) { if (model.isReadable( entityType, entityParam.getType(), handlingMethod.getDeclaredAnnotations(), candidate.consumes.combinedType)) { return true; } } } return false; }
final Router methodSelectingRouter = new MethodSelectingRouter(messageBodyWorkers, methodRoutings); if (subResourceMode) { currentRouterBuilder = startNextRoute(currentRouterBuilder, PathPattern.END_OF_PATH_PATTERN) .to(uriPushingRouter) .to(childResourcePushingRouter) .to(new MethodSelectingRouter(messageBodyWorkers, childMethodRoutings));
|| candidate.methodRouting.method != method.selected.methodRouting.method) { if (isReadable(candidate) && isWriteable(candidate)) { method.consider(candidate); } else {
private boolean isReadable(final RequestSpecificConsumesProducesAcceptor candidate) { final Invocable invocable = candidate.methodRouting.method.getInvocable(); final Method handlingMethod = invocable.getHandlingMethod(); final Parameter entityParam = getEntityParam(invocable); if (entityParam == null) { return true; } else { final Class<?> entityType = entityParam.getRawType(); for (final ReaderModel model : workers.getReaderModelsForType(entityType)) { if (model.isReadable( entityType, entityParam.getType(), handlingMethod.getDeclaredAnnotations(), candidate.consumes.combinedType)) { return true; } } } return false; }
final Router methodSelectingRouter = new MethodSelectingRouter(messageBodyWorkers, methodRoutings); if (subResourceMode) { currentRouterBuilder = startNextRoute(currentRouterBuilder, PathPattern.END_OF_PATH_PATTERN) .to(uriPushingRouter) .to(childResourcePushingRouter) .to(new MethodSelectingRouter(messageBodyWorkers, childMethodRoutings));
addAllConsumesProducesCombinations(httpMethodBoundAcceptors, methodRouting); this.router = createHeadEnrichedRouter(); } else { this.router = createInternalRouter();
private boolean fillMediaTypes(final Set<MediaType> effectiveTypes, final ResourceMethod resourceMethod, final List<MediaType> methodTypes, final boolean inputTypes) { // Add method types to the resulting list iff there is more than just */* if (methodTypes.size() > 1 || !methodTypes.contains(MediaType.WILDCARD_TYPE)) { effectiveTypes.addAll(methodTypes); } boolean mediaTypesFromWorkers = effectiveTypes.isEmpty(); if (mediaTypesFromWorkers) { final Invocable invocableMethod = resourceMethod.getInvocable(); // If not predefined from method - get it from workers. if (inputTypes) { fillInputTypesFromWorkers(effectiveTypes, invocableMethod); } else { fillOutputTypesFromWorkers(effectiveTypes, invocableMethod.getRawResponseType()); } mediaTypesFromWorkers = !effectiveTypes.isEmpty(); // If still empty - get all available. if (!mediaTypesFromWorkers) { if (inputTypes) { effectiveTypes.addAll(workers.getMessageBodyReaderMediaTypesByType(Object.class)); } else { effectiveTypes.addAll(workers.getMessageBodyWriterMediaTypesByType(Object.class)); } mediaTypesFromWorkers = true; } } return mediaTypesFromWorkers; }
|| candidate.methodRouting.method != method.selected.methodRouting.method) { if (isReadable(candidate) && isWriteable(candidate)) { method.consider(candidate); } else {
private void addAllConsumesProducesCombinations(final List<ConsumesProducesAcceptor> acceptors, final MethodRouting methodRouting) { final ResourceMethod resourceMethod = methodRouting.method; final Set<MediaType> effectiveInputTypes = new LinkedHashSet<>(); boolean consumesFromWorkers = fillMediaTypes(effectiveInputTypes, resourceMethod, resourceMethod.getConsumedTypes(), true); final Set<MediaType> effectiveOutputTypes = new LinkedHashSet<>(); boolean producesFromWorkers = fillMediaTypes(effectiveOutputTypes, resourceMethod, resourceMethod.getProducedTypes(), false); final Set<ConsumesProducesAcceptor> acceptorSet = new HashSet<>(); for (MediaType consumes : effectiveInputTypes) { for (MediaType produces : effectiveOutputTypes) { acceptorSet.add(new ConsumesProducesAcceptor( new CombinedMediaType.EffectiveMediaType(consumes, consumesFromWorkers), new CombinedMediaType.EffectiveMediaType(produces, producesFromWorkers), methodRouting)); } } acceptors.addAll(acceptorSet); }
private boolean isReadable(final RequestSpecificConsumesProducesAcceptor candidate) { final Invocable invocable = candidate.methodRouting.method.getInvocable(); final Method handlingMethod = invocable.getHandlingMethod(); final Parameter entityParam = getEntityParam(invocable); if (entityParam == null) { return true; } else { final Class<?> entityType = entityParam.getRawType(); for (final ReaderModel model : workers.getReaderModelsForType(entityType)) { if (model.isReadable( entityType, entityParam.getType(), handlingMethod.getDeclaredAnnotations(), candidate.consumes.combinedType)) { return true; } } } return false; }
final Router methodSelectingRouter = new MethodSelectingRouter(messageBodyWorkers, methodRoutings); if (subResourceMode) { currentRouterBuilder = startNextRoute(currentRouterBuilder, PathPattern.END_OF_PATH_PATTERN) .to(uriPushingRouter) .to(childResourcePushingRouter) .to(new MethodSelectingRouter(messageBodyWorkers, childMethodRoutings));
addAllConsumesProducesCombinations(httpMethodBoundAcceptors, methodRouting); this.router = createHeadEnrichedRouter(); } else { this.router = createInternalRouter();
private boolean fillMediaTypes(final Set<MediaType> effectiveTypes, final ResourceMethod resourceMethod, final List<MediaType> methodTypes, final boolean inputTypes) { // Add method types to the resulting list iff there is more than just */* if (methodTypes.size() > 1 || !methodTypes.contains(MediaType.WILDCARD_TYPE)) { effectiveTypes.addAll(methodTypes); } boolean mediaTypesFromWorkers = effectiveTypes.isEmpty(); if (mediaTypesFromWorkers) { final Invocable invocableMethod = resourceMethod.getInvocable(); // If not predefined from method - get it from workers. if (inputTypes) { fillInputTypesFromWorkers(effectiveTypes, invocableMethod); } else { fillOutputTypesFromWorkers(effectiveTypes, invocableMethod.getRawResponseType()); } mediaTypesFromWorkers = !effectiveTypes.isEmpty(); // If still empty - get all available. if (!mediaTypesFromWorkers) { if (inputTypes) { effectiveTypes.addAll(workers.getMessageBodyReaderMediaTypesByType(Object.class)); } else { effectiveTypes.addAll(workers.getMessageBodyWriterMediaTypesByType(Object.class)); } mediaTypesFromWorkers = true; } } return mediaTypesFromWorkers; }
|| candidate.methodRouting.method != method.selected.methodRouting.method) { if (isReadable(candidate) && isWriteable(candidate)) { method.consider(candidate); } else {
private void addAllConsumesProducesCombinations(final List<ConsumesProducesAcceptor> acceptors, final MethodRouting methodRouting) { final ResourceMethod resourceMethod = methodRouting.method; final Set<MediaType> effectiveInputTypes = new LinkedHashSet<>(); boolean consumesFromWorkers = fillMediaTypes(effectiveInputTypes, resourceMethod, resourceMethod.getConsumedTypes(), true); final Set<MediaType> effectiveOutputTypes = new LinkedHashSet<>(); boolean producesFromWorkers = fillMediaTypes(effectiveOutputTypes, resourceMethod, resourceMethod.getProducedTypes(), false); final Set<ConsumesProducesAcceptor> acceptorSet = new HashSet<>(); for (MediaType consumes : effectiveInputTypes) { for (MediaType produces : effectiveOutputTypes) { acceptorSet.add(new ConsumesProducesAcceptor( new CombinedMediaType.EffectiveMediaType(consumes, consumesFromWorkers), new CombinedMediaType.EffectiveMediaType(produces, producesFromWorkers), methodRouting)); } } acceptors.addAll(acceptorSet); }
private boolean isReadable(final RequestSpecificConsumesProducesAcceptor candidate) { final Invocable invocable = candidate.methodRouting.method.getInvocable(); final Method handlingMethod = invocable.getHandlingMethod(); final Parameter entityParam = getEntityParam(invocable); if (entityParam == null) { return true; } else { final Class<?> entityType = entityParam.getRawType(); for (final ReaderModel model : workers.getReaderModelsForType(entityType)) { if (model.isReadable( entityType, entityParam.getType(), handlingMethod.getDeclaredAnnotations(), candidate.consumes.combinedType)) { return true; } } } return false; }