com.mirth.connect.connectors.ws.DefaultWebServiceConfiguration.java Source code

Java tutorial

Introduction

Here is the source code for com.mirth.connect.connectors.ws.DefaultWebServiceConfiguration.java

Source

/*
 * Copyright (c) Mirth Corporation. All rights reserved.
 * 
 * http://www.mirthcorp.com
 * 
 * The software in this package is published under the terms of the MPL license a copy of which has
 * been included with this distribution in the LICENSE.txt file.
 */

package com.mirth.connect.connectors.ws;

import java.util.Map;

import javax.net.ssl.SSLContext;

import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.ssl.SSLContexts;

import com.mirth.connect.donkey.server.channel.Connector;
import com.mirth.connect.server.controllers.ConfigurationController;
import com.mirth.connect.server.controllers.ControllerFactory;
import com.mirth.connect.util.MirthSSLUtil;
import com.sun.net.httpserver.HttpServer;

public class DefaultWebServiceConfiguration implements WebServiceConfiguration {

    private ConfigurationController configurationController = ControllerFactory.getFactory()
            .createConfigurationController();
    private SSLContext sslContext;
    private String[] enabledProtocols;
    private String[] enabledCipherSuites;

    @Override
    public void configureConnectorDeploy(Connector connector) throws Exception {
        if (connector instanceof WebServiceDispatcher) {
            sslContext = SSLContexts.createSystemDefault();
            enabledProtocols = MirthSSLUtil
                    .getEnabledHttpsProtocols(configurationController.getHttpsClientProtocols());
            enabledCipherSuites = MirthSSLUtil
                    .getEnabledHttpsCipherSuites(configurationController.getHttpsCipherSuites());
            SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext,
                    enabledProtocols, enabledCipherSuites, NoopHostnameVerifier.INSTANCE);
            ((WebServiceDispatcher) connector).getSocketFactoryRegistry().register("https",
                    sslConnectionSocketFactory);
        }
    }

    @Override
    public void configureConnectorUndeploy(Connector connector) {
    }

    @Override
    public void configureReceiver(WebServiceReceiver connector) throws Exception {
        connector.setServer(HttpServer.create());
    }

    @Override
    public void configureDispatcher(WebServiceDispatcher connector,
            WebServiceDispatcherProperties connectorProperties, Map<String, Object> requestContext)
            throws Exception {
        requestContext.put("com.sun.xml.internal.ws.transport.https.client.SSLSocketFactory",
                new SSLSocketFactoryWrapper(sslContext.getSocketFactory(), enabledProtocols, enabledCipherSuites));
    }
}