Package org.cafesip.jiplet.console.server

Source Code of org.cafesip.jiplet.console.server.ConnectorMgmt

/*
* Created on Sep 10, 2005
*
* Copyright 2005 CafeSip.org
*
* 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.cafesip.jiplet.console.server;

import java.io.IOException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Properties;

import javax.management.InstanceNotFoundException;
import javax.management.MBeanException;
import javax.management.MBeanServerConnection;
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
import javax.management.ReflectionException;

import org.cafesip.jiplet.jmxbeans.ConnectorElement;

/**
* @author Amit Chatterjee
*
*/
public class ConnectorMgmt
{
    /**
     * A constructor for this class.
     *
     *
     */
    public ConnectorMgmt()
    {
    }

    public String[] listConnectors() throws Exception
    {
        AgentConnectionPool pool = Model.getJmxConnectionPool();
        MBeanServerConnection server = null;

        try
        {
            server = pool.getConnection();
            if (server == null)
            {
                String err = "Error obtaining JMX connection. Is the server running?";
                throw new Exception(err);
            }
            return (String[]) server.invoke(new ObjectName(
                    "org.cafesip.jiplet:type=JipletContainer"),
                    "listConnectors", null, null);
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public ConnectorElement getConnectorProperty(String name) throws Exception
    {
        AgentConnectionPool pool = Model.getJmxConnectionPool();
        MBeanServerConnection server = null;

        try
        {
            server = pool.getConnection();
            if (server == null)
            {
                String err = "Error obtaining JMX connection. Is the server running?";
                throw new Exception(err);
            }
            Object[] args = new Object[] { name };
            String[] sig = new String[] { "java.lang.String" };

            return (ConnectorElement) server.invoke(new ObjectName(
                    "org.cafesip.jiplet:type=JipletContainer"),
                    "getConnectorProperty", args, sig);
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public org.cafesip.jiplet.console.client.rpc.ConnectorElement viewConnectorProperty(
            String name) throws Exception
    {
        ConnectorElement src = getConnectorProperty(name);
        if (src == null)
        {
            throw new Exception("Connector not found");
        }

        org.cafesip.jiplet.console.client.rpc.ConnectorElement dest = new org.cafesip.jiplet.console.client.rpc.ConnectorElement();

        convertConnectorElement(src, dest);
        return dest;
    }

    private void convertConnectorElement(ConnectorElement src,
            org.cafesip.jiplet.console.client.rpc.ConnectorElement dest)
    {
        dest.setDefaultConnector(src.isDefaultConnector());
        dest.setMaxThreads(src.getMaxThreads());
        dest.setMinThreads(src.getMinThreads());
        dest.setName(src.getName());
        dest.setPortsStringList(src.getPorts());

        HashMap<String, String> map = new HashMap<String, String>();
        Properties props = src.getProperties();
        for (Enumeration e = props.keys(); e.hasMoreElements();) // TODO fix
        // warnings
        {
            String key = (String) e.nextElement();
            map.put(key, (String) props.get(key));
        }
        dest.setPropertiesMap(map);

        dest.setStack(src.getStack());
    }

    public org.cafesip.jiplet.console.client.rpc.ConnectorElement[] listProperties()
            throws Exception
    {
        String[] list = listConnectors();

        org.cafesip.jiplet.console.client.rpc.ConnectorElement[] elements = new org.cafesip.jiplet.console.client.rpc.ConnectorElement[list.length];
        for (int i = 0; i < list.length; i++)
        {
            elements[i] = new org.cafesip.jiplet.console.client.rpc.ConnectorElement();
            ConnectorElement c = getConnectorProperty(list[i]);

            convertConnectorElement(c, elements[i]);
        }

        return elements;
    }
}
TOP

Related Classes of org.cafesip.jiplet.console.server.ConnectorMgmt

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.