private static void completeOperationProduces(Operation operation, MethodAnnotationInfo mai, ServerResource sr, MetadataService metadataService) { if (metadataService != null) { try { List<Variant> responseVariants = mai.getResponseVariants( metadataService, sr.getConverterService()); if (responseVariants == null || responseVariants.isEmpty()) { if (mai.getJavaMethod().getReturnType() != Void.TYPE) { LOGGER.warning("Method has no response variant: " + mai.getJavaMethod()); } return; } // une representation per variant ? for (Variant variant : responseVariants) { if (variant.getMediaType() == null) { LOGGER.warning("Variant has no media type: " + variant); continue; } operation.getProduces().add( variant.getMediaType().getName()); } } catch (IOException e) { throw new ResourceException(e); } } }
private static void completeOperationProduces(Operation operation, MethodAnnotationInfo mai, ServerResource sr, MetadataService metadataService) { if (metadataService != null) { try { List<Variant> responseVariants = mai.getResponseVariants( metadataService, sr.getConverterService()); if (responseVariants == null || responseVariants.isEmpty()) { if (mai.getJavaMethod().getReturnType() != Void.TYPE) { LOGGER.warning("Method has no response variant: " + mai.getJavaMethod()); } return; } // une representation per variant ? for (Variant variant : responseVariants) { if (variant.getMediaType() == null) { LOGGER.warning("Variant has no media type: " + variant); continue; } operation.getProduces().add( variant.getMediaType().getName()); } } catch (IOException e) { throw new ResourceException(e); } } }
private static void completeOperationProduces(Operation operation, MethodAnnotationInfo mai, ServerResource sr, MetadataService metadataService) { if (metadataService != null) { try { List<Variant> responseVariants = mai.getResponseVariants( metadataService, sr.getConverterService()); if (responseVariants == null || responseVariants.isEmpty()) { if (mai.getJavaMethod().getReturnType() != Void.TYPE) { LOGGER.warning("Method has no response variant: " + mai.getJavaMethod()); } return; } // une representation per variant ? for (Variant variant : responseVariants) { if (variant.getMediaType() == null) { LOGGER.warning("Variant has no media type: " + variant); continue; } operation.getProduces().add( variant.getMediaType().getName()); } } catch (IOException e) { throw new ResourceException(e); } } }
private static void completeOperationProduces(Operation operation, MethodAnnotationInfo mai, ServerResource sr, MetadataService metadataService) { if (metadataService != null) { try { List<Variant> responseVariants = mai.getResponseVariants( metadataService, sr.getConverterService()); if (responseVariants == null || responseVariants.isEmpty()) { if (mai.getJavaMethod().getReturnType() != Void.TYPE) { LOGGER.warning("Method has no response variant: " + mai.getJavaMethod()); } return; } // une representation per variant ? for (Variant variant : responseVariants) { if (variant.getMediaType() == null) { LOGGER.warning("Variant has no media type: " + variant); continue; } operation.getProduces().add( variant.getMediaType().getName()); } } catch (IOException e) { throw new ResourceException(e); } } }
private static void completeOperationProduces(Operation operation, MethodAnnotationInfo mai, ServerResource sr, MetadataService metadataService) { if (metadataService != null) { try { List<Variant> responseVariants = mai.getResponseVariants( metadataService, sr.getConverterService()); if (responseVariants == null || responseVariants.isEmpty()) { if (mai.getJavaMethod().getReturnType() != Void.TYPE) { LOGGER.warning("Method has no response variant: " + mai.getJavaMethod()); } return; } // une representation per variant ? for (Variant variant : responseVariants) { if (variant.getMediaType() == null) { LOGGER.warning("Variant has no media type: " + variant); continue; } operation.getProduces().add( variant.getMediaType().getName()); } } catch (IOException e) { throw new ResourceException(e); } } }
/** * Returns the first annotation descriptor matching the given method. * * @param method * The method to match. * @param query * The query parameters. * @param entity * The request entity or null. * @return The annotation descriptor. * @throws IOException */ private MethodAnnotationInfo getAnnotation(Method method, Form query, Representation entity) throws IOException { if (isAnnotated()) { return AnnotationUtils.getInstance().getMethodAnnotation( getAnnotations(), method, query, entity, getMetadataService(), getConverterService()); } return null; }
metadataService, sr.getConverterService());
} else { result = put(getConverterService().applyPatch(get(), entity), variant);
metadataService, sr.getConverterService());
metadataService, sr.getConverterService());
metadataService, sr.getConverterService());
metadataService, sr.getConverterService());
/** * Apply a patch entity to the current representation of the resource * retrieved by calling {@link #get()}. By default, the * {@link ConverterService#applyPatch(Representation, Representation)} method is used and then the * {@link #put(Representation)} method called. * * @param entity * The patch entity to apply. * @return The optional result entity. * @throws ResourceException * @see <a href="https://tools.ietf.org/html/rfc5789">HTTP PATCH method</a> */ protected Representation patch(Representation entity) throws ResourceException { AnnotationInfo annotationInfo; try { annotationInfo = getAnnotation(Method.PATCH); if (annotationInfo != null) { return doHandle(Method.PATCH, getQuery(), entity); } else { // Default implementation return put(getConverterService().applyPatch(get(), entity)); // doError(Status.CLIENT_ERROR_METHOD_NOT_ALLOWED); } } catch (IOException e) { throw new ResourceException(e); } }
getRequestEntity(), getMetadataService(), getConverterService())) { annoVariants = methodAnnotationInfo .getResponseVariants( getMetadataService(), getConverterService());
.getRequestVariants( resource.getMetadataService(), resource.getConverterService()); .getResponseVariants( resource.getMetadataService(), resource.getConverterService());