package org.cagrid.mms.soapclient;
import javax.xml.ws.BindingProvider;
import org.cagrid.mms.wsrf.service.MetadataModelService;
import org.cagrid.mms.wsrf.stubs.MetadataModelServicePortType;
public class MMSSoapClientFactory {
public static MetadataModelServicePortType createSoapClient(String url) {
MetadataModelService mms = new MetadataModelService();
MetadataModelServicePortType mmsPort = mms.getMetadataModelServicePortTypePort();
BindingProvider bp = (BindingProvider) mmsPort;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, url);
return mmsPort;
}
//
// public static MetadataModelServicePortType createSoapClient(String url, KeyStoreType truststore, KeyManagersType keyManager) throws GeneralSecurityException, IOException {
// MetadataModelServicePortType mmsPort = createSoapClient(url);
//
// Client dorianClient = ClientProxy.getClient(mmsPort);
// Bus bus = dorianClient.getBus();
// Configurer baseConf = bus.getExtension(Configurer.class);
//
// TrustManager[] trustManagers = SSLConfigurer.createTrustManagers(truststore);
// KeyManager[] keyManagers = SSLConfigurer.createKeyManagers(keyManager);
// SSLConfigurer sslConf = new SSLConfigurer(baseConf, trustManagers, keyManagers);
// bus.setExtension(sslConf, Configurer.class);
//
// return mmsPort;
// }
//
// public static MetadataModelServicePortType createSoapClient(String url, KeyStoreType truststore, KeyManager keyManager) throws GeneralSecurityException, IOException {
// MetadataModelServicePortType mmsPort = createSoapClient(url);
//
// Client dorianClient = ClientProxy.getClient(mmsPort);
// Bus bus = dorianClient.getBus();
// Configurer baseConf = bus.getExtension(Configurer.class);
//
// TrustManager[] trustManagers = SSLConfigurer.createTrustManagers(truststore);
// SSLConfigurer sslConf = new SSLConfigurer(baseConf, trustManagers, new KeyManager[] { keyManager });
// bus.setExtension(sslConf, Configurer.class);
//
// return mmsPort;
// }
//
// static class SSLConfigurer implements Configurer {
// private final Configurer parentConfigurer;
// private final TrustManager[] trustManagers;
// private final KeyManager[] keyManagers;
//
// public static TrustManager[] createTrustManagers(KeyStoreType truststore) throws GeneralSecurityException, IOException {
// TrustManagersType trustManagersType = new TrustManagersType();
// trustManagersType.setKeyStore(truststore);
// TrustManager[] trustManagers = TLSParameterJaxBUtils.getTrustManagers(trustManagersType);
// return trustManagers;
// }
//
// public static KeyManager[] createKeyManagers(KeyManagersType keyManager) throws GeneralSecurityException, IOException {
// KeyManager[] keyManagers = null;
// if (keyManager != null) {
// keyManagers = TLSParameterJaxBUtils.getKeyManagers(keyManager);
// } else {
// keyManagers = null;
// }
// return keyManagers;
// }
//
// public SSLConfigurer(Configurer parentConfigurer, TrustManager[] trustManagers, KeyManager[] keyManagers) {
// this.parentConfigurer = parentConfigurer;
// this.trustManagers = trustManagers;
// this.keyManagers = keyManagers;
// }
//
// @Override
// public void configureBean(Object beanInstance) {
// configureBean(null, beanInstance);
// }
//
// @Override
// public void configureBean(String name, Object beanInstance) {
// if (beanInstance instanceof HTTPConduit) {
// HTTPConduit http = (HTTPConduit) beanInstance;
// TLSClientParameters tls = new TLSClientParameters();
// tls.setTrustManagers(trustManagers);
// tls.setKeyManagers(keyManagers);
// tls.setDisableCNCheck(true);
// tls.setCipherSuitesFilter(getCipherSuites());
// http.setTlsClientParameters(tls);
// HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
// httpClientPolicy.setConnectionTimeout(36000);
// httpClientPolicy.setAllowChunking(false);
// httpClientPolicy.setReceiveTimeout(120000);
// http.setClient(httpClientPolicy);
// } else {
// parentConfigurer.configureBean(name, beanInstance);
// }
// }
//
// private FiltersType getCipherSuites() {
// FiltersType filters = new FiltersType();
// filters.getInclude().add(".*_WITH_3DES_.*");
// filters.getInclude().add(".*_WITH_DES_.*");
// filters.getExclude().add(".*_WITH_NULL_.*");
// filters.getExclude().add(".*_DH_anon_.*");
// return filters;
// }
// }
}