/*
* 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;
}
}