@Override protected void setProviders(Object... providers) { List<ProviderInfo<? extends Object>> theProviders = prepareProviders((Object[]) providers, null); super.setCommonProviders(theProviders); for (ProviderInfo<? extends Object> provider : theProviders) { Class<?> providerCls = ClassHelper.getRealClass(provider.getProvider()); if (filterContractSupported(provider, providerCls, ClientRequestFilter.class)) { addProviderToList(clientRequestFilters, provider); } if (filterContractSupported(provider, providerCls, ClientResponseFilter.class)) { addProviderToList(clientResponseFilters, provider); } if (ResponseExceptionMapper.class.isAssignableFrom(providerCls)) { addProviderToList(responseExceptionMappers, provider); } } Collections.sort( clientRequestFilters, new BindingPriorityComparator(ClientRequestFilter.class, true)); Collections.sort( clientResponseFilters, new BindingPriorityComparator(ClientResponseFilter.class, false)); injectContextProxies(responseExceptionMappers, clientRequestFilters, clientResponseFilters); }
@Override public void clearProviders() { super.clearProviders(); responseExceptionMappers.clear(); clientRequestFilters.clear(); clientResponseFilters.clear(); }
/* (non-Javadoc) * @see org.apache.cxf.interceptor.Interceptor#handleMessage(org.apache.cxf.message.Message) */ public void handleMessage(Message message) { try { if (message != null) { List<Object> params = message.getContent(List.class); // parameter instances if (params.get(0) instanceof HasXsl) { OperationResourceInfo ori = message.getExchange().get(OperationResourceInfo.class); JAXBElementProvider provider = (JAXBElementProvider) ProviderFactory.getInstance(message) .createMessageBodyWriter( ori.getMethodToInvoke().getReturnType(), ori.getMethodToInvoke().getGenericReturnType(), ori.getMethodToInvoke().getAnnotations(), MediaType.APPLICATION_XML_TYPE, message); Map<String, Object> properties = new HashMap<String, Object>(); HasXsl hasXsl = (HasXsl) params.get(0); // System.out.println("Stylesheet params " + hasXsl.getClass() + " " + hasXsl.getXsl()); if (hasXsl == null || hasXsl.getXsl().equalsIgnoreCase(Constants.NO_XSL)) { properties.put(XML_HEADERS, "<!-- no stylesheet -->"); } else { properties.put( XML_HEADERS, "<?xml-stylesheet type='application/xml' href='" + hasXsl.getXsl() + "'?>"); } provider.setMarshallerProperties(properties); } } } catch (Throwable x) { throw new WebApplicationException(Response.status(Status.BAD_REQUEST).build()); } }
protected String convertParamValue(Object pValue, Annotation[] anns) { if (pValue == null) { return null; } ProviderFactory pf = ClientProviderFactory.getInstance(cfg.getBus()); if (pf != null) { Class<?> pClass = pValue.getClass(); @SuppressWarnings("unchecked") ParamConverter<Object> prov = (ParamConverter<Object>) pf.createParameterHandler(pClass, anns); if (prov != null) { return prov.toString(pValue); } } return pValue.toString(); }
private static synchronized ClientProviderFactory initBaseFactory(Bus bus) { ClientProviderFactory factory = (ClientProviderFactory) bus.getProperty(SHARED_CLIENT_FACTORY); if (factory != null) { return factory; } factory = new ClientProviderFactory(null, bus); ProviderFactory.initBaseFactory(factory); bus.setProperty(SHARED_CLIENT_FACTORY, factory); return factory; }
@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); e.get(ServerProviderFactory.class.getName()); EasyMock.expectLastCall().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); }
private void registerJsonProvider() { JSONProvider jsonProvider = new JSONProvider(); jsonProvider.setSupportUnwrapped(false); jsonProvider.setSerializeAsArray(true); ProviderFactory.getSharedInstance().registerUserProvider(jsonProvider); }