org.wso2.carbon.ndatasource.ui.NDataSourceAdminServiceClient.java Source code

Java tutorial

Introduction

Here is the source code for org.wso2.carbon.ndatasource.ui.NDataSourceAdminServiceClient.java

Source

/**
 *  Copyright (c) 2012, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.wso2.carbon.ndatasource.ui;

import java.rmi.RemoteException;

import javax.servlet.ServletConfig;
import javax.servlet.http.HttpSession;

import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.CarbonConstants;
import org.wso2.carbon.ndatasource.ui.stub.NDataSourceAdminStub;
import org.wso2.carbon.ndatasource.ui.stub.NDataSourceAdminDataSourceException;
import org.wso2.carbon.ndatasource.ui.stub.core.services.xsd.WSDataSourceMetaInfo;
import org.wso2.carbon.ndatasource.ui.stub.core.services.xsd.WSDataSourceInfo;
import org.wso2.carbon.ndatasource.common.DataSourceException;
import org.wso2.carbon.ui.CarbonUIUtil;
import org.wso2.carbon.utils.ServerConstants;

public class NDataSourceAdminServiceClient {

    private NDataSourceAdminStub stub = null;

    private static Log log = LogFactory.getLog(NDataSourceAdminServiceClient.class);

    public NDataSourceAdminServiceClient(String cookie, String backendServerURL, ConfigurationContext configCtx)
            throws AxisFault {
        String serviceURL = backendServerURL + "NDataSourceAdmin";
        stub = new NDataSourceAdminStub(configCtx, serviceURL);
        ServiceClient client = stub._getServiceClient();
        Options option = client.getOptions();
        option.setManageSession(true);
        option.setProperty(org.apache.axis2.transport.http.HTTPConstants.COOKIE_STRING, cookie);
    }

    public static NDataSourceAdminServiceClient getInstance(ServletConfig config, HttpSession session)
            throws AxisFault {
        String backendServerURL = CarbonUIUtil.getServerURL(config.getServletContext(), session);
        ConfigurationContext configContext = (ConfigurationContext) config.getServletContext()
                .getAttribute(CarbonConstants.CONFIGURATION_CONTEXT);

        String cookie = (String) session.getAttribute(ServerConstants.ADMIN_SERVICE_COOKIE);
        return new NDataSourceAdminServiceClient(cookie, backendServerURL, configContext);

    }

    public void addDataSource(WSDataSourceMetaInfo dataSourceMetaInfo) throws RemoteException, DataSourceException {
        validateDataSourceMetaInformation(dataSourceMetaInfo);
        if (log.isDebugEnabled()) {
            log.debug("Going to add Datasource :" + dataSourceMetaInfo.getName());
        }
        try {
            stub.addDataSource(dataSourceMetaInfo);
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
    }

    public boolean testDataSourceConnection(WSDataSourceMetaInfo dataSourceMetaInfo)
            throws RemoteException, DataSourceException {
        validateDataSourceMetaInformation(dataSourceMetaInfo);
        if (log.isDebugEnabled()) {
            log.debug("Going test connection of Datasource :" + dataSourceMetaInfo.getName());
        }
        try {
            return stub.testDataSourceConnection(dataSourceMetaInfo);
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return false;
    }

    public void deleteDataSource(String dsName) throws RemoteException, DataSourceException {
        validateName(dsName);
        if (log.isDebugEnabled()) {
            log.debug("Going to delete a Datasource with name : " + dsName);
        }
        try {
            stub.deleteDataSource(dsName);
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
    }

    public WSDataSourceInfo[] getAllDataSources() throws RemoteException, DataSourceException {
        WSDataSourceInfo[] allDataSources = null;
        try {
            allDataSources = stub.getAllDataSources();
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return allDataSources;
    }

    public WSDataSourceInfo getDataSource(String dsName) throws RemoteException, DataSourceException {
        validateName(dsName);
        WSDataSourceInfo wsDataSourceInfo = null;
        try {
            wsDataSourceInfo = stub.getDataSource(dsName);
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return wsDataSourceInfo;
    }

    public WSDataSourceInfo[] getAllDataSourcesForType(String dsType) throws RemoteException, DataSourceException {
        validateType(dsType);
        WSDataSourceInfo[] allDataSources = null;
        try {
            allDataSources = stub.getAllDataSourcesForType(dsType);
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return allDataSources;
    }

    public String[] getDataSourceTypes() throws RemoteException, DataSourceException {
        String[] dataSourceTypes = null;
        try {
            dataSourceTypes = stub.getDataSourceTypes();
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return dataSourceTypes;
    }

    public boolean reloadAllDataSources() throws RemoteException, DataSourceException {
        try {
            return stub.reloadAllDataSources();
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return false;
    }

    public boolean reloadDataSource(String dsName) throws RemoteException, DataSourceException {
        validateName(dsName);
        try {
            return stub.reloadDataSource(dsName);
        } catch (NDataSourceAdminDataSourceException e) {
            if (e.getFaultMessage().getDataSourceException().isErrorMessageSpecified()) {
                handleException(e.getFaultMessage().getDataSourceException().getErrorMessage(), e);
            }
            handleException(e.getMessage(), e);
        }
        return false;
    }

    private static void validateDataSourceMetaInformation(WSDataSourceMetaInfo dataSourceMetaInfo) {
        if (dataSourceMetaInfo == null) {
            handleException("WSDataSourceMetaInfo can not be found.");
        }
    }

    private static void validateName(String name) {
        if (name == null || "".equals(name)) {
            handleException("Name is null or empty");
        }
    }

    private static void validateType(String type) {
        if (type == null || "".equals(type)) {
            handleException("Type is null or empty");
        }
    }

    private static void handleException(String msg) {
        log.error(msg);
        throw new IllegalArgumentException(msg);
    }

    private static void handleException(String msg, Exception e) throws DataSourceException {
        throw new DataSourceException(msg, e);
    }

}