* Create a client factory bean object. Notice that the serviceClass <b>must</b> be
* an interface.
*/
protected ClientProxyFactoryBean createClientFactoryBean(Class<?> cls) throws CamelException {
if (cls == null && !getDataFormat().equals(DataFormat.POJO)) {
return new ClientProxyFactoryBean(new ClientFactoryBean(new WSDLServiceFactoryBean()) {
@Override
protected void createClient(Endpoint ep) {
setClient(new CamelCxfClientImpl(getBus(), ep));
}
protected void initializeAnnotationInterceptors(Endpoint ep, Class<?> cls) {
// Do nothing here
}
})
{ // Override the ClientProxyFactoryBean's create method
// Don't create the proxy object
public Object create() {
if (getProperties() == null) {
setProperties(new HashMap<String, Object>());
}
if (getUsername() != null) {
AuthorizationPolicy authPolicy = new AuthorizationPolicy();
authPolicy.setUserName(getUsername());
authPolicy.setPassword(getPassword());
getProperties().put(AuthorizationPolicy.class.getName(), authPolicy);
}
initFeatures();
getClientFactoryBean().setProperties(getProperties());
if (bus != null) {
getClientFactoryBean().setBus(bus);
}
if (getDataBinding() != null) {
getClientFactoryBean().setDataBinding(getDataBinding());
}
Client c = getClientFactoryBean().create();
if (getInInterceptors() != null) {
c.getInInterceptors().addAll(getInInterceptors());
}
if (getOutInterceptors() != null) {
c.getOutInterceptors().addAll(getOutInterceptors());
}
if (getInFaultInterceptors() != null) {
c.getInFaultInterceptors().addAll(getInFaultInterceptors());
}
if (getOutFaultInterceptors() != null) {
c.getOutFaultInterceptors().addAll(getOutFaultInterceptors());
}
return c;
}
};
}
// quick null point check for serviceClass
//ObjectHelper.notNull(cls, "Please provide endpoint service interface class");
if (CxfEndpointUtils.hasWebServiceAnnotation(cls)) {
return new JaxWsProxyFactoryBean(new JaxWsClientFactoryBean() {
@Override
protected void createClient(Endpoint ep) {
setClient(new CamelCxfClientImpl(getBus(), ep));
}
});
} else {
return new ClientProxyFactoryBean(new ClientFactoryBean() {
@Override
protected void createClient(Endpoint ep) {
setClient(new CamelCxfClientImpl(getBus(), ep));
}
});