use of org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder in project camel by apache.
the class CxfEndpoint method setupHandlers.
protected void setupHandlers(ClientFactoryBean factoryBean, Client client) throws Exception {
if (factoryBean instanceof JaxWsClientFactoryBean && handlers != null) {
AnnotationHandlerChainBuilder builder = new AnnotationHandlerChainBuilder();
Method m = factoryBean.getClass().getMethod("getServiceFactory");
JaxWsServiceFactoryBean sf = (JaxWsServiceFactoryBean) m.invoke(factoryBean);
@SuppressWarnings("rawtypes") List<Handler> chain = new ArrayList<Handler>(handlers);
chain.addAll(builder.buildHandlerChainFromClass(sf.getServiceClass(), sf.getEndpointInfo().getName(), sf.getServiceQName(), factoryBean.getBindingId()));
if (!chain.isEmpty()) {
ResourceManager resourceManager = getBus().getExtension(ResourceManager.class);
List<ResourceResolver> resolvers = resourceManager.getResourceResolvers();
resourceManager = new DefaultResourceManager(resolvers);
resourceManager.addResourceResolver(new WebServiceContextResourceResolver());
ResourceInjector injector = new ResourceInjector(resourceManager);
for (Handler<?> h : chain) {
if (Proxy.isProxyClass(h.getClass()) && getServiceClass() != null) {
injector.inject(h, getServiceClass());
injector.construct(h, getServiceClass());
} else {
injector.inject(h);
injector.construct(h);
}
}
}
((JaxWsEndpointImpl) client.getEndpoint()).getJaxwsBinding().setHandlerChain(chain);
}
}
use of org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder in project cxf by apache.
the class JaxWsServerFactoryBean method buildHandlerChain.
/**
* Obtain handler chain from annotations.
* @param server
*/
private void buildHandlerChain(Server server) {
AnnotationHandlerChainBuilder builder = new AnnotationHandlerChainBuilder();
@SuppressWarnings("rawtypes") List<Handler> chain = new ArrayList<>(handlers);
chain.addAll(builder.buildHandlerChainFromClass(getServiceBeanClass(), server.getEndpoint().getEndpointInfo().getName(), server.getEndpoint().getService().getName(), this.getBindingId()));
for (Handler<?> h : chain) {
injectResources(h);
}
((JaxWsEndpointImpl) server.getEndpoint()).getJaxwsBinding().setHandlerChain(chain);
}
use of org.apache.cxf.jaxws.handler.AnnotationHandlerChainBuilder in project cxf by apache.
the class JaxWsProxyFactoryBean method buildHandlerChain.
private void buildHandlerChain(JaxWsClientProxy cp) {
AnnotationHandlerChainBuilder builder = new AnnotationHandlerChainBuilder();
JaxWsServiceFactoryBean sf = (JaxWsServiceFactoryBean) getServiceFactory();
@SuppressWarnings("rawtypes") List<Handler> chain = new ArrayList<>(handlers);
if (loadHandlers) {
chain.addAll(builder.buildHandlerChainFromClass(sf.getServiceClass(), sf.getEndpointInfo().getName(), sf.getServiceQName(), this.getBindingId()));
}
if (!chain.isEmpty()) {
ResourceManager resourceManager = getBus().getExtension(ResourceManager.class);
List<ResourceResolver> resolvers = resourceManager.getResourceResolvers();
resourceManager = new DefaultResourceManager(resolvers);
resourceManager.addResourceResolver(new WebServiceContextResourceResolver());
ResourceInjector injector = new ResourceInjector(resourceManager);
for (Handler<?> h : chain) {
if (Proxy.isProxyClass(h.getClass()) && getServiceClass() != null) {
injector.inject(h, getServiceClass());
injector.construct(h, getServiceClass());
} else {
injector.inject(h);
injector.construct(h);
}
}
}
cp.getBinding().setHandlerChain(chain);
}
Aggregations