public List<ContextResolver> getContextResolvers(final Class<?> clazz, MediaType type) { MediaTypeMap<SortedKey<ContextResolver>> resolvers = getContextResolvers().get(clazz); if (resolvers == null) return null; List<ContextResolver> rtn = new ArrayList<ContextResolver>(); List<SortedKey<ContextResolver>> list = resolvers.getPossible(type); list.forEach(resolver -> rtn.add(resolver.obj)); return rtn; }
@Deprecated private <T> MessageBodyReader<T> resolveMessageBodyReader(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap<SortedKey<MessageBodyReader>> availableReaders) { List<SortedKey<MessageBodyReader>> readers = availableReaders.getPossible(mediaType, type); //logger.info("******** getMessageBodyReader *******"); for (SortedKey<MessageBodyReader> reader : readers) { //logger.info(" matching reader: " + reader.getClass().getName()); if (reader.obj.isReadable(type, genericType, annotations, mediaType)) { LogMessages.LOGGER.debugf("MessageBodyReader: %s", reader.getClass().getName()); return (MessageBodyReader<T>) reader.obj; } } return null; }
@Deprecated private <T> MessageBodyWriter<T> resolveMessageBodyWriter(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap<SortedKey<MessageBodyWriter>> availableWriters) { List<SortedKey<MessageBodyWriter>> writers = availableWriters.getPossible(mediaType, type); /* logger.info("******* getMessageBodyWriter(" + type.getName() + ", " + mediaType.toString() + ")****"); for (SortedKey<MessageBodyWriter> writer : writers) { logger.info(" possible writer: " + writer.obj.getClass().getName()); } */ for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, mediaType)) { LogMessages.LOGGER.debugf("MessageBodyWriter: %s", writer.getClass().getName()); //logger.info(" picking: " + writer.obj.getClass().getName()); return (MessageBodyWriter<T>) writer.obj; } } return null; }
public Map<MessageBodyWriter<?>, Class<?>> getPossibleMessageBodyWritersMap(Class type, Type genericType, Annotation[] annotations, MediaType accept) { Map<MessageBodyWriter<?>, Class<?>> map = new HashMap<MessageBodyWriter<?>, Class<?>>(); List<SortedKey<MessageBodyWriter>> writers = getServerMessageBodyWriters().getPossible(accept, type); for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, accept)) { Class<?> mbwc = writer.obj.getClass(); if (!mbwc.isInterface() && mbwc.getSuperclass() != null && !mbwc.getSuperclass().equals(Object.class) && mbwc.isSynthetic()) { mbwc = mbwc.getSuperclass(); } Class writerType = Types.getTemplateParameterOfInterface(mbwc, MessageBodyWriter.class); if (writerType == null || !writerType.isAssignableFrom(type)) continue; map.put(writer.obj, writerType); } } return map; }
/** * {@inheritDoc} */ @Override public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException { LogMessages.LOGGER.debugf("Interceptor : %s, Method : aroundWriteTo", getClass().getName()); String function = uri.getQueryParameters().getFirst(callbackQueryParameter); if (enabled && function != null && !function.trim().isEmpty() && !jsonpCompatibleMediaTypes.getPossible(context.getMediaType()).isEmpty()){ OutputStreamWriter writer = new OutputStreamWriter(context.getOutputStream()); if (wrapInTryCatch) writer.write("try{"); writer.write(function + "("); writer.flush(); // Disable the close method before calling context.proceed() OutputStream old = context.getOutputStream(); DoNotCloseDelegateOutputStream wrappedOutputStream = new DoNotCloseDelegateOutputStream(old); context.setOutputStream(wrappedOutputStream); try { context.proceed(); wrappedOutputStream.flush(); writer.write(")"); if (wrapInTryCatch) writer.write("}catch(e){}"); writer.flush(); } finally { context.setOutputStream(old); } } else { context.proceed(); } }
RESTEasyTracingLogger tracingLogger) List<SortedKey<MessageBodyReader>> readers = availableReaders.getPossible(mediaType, type);
RESTEasyTracingLogger tracingLogger) List<SortedKey<MessageBodyWriter>> writers = availableWriters.getPossible(mediaType, type);
public MediaType getConcreteMediaTypeFromMessageBodyWriters(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { List<SortedKey<MessageBodyWriter>> writers = getServerMessageBodyWriters().getPossible(mediaType, type); for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, mediaType)) { MessageBodyWriter mbw = writer.obj; Class writerType = Types.getTemplateParameterOfInterface(mbw.getClass(), MessageBodyWriter.class); if (writerType == null || writerType.equals(Object.class) || !writerType.isAssignableFrom(type)) continue; Produces produces = mbw.getClass().getAnnotation(Produces.class); if (produces == null) continue; for (String produce : produces.value()) { MediaType mt = MediaType.valueOf(produce); if (mt.isWildcardType() || mt.isWildcardSubtype()) continue; return mt; } } } return null; }
List<Class<?>> list = typeMap.getPossible(mediaType); for (Class<?> decoratorAnnotation : list)
public List<ContextResolver> getContextResolvers(final Class<?> clazz, MediaType type) { MediaTypeMap<SortedKey<ContextResolver>> resolvers = getContextResolvers().get(clazz); if (resolvers == null) return null; List<ContextResolver> rtn = new ArrayList<ContextResolver>(); List<SortedKey<ContextResolver>> list = resolvers.getPossible(type); list.forEach(resolver -> rtn.add(resolver.obj)); return rtn; }
/** * Clear any instances of the given type from the {@link MediaTypeMap} by replacing them with the placeholder. * * Unfortunately removing the entries is tricky as they're scattered across multiple read-only nested maps. */ @SuppressWarnings({ "rawtypes", "unchecked" }) private static <T> void clearInstancesOf(Class type, MediaTypeMap<SortedKey<T>> mediaTypeMap, T placeholder) { for (SortedKey key : mediaTypeMap.getPossible(MediaType.WILDCARD_TYPE)) { if (type.isInstance(key.obj)) { key.readerClass = Void.class; key.template = Void.class; key.obj = placeholder; } } mediaTypeMap.getClassCache().clear(); }
@Deprecated private <T> MessageBodyReader<T> resolveMessageBodyReader(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap<SortedKey<MessageBodyReader>> availableReaders) { List<SortedKey<MessageBodyReader>> readers = availableReaders.getPossible(mediaType, type); //logger.info("******** getMessageBodyReader *******"); for (SortedKey<MessageBodyReader> reader : readers) { //logger.info(" matching reader: " + reader.getClass().getName()); if (reader.obj.isReadable(type, genericType, annotations, mediaType)) { LogMessages.LOGGER.debugf("MessageBodyReader: %s", reader.getClass().getName()); return (MessageBodyReader<T>) reader.obj; } } return null; }
protected <T> MessageBodyReader<T> resolveMessageBodyReader(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap<SortedKey<MessageBodyReader>> availableReaders) { List<SortedKey<MessageBodyReader>> readers = availableReaders.getPossible(mediaType, type); //logger.info("******** getMessageBodyReader *******"); for (SortedKey<MessageBodyReader> reader : readers) { //logger.info(" matching reader: " + reader.getClass().getName()); if (reader.obj.isReadable(type, genericType, annotations, mediaType)) { LogMessages.LOGGER.debugf("MessageBodyReader: %s", reader.getClass().getName()); return (MessageBodyReader<T>) reader.obj; } } return null; }
public Map<MessageBodyWriter<?>, Class<?>> getPossibleMessageBodyWritersMap(Class type, Type genericType, Annotation[] annotations, MediaType accept) { Map<MessageBodyWriter<?>, Class<?>> map = new HashMap<MessageBodyWriter<?>, Class<?>>(); List<SortedKey<MessageBodyWriter>> writers = getServerMessageBodyWriters().getPossible(accept, type); for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, accept)) { Class<?> mbwc = writer.obj.getClass(); if (!mbwc.isInterface() && mbwc.getSuperclass() != null && !mbwc.getSuperclass().equals(Object.class) && mbwc.isSynthetic()) { mbwc = mbwc.getSuperclass(); } Class writerType = Types.getTemplateParameterOfInterface(mbwc, MessageBodyWriter.class); if (writerType == null || !writerType.isAssignableFrom(type)) continue; map.put(writer.obj, writerType); } } return map; }
protected <T> MessageBodyWriter<T> resolveMessageBodyWriter(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap<SortedKey<MessageBodyWriter>> availableWriters) { List<SortedKey<MessageBodyWriter>> writers = availableWriters.getPossible(mediaType, type); /* logger.info("******* getMessageBodyWriter(" + type.getName() + ", " + mediaType.toString() + ")****"); for (SortedKey<MessageBodyWriter> writer : writers) { logger.info(" possible writer: " + writer.obj.getClass().getName()); } */ for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, mediaType)) { LogMessages.LOGGER.debugf("MessageBodyWriter: %s", writer.getClass().getName()); //logger.info(" picking: " + writer.obj.getClass().getName()); return (MessageBodyWriter<T>) writer.obj; } } return null; }
@Deprecated private <T> MessageBodyWriter<T> resolveMessageBodyWriter(Class<T> type, Type genericType, Annotation[] annotations, MediaType mediaType, MediaTypeMap<SortedKey<MessageBodyWriter>> availableWriters) { List<SortedKey<MessageBodyWriter>> writers = availableWriters.getPossible(mediaType, type); /* logger.info("******* getMessageBodyWriter(" + type.getName() + ", " + mediaType.toString() + ")****"); for (SortedKey<MessageBodyWriter> writer : writers) { logger.info(" possible writer: " + writer.obj.getClass().getName()); } */ for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, mediaType)) { LogMessages.LOGGER.debugf("MessageBodyWriter: %s", writer.getClass().getName()); //logger.info(" picking: " + writer.obj.getClass().getName()); return (MessageBodyWriter<T>) writer.obj; } } return null; }
public Map<MessageBodyWriter<?>, Class<?>> getPossibleMessageBodyWritersMap(Class type, Type genericType, Annotation[] annotations, MediaType accept) { Map<MessageBodyWriter<?>, Class<?>> map = new HashMap<MessageBodyWriter<?>, Class<?>>(); List<SortedKey<MessageBodyWriter>> writers = getServerMessageBodyWriters().getPossible(accept, type); for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, accept)) { Class<?> mbwc = writer.obj.getClass(); if (!mbwc.isInterface() && mbwc.getSuperclass() != null && !mbwc.getSuperclass().equals(Object.class) && mbwc.isSynthetic()) { mbwc = mbwc.getSuperclass(); } Class writerType = Types.getTemplateParameterOfInterface(mbwc, MessageBodyWriter.class); if (writerType == null || !writerType.isAssignableFrom(type)) continue; map.put(writer.obj, writerType); } } return map; }
/** * {@inheritDoc} */ @Override public void aroundWriteTo(WriterInterceptorContext context) throws IOException, WebApplicationException { LogMessages.LOGGER.debugf("Interceptor : %s, Method : aroundWriteTo", getClass().getName()); String function = uri.getQueryParameters().getFirst(callbackQueryParameter); if (enabled && function != null && !function.trim().isEmpty() && !jsonpCompatibleMediaTypes.getPossible(context.getMediaType()).isEmpty()){ OutputStreamWriter writer = new OutputStreamWriter(context.getOutputStream()); if (wrapInTryCatch) writer.write("try{"); writer.write(function + "("); writer.flush(); // Disable the close method before calling context.proceed() OutputStream old = context.getOutputStream(); DoNotCloseDelegateOutputStream wrappedOutputStream = new DoNotCloseDelegateOutputStream(old); context.setOutputStream(wrappedOutputStream); try { context.proceed(); wrappedOutputStream.flush(); writer.write(")"); if (wrapInTryCatch) writer.write("}catch(e){}"); writer.flush(); } finally { context.setOutputStream(old); } } else { context.proceed(); } }
public MediaType getConcreteMediaTypeFromMessageBodyWriters(Class type, Type genericType, Annotation[] annotations, MediaType mediaType) { List<SortedKey<MessageBodyWriter>> writers = getServerMessageBodyWriters().getPossible(mediaType, type); for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, mediaType)) { MessageBodyWriter mbw = writer.obj; Class writerType = Types.getTemplateParameterOfInterface(mbw.getClass(), MessageBodyWriter.class); if (writerType == null || writerType.equals(Object.class) || !writerType.isAssignableFrom(type)) continue; Produces produces = mbw.getClass().getAnnotation(Produces.class); if (produces == null) continue; for (String produce : produces.value()) { MediaType mt = MediaType.valueOf(produce); if (mt.isWildcardType() || mt.isWildcardSubtype()) continue; return mt; } } } return null; }
public MediaType getConcreteMediaTypeFromMessageBodyWriters(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) { List<SortedKey<MessageBodyWriter>> writers = getServerMessageBodyWriters().getPossible(mediaType, type); for (SortedKey<MessageBodyWriter> writer : writers) { if (writer.obj.isWriteable(type, genericType, annotations, mediaType)) { MessageBodyWriter mbw = writer.obj; Class writerType = Types.getTemplateParameterOfInterface(mbw.getClass(), MessageBodyWriter.class); if (writerType == null || writerType.equals(Object.class) || !writerType.isAssignableFrom(type)) continue; Produces produces = mbw.getClass().getAnnotation(Produces.class); if (produces == null) continue; for (String produce : produces.value()) { MediaType mt = MediaType.valueOf(produce); if (mt.isWildcardType() || mt.isWildcardSubtype()) continue; return mt; } } } return null; }