org.mule.modules.valomnia.core.ConnectorConfig.java Source code

Java tutorial

Introduction

Here is the source code for org.mule.modules.valomnia.core.ConnectorConfig.java

Source

/**
 * (C) 2016 ApptivIT . This software is protected by international copyright. Any use of this software is subject to Valomnia User account
 * through a sales contract between you and ApptivIT . If such a user account Valomnia is not in place,
 * you can not use the software.
 * a copy of Valomnia GENERAL TERMS AND CONDITIONS has-been included with this distribution in the file LICENSE.md
 */

package org.mule.modules.valomnia.core;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.conn.HttpHostConnectException;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.log4j.Logger;
import org.mule.api.ConnectionException;
import org.mule.api.ConnectionExceptionCode;
import org.mule.api.annotations.Connect;
import org.mule.api.annotations.ConnectionIdentifier;
import org.mule.api.annotations.Disconnect;
import org.mule.api.annotations.TestConnectivity;
import org.mule.api.annotations.ValidateConnection;
import org.mule.api.annotations.components.ConnectionManagement;
import org.mule.api.annotations.display.Password;
import org.mule.api.annotations.param.ConnectionKey;
import org.mule.modules.valomnia.client.ValomniaClientProvider;
import org.mule.modules.valomnia.client.impl.ValomniaClientProviderImpl;
import com.google.gson.Gson;

@ConnectionManagement(configElementName = "config", friendlyName = "Configuration")
public class ConnectorConfig {
    private static final Logger logger = Logger.getLogger(ConnectorConfig.class);
    private String token;
    private String user;
    private String password;
    private String baseUrl;
    private ValomniaClientProvider clientProvider;

    public ValomniaClientProvider getClientProvider() {
        return clientProvider;
    }

    public void setClientProvider(ValomniaClientProvider clientProvider) {
        this.clientProvider = clientProvider;
    }

    /**
     * Connect
     *
     * @param username
     *            a username
     * @param password
     *            a password
     * @param baseUrl
     *            a baseUrl of Valomnia API
     * 
     * @throws ConnectionException
     *             if the username or password incorrect
     */
    @Connect
    @TestConnectivity
    public void connect(@ConnectionKey String username, @Password String password, String baseUrl)
            throws ConnectionException {
        if (!(baseUrl.endsWith("/"))) {
            baseUrl += "/";
        }
        this.user = username;
        this.password = password;
        this.baseUrl = baseUrl;
        this.token = getAuthToken();
        if (token != null) {
            setClientProvider(new ValomniaClientProviderImpl(baseUrl, token));
        } else {
            throw new ConnectionException(ConnectionExceptionCode.INCORRECT_CREDENTIALS, "invalid credentials",
                    "Invalid credentials");
        }
    }

    /**
     * Disconnect
     */
    @Disconnect
    public void disconnect() {
        setClientProvider(null);
    }

    /**
     * Are we connected
     */
    @ValidateConnection
    public boolean isConnected() {
        return getClientProvider() != null;
    }

    /**
     * Id used when debuging.
     */
    @ConnectionIdentifier
    public String connectionId() {
        return token;
    }

    public String getAuthToken() {

        return authentication(this.user, this.password);

    }

    public static String encodage(final List<CustomNameValuePair> parameters) {
        return URLEncodedUtils.format(parameters, "ISO-8859-1");
    }

    public String authentication(final String login, final String password) {

        String test = null;
        try {

            final DefaultHttpClient client = new DefaultHttpClient();

            final List<CustomNameValuePair> parameters = new ArrayList<CustomNameValuePair>();
            parameters.add(new CustomNameValuePair("j_username", login));
            parameters.add(new CustomNameValuePair("j_password", password));
            parameters.add(new CustomNameValuePair("ajax", "true"));

            final String url = encodage(parameters);

            final HttpPost post = new HttpPost(getBaseUrl() + "j_spring_security_check?" + url);

            post.setHeader("Content-type", "application/json");

            final HttpResponse response = client.execute(post);
            HttpResponse response2 = null;

            if (response.getStatusLine().getStatusCode() == 302) {

                final String loc = response.getFirstHeader("Location").getValue();

                final String cookie = response.getFirstHeader("Set-Cookie").getValue();
                final String token1 = cookie.substring(11, cookie.indexOf(";"));

                if (loc != null) {

                    final DefaultHttpClient client2 = new DefaultHttpClient();

                    final HttpPost post2 = new HttpPost(loc);
                    post2.setHeader("Content-type", "application/json;charset=UTF-8");
                    post2.setHeader("Cookie", "JSESSIONID=" + token1);
                    response2 = client2.execute(post2);

                }

            }

            if (response2.getStatusLine().getStatusCode() != 200) {
                System.out.println("Failed : HTTP error code : " + response2.getStatusLine().getStatusCode());
            } else {

                final BufferedReader reader = new BufferedReader(
                        new InputStreamReader(response2.getEntity().getContent()));

                final String line = reader.readLine();
                if (line != null) {

                    @SuppressWarnings("unchecked")
                    final Map<String, Object> javaRootMapObject = new Gson().fromJson(line, Map.class);
                    if (javaRootMapObject != null && javaRootMapObject.get("token") != null) {

                        test = javaRootMapObject.get("token").toString();

                    }
                }

            }
        } catch (HttpHostConnectException e) {
            test = "HttpHostConnectException";
            logger.error("Http exception", e);
        } catch (Exception cpe) {
            logger.error("Http exception", cpe);
        }

        return test;

    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getBaseUrl() {
        return baseUrl;
    }

    public void setBaseUrl(String baseUrl) {
        this.baseUrl = baseUrl;
    }

}