类javax.ws.rs.ext.ContextResolver源码实例Demo

下面列出了怎么用javax.ws.rs.ext.ContextResolver的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: cxf   文件: ProviderFactory.java
public <T> ContextResolver<T> createContextResolver(Type contextType,
                                                    Message m) {
    boolean isRequestor = MessageUtils.isRequestor(m);
    Message requestMessage = isRequestor ? m.getExchange().getOutMessage()
                                         : m.getExchange().getInMessage();

    Message responseMessage = isRequestor ? m.getExchange().getInMessage()
                                          : m.getExchange().getOutMessage();
    Object ctProperty = null;
    if (responseMessage != null) {
        ctProperty = responseMessage.get(Message.CONTENT_TYPE);
    } else {
        ctProperty = requestMessage.get(Message.CONTENT_TYPE);
    }
    MediaType mt = ctProperty != null ? JAXRSUtils.toMediaType(ctProperty.toString())
        : MediaType.WILDCARD_TYPE;
    return createContextResolver(contextType, m, mt);

}
 
源代码2 项目: cxf   文件: AbstractJAXBProvider.java
@SuppressWarnings("unchecked")
public JAXBContext getJAXBContext(Class<?> type, Type genericType) throws JAXBException {
    if (mc != null) {
        ContextResolver<JAXBContext> resolver =
            mc.getResolver(ContextResolver.class, JAXBContext.class);
        if (resolver != null) {
            JAXBContext customContext = resolver.getContext(type);
            if (customContext != null) {
                return customContext;
            }
        }
    }

    JAXBContext context = classContexts.get(type);
    if (context != null) {
        return context;
    }

    context = getPackageContext(type, genericType);

    return context != null ? context : getClassContext(type, genericType);
}
 
源代码3 项目: cxf   文件: JAXRSUtilsTest.java
@Test
public void testContextResolverParam() throws Exception {

    ClassResourceInfo cri = new ClassResourceInfo(Customer.class, true);
    OperationResourceInfo ori =
        new OperationResourceInfo(
            Customer.class.getMethod("testContextResolvers",
                                     new Class[]{ContextResolver.class}),
                                     cri);
    ori.setHttpMethod("GET");

    Message m = createMessage();
    ContextResolver<JAXBContext> cr = new JAXBContextProvider();
    ProviderFactory.getInstance(m).registerUserProvider(cr);

    m.put(Message.BASE_PATH, "/");
    List<Object> params =
        JAXRSUtils.processParameters(ori, new MetadataMap<String, String>(), m);
    assertEquals("1 parameters expected", 1, params.size());
    assertSame(cr.getClass(), params.get(0).getClass());
}
 
源代码4 项目: cxf   文件: JAXRSUtilsTest.java
@Test
public void testContextResolverFields() throws Exception {

    ClassResourceInfo cri = new ClassResourceInfo(Customer.class, true);
    cri.setResourceProvider(new PerRequestResourceProvider(Customer.class));
    OperationResourceInfo ori = new OperationResourceInfo(Customer.class.getMethod("postConstruct",
                                                                                   new Class[]{}), cri);

    Message m = createMessage();
    HttpServletResponse response = EasyMock.createMock(HttpServletResponse.class);
    m.put(AbstractHTTPDestination.HTTP_RESPONSE, response);
    Customer c = new Customer();
    ContextResolver<JAXBContext> cr = new JAXBContextProvider();
    ProviderFactory.getInstance(m).registerUserProvider(cr);

    m.put(Message.BASE_PATH, "/");
    InjectionUtils.injectContextFields(c, ori.getClassResourceInfo(), m);
    assertSame(cr.getClass(), c.getContextResolver().getClass());
}
 
源代码5 项目: cxf   文件: MessageContextImplTest.java
@SuppressWarnings("unchecked")
@Test
public void testContextResolver() {
    ContextResolver<JAXBContext> resolver = new CustomContextResolver();
    ProviderFactory factory = ServerProviderFactory.getInstance();
    factory.registerUserProvider(resolver);

    Message m = new MessageImpl();
    Exchange ex = new ExchangeImpl();
    m.setExchange(ex);
    ex.setInMessage(m);
    Endpoint e = EasyMock.createMock(Endpoint.class);
    EasyMock.expect(e.get(ServerProviderFactory.class.getName())).andReturn(factory);
    EasyMock.replay(e);
    ex.put(Endpoint.class, e);
    MessageContext mc = new MessageContextImpl(m);
    ContextResolver<JAXBContext> resolver2 =
        mc.getResolver(ContextResolver.class, JAXBContext.class);
    assertNotNull(resolver2);
    assertSame(resolver2, resolver);
}
 
源代码6 项目: everrest   文件: ProviderBinderTest.java
@Test
@UseDataProvider("contextResolverByClassAndMediaTypeData")
public void retrievesContextResolverByClassAndMediaType(boolean singletonOrPerRequest,
                                                        Class<?> aClass,
                                                        MediaType mediaType,
                                                        Object expectedContextResolverClassOrInstance) throws Exception {
    if (singletonOrPerRequest == SINGLETON) {
        registerSingletonContextResolvers();
    } else {
        registerPerRequestContextResolvers();
    }

    ContextResolver<?> contextResolver = providers.getContextResolver(aClass, mediaType);
    if (singletonOrPerRequest == SINGLETON) {
        assertSame(expectedContextResolverClassOrInstance, contextResolver);
    } else {
        if (expectedContextResolverClassOrInstance == null) {
            assertNull(contextResolver);
        } else {
            assertNotNull(contextResolver);
            assertEquals(expectedContextResolverClassOrInstance, contextResolver.getClass());
        }
    }
}
 
源代码7 项目: tomee   文件: Contexts.java
private static Set<Class<?>> contextClasses() {
    final Set<Class<?>> classes = new HashSet<>(); classes.add(UriInfo.class);
    classes.add(SecurityContext.class);
    classes.add(HttpHeaders.class);
    classes.add(ContextResolver.class);
    classes.add(Providers.class);
    classes.add(Request.class);
    /* TODO: when we have jaxrs 2
    classes.add(ResourceInfo.class);
    classes.add(ResourceContext.class);
    */
    classes.add(Application.class);
    classes.add(HttpServletRequest.class);
    classes.add(HttpServletResponse.class);
    classes.add(ServletConfig.class);
    classes.add(ServletContext.class);
    classes.add(MessageContext.class);
    return classes;
}
 
private JacksonSerializationProvider getJacksonSerializationProvider(final MediaType mediaType) {
    final ContextResolver<JacksonSerializationProvider> contextResolver =
            providers.getContextResolver(JacksonSerializationProvider.class, mediaType);

    return contextResolver != null ? contextResolver.getContext(JacksonSerializationProvider.class) :
            DEFAULT_JACKSON_SERIALIZATION_PROVIDER;
}
 
/**
 * Handle an invalid property. Can be:
 * <p>
 * 1. Invalid request parameter (annotated bean param field or annotated resource class field)
 * 2. Invalid request entity property (annotated bean param field)
 *
 * @param constraintViolation
 */
private ValidationError handleInvalidProperty(ConstraintViolation constraintViolation) {

    Path.Node leafNode = getLeafNode(constraintViolation.getPropertyPath()).get();
    Class<?> beanClass = constraintViolation.getLeafBean().getClass();

    // Can be an invalid request parameter (annotated bean param field or annotated resource class field)
    Optional<Field> optionalField = getField(leafNode.getName(), beanClass);
    if (optionalField.isPresent()) {
        Optional<ParameterDetails> optionalParameterDetails = getParameterDetails(optionalField.get().getAnnotations());
        if (optionalParameterDetails.isPresent()) {
            return createErrorForParameter(optionalParameterDetails.get(), constraintViolation);
        }
    }

    // Get Jackson ObjectMapper
    ContextResolver<ObjectMapper> resolver = providers.getContextResolver(ObjectMapper.class, MediaType.WILDCARD_TYPE);
    ObjectMapper mapper = resolver.getContext(ObjectMapper.class);

    // Can be an invalid request entity property (annotated bean param field)
    Optional<String> optionalJsonProperty = getJsonPropertyName(mapper, beanClass, leafNode.getName());
    if (optionalJsonProperty.isPresent()) {
        ValidationError error = new ValidationError();
        error.setType(REQUEST_ENTITY_PROPERTY);
        error.setName(optionalJsonProperty.get());
        error.setMessage(constraintViolation.getMessage());
        return error;
    }

    return handleUnknownSource(constraintViolation);
}
 
@Test
public void ignoreUnknownPropertyCorrectly()
    throws JsonParseException, JsonMappingException, IOException {
  ContextResolver<ObjectMapper> provider = new MattermostModelMapperProvider(true);
  ObjectMapper objectMapper = provider.getContext(ObjectMapper.class);

  User user = objectMapper.readValue(JSON_INCLUDE_UNKNOWN_PROPERTY, User.class);
  assertNotNull(user);
}
 
@Test
public void throwExceptionStrict() {
  ContextResolver<ObjectMapper> provider = new MattermostModelMapperProvider(false);
  ObjectMapper objectMapper = provider.getContext(ObjectMapper.class);

  assertThrows(JsonMappingException.class,
      () -> objectMapper.readValue(JSON_INCLUDE_UNKNOWN_PROPERTY, User.class));
}
 
源代码12 项目: JaxRSProviders   文件: JaxRSClientContainer.java
protected Client createJaxRSClient(Configuration configuration, ClassLoader cl) throws ECFException {
	ClientBuilder cb = ClientBuilder.newBuilder();
	if (configuration != null)
		cb.withConfig(configuration);
	cb.register(new ObjectMapperContextResolver(), ContextResolver.class);
	cb.register(new JaxRSClientJacksonFeature(getRegistration(), cl), jacksonPriority);
	return cb.build();
}
 
源代码13 项目: JaxRSProviders   文件: CXFJaxRSServerContainer.java
@Override
protected void registerExtensions(Configurable<?> configurable, RSARemoteServiceRegistration registration) {
	// This overrides/replaces superclass implementation to setup
	// ObjectMapperContextResolver, and Jackson Jaxb Json parsing/writing
	configurable.register(new ObjectMapperContextResolver(), ContextResolver.class);
	configurable.register(JsonParseExceptionMapper.class);
	configurable.register(JsonMappingExceptionMapper.class);
	configurable.register(new JacksonJaxbJsonProvider(), jacksonPriority);
}
 
源代码14 项目: tomee   文件: ThreadLocalContextManager.java
public static Object findThreadLocal(final Class<?> type) {
    if (Request.class.equals(type)) {
        return REQUEST;
    } else if (UriInfo.class.equals(type)) {
        return URI_INFO;
    } else if (HttpHeaders.class.equals(type)) {
        return HTTP_HEADERS;
    } else if (SecurityContext.class.equals(type)) {
        return SECURITY_CONTEXT;
    } else if (ContextResolver.class.equals(type)) {
        return CONTEXT_RESOLVER;
    } else if (Providers.class.equals(type)) {
        return PROVIDERS;
    } else if (ServletRequest.class.equals(type)) {
        return SERVLET_REQUEST;
    } else if (HttpServletRequest.class.equals(type)) {
        return HTTP_SERVLET_REQUEST;
    } else if (HttpServletResponse.class.equals(type)) {
        return HTTP_SERVLET_RESPONSE;
    } else if (ServletConfig.class.equals(type)) {
        return SERVLET_CONFIG;
    } else if (ServletContext.class.equals(type)) {
        return SERVLET_CONTEXT;
    } else if (ResourceInfo.class.equals(type)) {
        return RESOURCE_INFO;
    } else if (ResourceContext.class.equals(type)) {
        return RESOURCE_CONTEXT;
    } else if (Application.class.equals(type)) {
        return APPLICATION;
    } else if (Configuration.class.equals(type)) {
        return CONFIGURATION;
    }
    return null;
}
 
源代码15 项目: cxf   文件: JAXRSUtils.java
public static ContextResolver<?> createContextResolver(Type genericType, Message m) {
    if (genericType instanceof ParameterizedType) {
        return ProviderFactory.getInstance(m).createContextResolver(
                  ((ParameterizedType)genericType).getActualTypeArguments()[0], m);
    } else if (m != null) {
        return ProviderFactory.getInstance(m).createContextResolver(genericType, m);
    } else {
        return null;
    }
}
 
源代码16 项目: cxf   文件: ProviderFactory.java
@SuppressWarnings("unchecked")
public <T> ContextResolver<T> createContextResolver(Type contextType,
                                                    Message m,
                                                    MediaType type) {
    Class<?> contextCls = InjectionUtils.getActualType(contextType);
    if (contextCls == null) {
        return null;
    }
    List<ContextResolver<T>> candidates = new LinkedList<>();
    for (ProviderInfo<ContextResolver<?>> cr : contextResolvers) {
        Type[] types = cr.getProvider().getClass().getGenericInterfaces();
        for (Type t : types) {
            if (t instanceof ParameterizedType) {
                ParameterizedType pt = (ParameterizedType)t;
                Type[] args = pt.getActualTypeArguments();
                if (args.length > 0) {
                    Class<?> argCls = InjectionUtils.getActualType(args[0]);

                    if (argCls != null && argCls.isAssignableFrom(contextCls)) {
                        List<MediaType> mTypes = JAXRSUtils.getProduceTypes(
                             cr.getProvider().getClass().getAnnotation(Produces.class));
                        if (JAXRSUtils.doMimeTypesIntersect(mTypes, type)) {
                            injectContextValues(cr, m);
                            candidates.add((ContextResolver<T>)cr.getProvider());
                        }
                    }
                }
            }
        }
    }
    if (candidates.isEmpty()) {
        return null;
    } else if (candidates.size() == 1) {
        return candidates.get(0);
    } else {
        Collections.sort(candidates, new PriorityBasedClassComparator());
        return new ContextResolverProxy<T>(candidates);
    }

}
 
源代码17 项目: cxf   文件: ProviderFactory.java
public int compare(ProviderInfo<ContextResolver<?>> p1,
                   ProviderInfo<ContextResolver<?>> p2) {
    ContextResolver<?> e1 = p1.getProvider();
    ContextResolver<?> e2 = p2.getProvider();

    List<MediaType> types1 =
        JAXRSUtils.sortMediaTypes(JAXRSUtils.getProduceTypes(
             e1.getClass().getAnnotation(Produces.class)), JAXRSUtils.MEDIA_TYPE_QS_PARAM);
    List<MediaType> types2 =
        JAXRSUtils.sortMediaTypes(JAXRSUtils.getProduceTypes(
             e2.getClass().getAnnotation(Produces.class)), JAXRSUtils.MEDIA_TYPE_QS_PARAM);

    return JAXRSUtils.compareSortedMediaTypes(types1, types2, JAXRSUtils.MEDIA_TYPE_QS_PARAM);
}
 
源代码18 项目: cxf   文件: ProviderFactory.java
public T getContext(Class<?> cls) {
    for (ContextResolver<T> resolver : candidates) {
        T context = resolver.getContext(cls);
        if (context != null) {
            return context;
        }
    }
    return null;
}
 
源代码19 项目: cxf   文件: ProviderFactoryTest.java
@Test
public void testRegisterCustomResolver() throws Exception {
    ProviderFactory pf = ServerProviderFactory.getInstance();
    pf.registerUserProvider(new JAXBContextProvider());
    Message message = prepareMessage("*/*", null);
    ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, message);
    assertFalse(cr instanceof ProviderFactory.ContextResolverProxy);
    assertTrue("JAXBContext ContextProvider can not be found",
               cr instanceof JAXBContextProvider);

}
 
源代码20 项目: cxf   文件: ProviderFactoryTest.java
@Test
public void testRegisterCustomResolver2() throws Exception {
    ProviderFactory pf = ServerProviderFactory.getInstance();
    pf.registerUserProvider(new JAXBContextProvider());
    pf.registerUserProvider(new JAXBContextProvider2());
    Message message = prepareMessage("text/xml+b", null);
    ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, message);
    assertFalse(cr instanceof ProviderFactory.ContextResolverProxy);
    assertTrue("JAXBContext ContextProvider can not be found",
               cr instanceof JAXBContextProvider2);

}
 
源代码21 项目: cxf   文件: ProviderFactoryTest.java
@Test
public void testNoCustomResolver() throws Exception {
    ProviderFactory pf = ServerProviderFactory.getInstance();
    pf.registerUserProvider(new JAXBContextProvider());
    pf.registerUserProvider(new JAXBContextProvider2());
    Message message = prepareMessage("text/xml+c", null);
    ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, message);
    assertNull(cr);
}
 
源代码22 项目: cxf   文件: ProviderFactoryTest.java
@Test
public void testCustomResolverProxy() throws Exception {
    ProviderFactory pf = ServerProviderFactory.getInstance();
    pf.registerUserProvider(new JAXBContextProvider());
    pf.registerUserProvider(new JAXBContextProvider2());
    Message message = prepareMessage("text/xml+*", null);
    ContextResolver<JAXBContext> cr = pf.createContextResolver(JAXBContext.class, message);
    assertTrue(cr instanceof ProviderFactory.ContextResolverProxy);
    assertTrue(((ProviderFactory.ContextResolverProxy<?>)cr).getResolvers().get(0)
               instanceof JAXBContextProvider);
    assertTrue(((ProviderFactory.ContextResolverProxy<?>)cr).getResolvers().get(1)
               instanceof JAXBContextProvider2);
}
 
源代码23 项目: mrgeo   文件: VersionResource.java
private void getService()
{
  if (service == null)
  {
    ContextResolver<VersionService> resolver =
        providers.getContextResolver(VersionService.class, MediaType.WILDCARD_TYPE);
    service = resolver.getContext(VersionService.class);
  }
}
 
源代码24 项目: mrgeo   文件: RasterResource.java
private void getService()
{
  if (service == null)
  {
    ContextResolver<MrsPyramidService> resolver =
        providers.getContextResolver(MrsPyramidService.class, MediaType.WILDCARD_TYPE);
    if (resolver != null)
    {
      service = resolver.getContext(MrsPyramidService.class);
    }
  }
}
 
源代码25 项目: mrgeo   文件: MetadataResource.java
private void getService()
{
  if (service == null)
  {
    ContextResolver<MrsPyramidService> resolver =
        providers.getContextResolver(MrsPyramidService.class, MediaType.WILDCARD_TYPE);
    if (resolver != null)
    {
      service = resolver.getContext(MrsPyramidService.class);
    }
  }
}
 
源代码26 项目: mrgeo   文件: ColorScaleResource.java
private void getService()
{
  if (service == null)
  {
    ContextResolver<MrsPyramidService> resolver =
        providers.getContextResolver(MrsPyramidService.class, MediaType.WILDCARD_TYPE);
    if (resolver != null)
    {
      service = resolver.getContext(MrsPyramidService.class);
    }
  }
}
 
源代码27 项目: mrgeo   文件: TileMapServiceResource.java
private void getService()
{
  if (service == null)
  {
    ContextResolver<TmsService> resolver =
        providers.getContextResolver(TmsService.class, MediaType.WILDCARD_TYPE);
    if (resolver != null)
    {
      service = resolver.getContext(TmsService.class);
    }
  }
}
 
源代码28 项目: everrest   文件: ApplicationContext.java
/**
 * @param methodDescriptor
 *         method descriptor
 * @return invoker that must be used for processing methods
 */
public MethodInvoker getMethodInvoker(GenericResourceMethod methodDescriptor) {
    String method = request.getMethod();
    if ("OPTIONS".equals(method) && methodDescriptor.getMethod() == null) {
        // GenericMethodResource.getMethod() always return null if method for
        // "OPTIONS" request was not described in source code of service. In
        // this case we provide mechanism for "fake" method invoking.
        return new OptionsRequestMethodInvoker(new WadlProcessor());
    }
    MethodInvoker invoker = null;
    // Never use AsynchronousMethodInvoker for process SubResourceLocatorDescriptor.
    // Locators can't be processed in asynchronous mode since it is not end point of request.
    if (isAsynchronous() && methodDescriptor instanceof ResourceMethodDescriptor) {
        ContextResolver<AsynchronousJobPool> asyncJobsResolver = getProviders().getContextResolver(AsynchronousJobPool.class, null);
        if (asyncJobsResolver == null) {
            throw new IllegalStateException("Asynchronous jobs feature is not configured properly. ");
        }
        invoker = new AsynchronousMethodInvoker(asyncJobsResolver.getContext(null), new ParameterResolverFactory());
    }
    if (invoker == null) {
        invoker = new DefaultMethodInvoker(new ParameterResolverFactory());
    }
    if (methodInvokerDecoratorFactory != null) {
        return methodInvokerDecoratorFactory.makeDecorator(invoker);
    }
    return invoker;
}
 
源代码29 项目: everrest   文件: ProviderBinder.java
/**
 * Add per-request ContextResolver.
 *
 * @param contextResolverClass
 *         class of implementation ContextResolver
 */
public void addContextResolver(Class<? extends ContextResolver> contextResolverClass) {
    try {
        ProviderDescriptor descriptor = new ProviderDescriptorImpl(contextResolverClass);
        addContextResolver(new PerRequestObjectFactory<>(descriptor));
    } catch (Exception e) {
        LOG.error(String.format("Failed add ContextResolver %s. %s", contextResolverClass.getName(), e.getMessage()), e);
    }
}
 
源代码30 项目: everrest   文件: ProviderBinder.java
/**
 * Add singleton ContextResolver.
 *
 * @param contextResolver
 *         ContextResolver instance
 */
public void addContextResolver(ContextResolver contextResolver) {
    try {
        ProviderDescriptor descriptor = new ProviderDescriptorImpl(contextResolver);
        addContextResolver(new SingletonObjectFactory<>(descriptor, contextResolver));
    } catch (Exception e) {
        LOG.error(String.format("Failed add ContextResolver %s. %s", contextResolver.getClass().getName(), e.getMessage()), e);
    }
}
 
 类所在包
 类方法
 同包方法