package org.cagrid.cds.soapclient;
import org.apache.cxf.Bus;
import org.apache.cxf.bus.spring.SpringBusFactory;
import org.apache.cxf.configuration.Configurer;
import org.apache.cxf.configuration.security.KeyManagersType;
import org.apache.cxf.configuration.security.KeyStoreType;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.cagrid.core.common.security.SSLConfigurer;
import org.cagrid.delegatedcredential.wsrf.service.DelegatedCredentialService;
import org.cagrid.delegatedcredential.wsrf.stubs.DelegatedCredentialPortType;
import javax.net.ssl.KeyManager;
import java.io.IOException;
import java.security.GeneralSecurityException;
public class DCSSoapClientFactory {
public static DelegatedCredentialPortType createSoapClient(
String url) {
SpringBusFactory bf = new SpringBusFactory();
Bus bus = bf.createBus();
JaxWsProxyFactoryBean cf = new JaxWsProxyFactoryBean();
cf.setAddress(url);
cf.setServiceClass(DelegatedCredentialService.class);
cf.setBus(bus);
DelegatedCredentialPortType cdsPort = cf.create(DelegatedCredentialPortType.class);
return cdsPort;
}
public static DelegatedCredentialPortType createSoapClient(
String url, KeyStoreType truststore, KeyManagersType keyManager)
throws GeneralSecurityException, IOException {
SpringBusFactory bf = new SpringBusFactory();
Bus bus = bf.createBus();
Configurer baseConf = bus.getExtension(Configurer.class);
SSLConfigurer sslConf = new SSLConfigurer(baseConf);
sslConf.setTruststore(truststore);
sslConf.setKeystore(keyManager);
bus.setExtension(sslConf, Configurer.class);
JaxWsProxyFactoryBean cf = new JaxWsProxyFactoryBean();
cf.setAddress(url);
cf.setServiceClass(DelegatedCredentialService.class);
cf.setBus(bus);
DelegatedCredentialPortType cdsPort = cf.create(DelegatedCredentialPortType.class);
return cdsPort;
}
public static DelegatedCredentialPortType createSoapClient(
String url, KeyStoreType truststore, KeyManager keyManager)
throws GeneralSecurityException, IOException {
SpringBusFactory bf = new SpringBusFactory();
Bus bus = bf.createBus();
Configurer baseConf = bus.getExtension(Configurer.class);
SSLConfigurer sslConf = new SSLConfigurer(baseConf);
sslConf.setTruststore(truststore);
sslConf.setKm(new KeyManager[]{keyManager});
bus.setExtension(sslConf, Configurer.class);
JaxWsProxyFactoryBean cf = new JaxWsProxyFactoryBean();
cf.setAddress(url);
cf.setServiceClass(DelegatedCredentialService.class);
cf.setBus(bus);
DelegatedCredentialPortType cdsPort = cf.create(DelegatedCredentialPortType.class);
return cdsPort;
}
}