All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.xcase.webservice.impl.simple.methods.InvokeWebServiceMethod Maven / Gradle / Ivy

/**
 * Copyright 2016 Xcase All rights reserved.
 */
package com.xcase.webservice.impl.simple.methods;

import com.xcase.webservice.objects.WebServiceException;
import com.xcase.webservice.WebServiceStub;
import com.xcase.webservice.factories.WebServiceResponseFactory;
import com.xcase.webservice.transputs.InvokeWebServiceRequest;
import com.xcase.webservice.transputs.InvokeWebServiceResponse;
import java.io.*;
import java.lang.invoke.*;
import java.security.*;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import org.apache.axis2.transport.http.security.SSLProtocolSocketFactory;
import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
import org.apache.logging.log4j.*;

/**
 *
 * @author martin
 */
public class InvokeWebServiceMethod {

    /**
     * log4j object.
     */
    protected static final Logger LOGGER = LogManager.getLogger(MethodHandles.lookup().lookupClass());

    /**
     * This method invokes an IB Web service.
     *
     * @param invokeWebServiceRequest request
     * @return response
     * @throws IOException io exception
     * @throws Exception e exception
     */
    public InvokeWebServiceResponse invokeWebService(InvokeWebServiceRequest invokeWebServiceRequest) throws IOException, WebServiceException {
        LOGGER.debug("starting invokeWebServiceRequest()");
        InvokeWebServiceResponse invokeWebServiceResponse = WebServiceResponseFactory.createInvokeWebServiceResponse();
        String endpoint = invokeWebServiceRequest.getEndpoint();
        LOGGER.debug("endpoint is " + endpoint);
        String sslProtocol = invokeWebServiceRequest.getProtocol();
        LOGGER.debug("sslProtocol is " + sslProtocol);
        if (sslProtocol == null || sslProtocol.isEmpty()) {
            sslProtocol = "TLSv1.2";
        }

        String username = invokeWebServiceRequest.getUsername();
        LOGGER.debug("username is " + username);
        if (username == null || username.isEmpty()) {
            username = "admin";
        }

        LOGGER.debug("username is " + username);
        String password = invokeWebServiceRequest.getPassword();
        if (password == null) {
            password = "";
        }

        LOGGER.debug("password is " + password);
        try {
            TrustManager[] trustAllCerts = new TrustManager[]{
                new X509TrustManager() {
                    public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                        return null;
                    }

                    public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                    }

                    public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
                    }
                }
            };
            WebServiceStub webServiceStub = null;
            if (endpoint != null && !endpoint.isEmpty()) {
                webServiceStub = new WebServiceStub(endpoint);
            } else {
                webServiceStub = new WebServiceStub();
            }


            SSLContext sslContext = SSLContext.getInstance(sslProtocol);
            LOGGER.debug("created sslContext");
            sslContext.init(null, trustAllCerts, null);
            LOGGER.debug("initialized sslContext");
            ProtocolSocketFactory sslProtocolSocketFactory = new SSLProtocolSocketFactory(sslContext);
            Protocol protocol = new Protocol("https", sslProtocolSocketFactory, 443);
            LOGGER.debug("created protocol");
            webServiceStub._getServiceClient().getOptions().setProperty(HTTPConstants.CUSTOM_PROTOCOL_HANDLER, protocol);
            LOGGER.debug("got service client");
            WebServiceStub.Login login = new WebServiceStub.Login();
            login.setUsername(username);
            login.setPassword(password);
            LOGGER.debug("about to log in");
            WebServiceStub.LoginResponse loginResponse = webServiceStub.login(login);
            LOGGER.debug("logged in");
            WebServiceStub.InvokeSyncWebService invokeSyncWebService = new WebServiceStub.InvokeSyncWebService();
            LOGGER.debug("invoked Web service");
            invokeSyncWebService.setSessionID(loginResponse.getSessionID());
            LOGGER.debug("about to invoke Web service");
            WebServiceStub.InvokeSyncWebServiceResponse invokeSyncWebServiceResponse = webServiceStub.invokeSyncWebService(invokeSyncWebService);
            LOGGER.debug("invoked Web service");
            LOGGER.debug(invokeSyncWebServiceResponse.getOutput().getOutput());
            invokeWebServiceResponse.setOutput(invokeSyncWebServiceResponse.getOutput());
        } catch (NoSuchAlgorithmException nsae) {
            LOGGER.error("catching NoSuchAlgorithmException exception " + nsae.getMessage());
        } catch (Exception e) {
            LOGGER.error("catching Exception exception " + e.getMessage());
        }

        return invokeWebServiceResponse;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy