Package org.cafesip.jiplet.console.server

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

/*
* Created on Jul 2, 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.File;
import java.net.URL;

import javax.management.MBeanServerConnection;
import javax.management.ObjectName;

import org.cafesip.jiplet.jmxbeans.RealmElement;
import org.cafesip.jiplet.utils.FileUtils;

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

    public String[] listRealms() 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"), "listRealms",
                    null, null);
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public org.cafesip.jiplet.console.client.rpc.RealmElement[] listRealmsProperties()
            throws Exception
    {
        String[] realms = listRealms();
        org.cafesip.jiplet.console.client.rpc.RealmElement[] elements = new org.cafesip.jiplet.console.client.rpc.RealmElement[realms.length];

        for (int i = 0; i < realms.length; i++)
        {
            elements[i] = viewRealmProperty(realms[i]);
        }

        return elements;
    }

    public void createUser(String realm, String user, String password,
            String[] roles) 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[] params = { realm, user, password, roles };
            String[] sig = { realm.getClass().getName(),
                    user.getClass().getName(), password.getClass().getName(),
                    roles.getClass().getName() };

            String errorMessage = (String) server.invoke(new ObjectName(
                    "org.cafesip.jiplet:type=JipletContainer"),
                    "createRealmUser", params, sig);

            if (errorMessage.length() > 0)
            {
                throw new Exception(errorMessage);
            }
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }

    }

    public void modifyUser(String realm, String user, String password,
            String[] roles) 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[] params = { realm, user, password, roles };
            String[] sig = { realm.getClass().getName(),
                    user.getClass().getName(), password.getClass().getName(),
                    roles.getClass().getName() };

            String errorMessage = (String) server.invoke(new ObjectName(
                    "org.cafesip.jiplet:type=JipletContainer"),
                    "modifyRealmUser", params, sig);

            if (errorMessage.length() > 0)
            {
                throw new Exception(errorMessage);
            }
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public void deleteUser(String realm, String user) 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[] params = { realm, user };
            String[] sig = { realm.getClass().getName(),
                    user.getClass().getName() };

            String errorMessage = (String) server.invoke(new ObjectName(
                    "org.cafesip.jiplet:type=JipletContainer"),
                    "deleteRealmUser", params, sig);

            if (errorMessage.length() > 0)
            {
                throw new Exception(errorMessage);
            }
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public String[] getUser(String realm, String user) 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[] params = { realm, user };
            String[] sig = { realm.getClass().getName(),
                    user.getClass().getName() };
            return (String[]) server.invoke(new ObjectName(
                    "org.cafesip.jiplet:type=JipletContainer"), "getRealmUser",
                    params, sig);
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public void createRealm(String path) 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);
            }
            if (Model.getDeploymentType().equals("JBOSS") == true)
            {
                // copy the srr file/directory into the JBOSS deployment
                // directory
                String home = System.getProperty("jboss.server.home.url");
                URL home_url = new URL(home);
                File home_path = new File(home_url.getPath(), "deploy");

                FileUtils f = new FileUtils();
                if (f.copy(path, home_path.getAbsolutePath()) == false)
                {
                    throw new Exception(
                            "Error copying file to the J2EE deploy directory");
                }
            }
            else
            // servlet container (use the JMX interface)
            {
                Object[] args = new Object[] { path };
                String[] sig = new String[] { "java.lang.String" };

                String errorMessage = (String) server.invoke(new ObjectName(
                        "org.cafesip.jiplet:type=JipletContainer"),
                        "createRealm", args, sig);

                if (errorMessage.length() > 0)
                {
                    throw new Exception(errorMessage);
                }
            }
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }
    }

    public void deleteRealm(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);
            }
            if (Model.getDeploymentType().equals("JBOSS") == true)
            {
                Object[] args = new Object[] { name };
                String[] sig = new String[] { "java.lang.String" };

                String rname = (String) server.invoke(new ObjectName(
                        "org.cafesip.jiplet:type=JipletContainer"),
                        "getRealmDirName", args, sig);
                if (rname == null)
                {
                    throw new Exception(
                            "The realm was not found or it is not a deployed realm");
                }

                String home = System.getProperty("jboss.server.home.url");
                URL home_url = new URL(home);

                File f = null;
                if (rname.endsWith(FileUtils.SRR_EXTENSION))
                {
                    f = new File(home_url.getPath() + "/deploy/" + rname);
                }
                else
                {
                    f = new File(home_url.getPath() + "/deploy/" + rname
                            + FileUtils.SRR_EXTENSION);
                }

                if (f.isDirectory() == true)
                {
                    FileUtils futils = new FileUtils();
                    if (futils.deleteDir(f.getAbsolutePath()) == false)
                    {
                        throw new Exception(
                                "Error deleting J2EE deploy directory");
                    }
                }
                else if (f.isFile() == true)
                {
                    if (f.delete() == false)
                    {
                        throw new Exception(
                                "Error deleting srr file from the J2EE deploy directory");
                    }
                }
                else
                {
                    throw new Exception(
                            "The deployment does not exist in the J2EE deploy directory."
                                    + " This may occur if the realm is not a deployable realm");
                }
               
                Thread.sleep(10000L);
            }
            else
            {
                Object[] args = new Object[] { name };
                String[] sig = new String[] { "java.lang.String" };

                String errorMessage = (String) server.invoke(new ObjectName(
                        "org.cafesip.jiplet:type=JipletContainer"),
                        "deleteRealm", args, sig);

                if (errorMessage.length() > 0)
                {
                    throw new Exception(errorMessage);
                }

            }
        }
        finally
        {
            if (server != null)
            {
                pool.returnConnection(server);
            }
        }

    }

    public RealmElement getRealmProperty(String realmName) 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[] { realmName };
            String[] sig = new String[] { "java.lang.String" };

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

    }

    public org.cafesip.jiplet.console.client.rpc.RealmElement viewRealmProperty(
            String realmName) throws Exception
    {
        RealmElement src = getRealmProperty(realmName);
        if (src == null)
        {
            throw new Exception("Realm not found");
        }

        if (src.getDeployDir() == null)
        {
            src.setDeployDir("System Realm");
        }

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

        dest.setDefaultRealm(src.isDefaultRealm());
        dest.setDeployDir(src.getDeployDir());
        dest.setName(src.getName());
        dest.setParamsMap(src.getParams());
        return dest;
    }
}
TOP

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

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.