Package org.apache.geronimo.console.jmsmanager.server

Source Code of org.apache.geronimo.console.jmsmanager.server.JMSConnectorPortlet$ConnectorWrapper

/**
*
* Copyright 2004, 2005 The Apache Software Foundation or its licensors, as applicable.
*
*  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.apache.geronimo.console.jmsmanager.server;

import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.WindowState;
import javax.portlet.PortletConfig;
import javax.portlet.PortletContext;
import javax.management.ObjectName;
import javax.management.MalformedObjectNameException;
import org.apache.geronimo.console.util.PortletManager;
import org.apache.geronimo.kernel.proxy.GeronimoManagedBean;
import org.apache.geronimo.management.geronimo.JMSConnector;
import org.apache.geronimo.management.geronimo.JMSManager;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
* List, edit, add, remove JMS network connectors
*
* @version $Rev: 46228 $ $Date: 2004-09-16 21:21:04 -0400 (Thu, 16 Sep 2004) $
*/
public class JMSConnectorPortlet extends BaseJMSPortlet {
    private final static Log log = LogFactory.getLog(JMSConnectorPortlet.class);

    private PortletRequestDispatcher normalView;

    private PortletRequestDispatcher maximizedView;

    private PortletRequestDispatcher helpView;

    protected PortletRequestDispatcher editView;

    public void processAction(ActionRequest actionRequest,
                              ActionResponse actionResponse) throws PortletException, IOException {
        try {
            String mode = actionRequest.getParameter("mode");
            String managerName = PortletManager.getJMSManagerNames(actionRequest)[0]//todo: handle multiple
            String brokerName = actionRequest.getParameter("brokerName");
            if(mode.equals("new")) {
                // User selected to add a new connector, need to show criteria portlet
                actionResponse.setRenderParameter("mode", "new");
                String protocol = actionRequest.getParameter("protocol");
                actionResponse.setRenderParameter("protocol", protocol);
                actionResponse.setRenderParameter("brokerName", brokerName);
            } else if(mode.equals("add")) { // User just submitted the form to add a new connector
                // Get submitted values
                //todo: lots of validation
                String protocol = actionRequest.getParameter("protocol");
                String host = actionRequest.getParameter("host");
                int port = Integer.parseInt(actionRequest.getParameter("port"));
                String name = actionRequest.getParameter("name");
                // Create and configure the connector
                JMSConnector connector = PortletManager.createJMSConnector(actionRequest, managerName, brokerName, name, protocol, host, port);
                // Start the connector
                try {
                    ((GeronimoManagedBean)connector).startRecursive();
                } catch (Exception e) {
                    log.error("Unable to start connector", e); //todo: get into rendered page somehow?
                }
                actionResponse.setRenderParameter("mode", "list");
            } else if(mode.equals("save")) { // User just submitted the form to update a connector
                // Get submitted values
                //todo: lots of validation
                String host = actionRequest.getParameter("host");
                int port = Integer.parseInt(actionRequest.getParameter("port"));
                String objectName = actionRequest.getParameter("objectName");
                // Identify and update the connector
                JMSConnector connector = (JMSConnector)PortletManager.getManagedBean(actionRequest, objectName);
                if(connector != null) {
                    connector.setHost(host);
                    connector.setPort(port);
                }
                actionResponse.setRenderParameter("mode", "list");
            } else if(mode.equals("start")) {
                String objectName = actionRequest.getParameter("objectName");
                try {
                    PortletManager.getManagedBean(actionRequest, objectName).startRecursive();
                } catch (Exception e) {
                    throw new PortletException(e);
                }
                actionResponse.setRenderParameter("mode", "list");
            } else if(mode.equals("stop")) {
                String objectName = actionRequest.getParameter("objectName");
                try {
                    PortletManager.getManagedBean(actionRequest, objectName).stop();
                } catch (Exception e) {
                    throw new PortletException(e);
                }
                actionResponse.setRenderParameter("mode", "list");
            } else if(mode.equals("edit")) {
                String objectName = actionRequest.getParameter("objectName");
                actionResponse.setRenderParameter("objectName", objectName);
                actionResponse.setRenderParameter("mode", "edit");
            } else if(mode.equals("delete")) {
                String objectName = actionRequest.getParameter("objectName");
                PortletManager.getJMSManager(actionRequest, managerName).removeConnector(objectName);
                actionResponse.setRenderParameter("mode", "list");
            }
        } catch (Throwable e) {
            log.error("Unable to process portlet action", e);
            if(e instanceof PortletException) {
                throw (PortletException)e;
            }
        }
    }

    protected void doView(RenderRequest renderRequest,
                          RenderResponse renderResponse) throws IOException, PortletException {
        if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
            return;
        }

        try {
            String mode = renderRequest.getParameter("mode");
            if(mode == null || mode.equals("")) {
                mode = "list";
            }
            String managerName = PortletManager.getJMSManagerNames(renderRequest)[0]//todo: handle multiple

            if(mode.equals("new")) {
                String brokerName = renderRequest.getParameter("brokerName");
                String protocol = renderRequest.getParameter("protocol");
                renderRequest.setAttribute("protocol", protocol);
                renderRequest.setAttribute("brokerName", brokerName);
                renderRequest.setAttribute("mode", "add");
                editView.include(renderRequest, renderResponse);
            } else if(mode.equals("edit")) {
                String objectName = renderRequest.getParameter("objectName");
                JMSConnector connector = (JMSConnector)PortletManager.getManagedBean(renderRequest, objectName);
                if(connector == null) {
                    doList(renderRequest, managerName, renderResponse);
                } else {
                    renderRequest.setAttribute("objectName", objectName);
                    renderRequest.setAttribute("port", new Integer(connector.getPort()));
                    renderRequest.setAttribute("host", connector.getHost());
                    renderRequest.setAttribute("mode", "save");
                    editView.include(renderRequest, renderResponse);
                }
            } else if(mode.equals("list")) {
                doList(renderRequest, managerName, renderResponse);
            }
        } catch (Throwable e) {
            log.error("Unable to render portlet", e);
        }
    }

    private void doList(RenderRequest renderRequest, String managerName, RenderResponse renderResponse) throws PortletException, IOException {
        List beans = new ArrayList();
        String[] brokerNames = PortletManager.getJMSBrokerNames(renderRequest, managerName);
        for (int i = 0; i < brokerNames.length; i++) {
            String brokerName = brokerNames[i];
            try {
                ObjectName bon = ObjectName.getInstance(brokerName);
                JMSConnector[] connectors = PortletManager.getJMSConnectorsForContainer(renderRequest, managerName, brokerName);
                for (int j = 0; j < connectors.length; j++) {
                    JMSConnector connector = connectors[j];
                    ObjectName conName = ObjectName.getInstance(((GeronimoManagedBean)connector).getObjectName());
                    String connectorName = conName.getKeyProperty("name");
                    ConnectorWrapper info = new ConnectorWrapper(bon.getKeyProperty("name"), bon.getCanonicalName(),
                                                                 connectorName, connector);
                    beans.add(info);
                }
            } catch (MalformedObjectNameException e) {
                log.error("Unable to decode ObjectName", e);
            }
        }
        renderRequest.setAttribute("brokers", getBrokerMap(renderRequest, managerName).entrySet());
        renderRequest.setAttribute("connectors", beans);
        JMSManager mgr = PortletManager.getJMSManager(renderRequest, managerName);
        renderRequest.setAttribute("protocols", mgr.getSupportedProtocols());

        if (WindowState.NORMAL.equals(renderRequest.getWindowState())) {
            normalView.include(renderRequest, renderResponse);
        } else {
            maximizedView.include(renderRequest, renderResponse);
        }
    }

    protected void doHelp(RenderRequest renderRequest,
                          RenderResponse renderResponse) throws PortletException, IOException {
        helpView.include(renderRequest, renderResponse);
    }

    public void init(PortletConfig portletConfig) throws PortletException {
        super.init(portletConfig);
        PortletContext pc = portletConfig.getPortletContext();
        normalView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/normal.jsp");
        maximizedView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/maximized.jsp");
        helpView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/help.jsp");
        editView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/editGeneric.jsp");
    }

    public void destroy() {
        helpView = null;
        editView = null;
        normalView = null;
        maximizedView = null;
        super.destroy();
    }

    public final static boolean isValid(String s) {
        return s != null && !s.equals("");
    }

    public static class ConnectorWrapper {
        private String brokerName;
        private String brokerObjectName;
        private String displayName;
        private JMSConnector connector;

        public ConnectorWrapper(String brokerName, String brokerObjectName, String displayName, JMSConnector connector) {
            this.brokerName = brokerName;
            this.displayName = displayName;
            this.connector = connector;
            this.brokerObjectName = brokerObjectName;
        }

        public String getBrokerName() {
            return brokerName;
        }

        public String getDisplayName() {
            return displayName;
        }

        public JMSConnector getConnector() {
            return connector;
        }

        public String getBrokerObjectName() {
            return brokerObjectName;
        }
    }
}
TOP

Related Classes of org.apache.geronimo.console.jmsmanager.server.JMSConnectorPortlet$ConnectorWrapper

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.