You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jl...@apache.org on 2006/04/13 13:36:26 UTC

svn commit: r393787 [9/22] - in /geronimo/trunk/applications: ./ console/ console/console-core/ console/console-core/src/ console/console-core/src/java/ console/console-core/src/java/org/ console/console-core/src/java/org/apache/ console/console-core/s...

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,123 @@
+/**
+ *
+ * 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;
+
+import java.util.Iterator;
+import java.util.Set;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContext;
+import org.apache.geronimo.j2ee.j2eeobjectnames.J2eeContextImpl;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.KernelRegistry;
+import org.apache.geronimo.console.GeronimoVersion;
+
+public abstract class AbstractJMSManager {
+
+    protected static final String JMS_SERVER_MBEAN_NAME = "geronimo.server:J2EEApplication=null,J2EEModule=geronimo/activemq-broker/" + GeronimoVersion.GERONIMO_VERSION + "/car,J2EEServer=geronimo,j2eeType=JMSServer,name=ActiveMQl";
+
+    protected static final String GET_BROKER_ADMIN_FUNCTION = "getBrokerAdmin";
+
+    public static final String TOPIC_TYPE = "Topic";
+
+    public static final String QUEUE_TYPE = "Queue";
+
+    //ViewDestinations attribute names
+    protected static final String DESTINATION_LIST = "destinations";
+
+    protected static final String DESTINATION_MSG = "destinationsMsg";
+
+    //CreateDestinations attribute names
+    protected static final String DESTINATION_NAME = "destinationMessageDestinationName";
+
+    protected static final String DESTINATION_PHYSICAL_NAME = "destinationPhysicalName";
+
+    protected static final String DESTINATION_TYPE = "destinationType";
+
+    protected static final String DESTINATION_APPLICATION_NAME = "destinationApplicationName";
+
+    protected static final String DESTINATION_MODULE_NAME = "destinationModuleName";
+
+    protected static final String DESTINATION_CONFIG_URI = "destinationConfigURI";
+
+    protected static final String CONNECTION_FACTORY_NAME = "geronimo.server:J2EEApplication=null,J2EEServer=geronimo,JCAResource=geronimo/activemq/" + GeronimoVersion.GERONIMO_VERSION + "/car,j2eeType=JCAManagedConnectionFactory,name=DefaultActiveMQConnectionFactory";
+
+    protected static Object[] no_args = new Object[0];
+
+    protected static String[] no_params = new String[0];
+
+    protected static Kernel kernel = KernelRegistry.getSingleKernel();
+
+    protected static final String BASE_CONFIG_URI = "runtimedestination/";
+
+    protected ObjectName mBeanName;
+
+    public static final ObjectName DESTINATION_QUERY;
+
+    public static final ObjectName ACTIVEMQJCA_RESOURCE_QUERY;
+
+    public static final String ACTIVEMQJCA_RESOURCE;
+
+    static {
+        try {
+
+            DESTINATION_QUERY = ObjectName
+                    .getInstance("geronimo.server:j2eeType="
+                            + NameFactory.JCA_ADMIN_OBJECT + ",*");
+            ACTIVEMQJCA_RESOURCE_QUERY = ObjectName
+                    .getInstance("*:j2eeType=JCAManagedConnectionFactory,name=DefaultActiveMQConnectionFactory,*");
+            ACTIVEMQJCA_RESOURCE = getActiveMQJCA_RESOURCE(ACTIVEMQJCA_RESOURCE_QUERY);
+
+            if (null == ACTIVEMQJCA_RESOURCE) {
+                throw new RuntimeException(
+                        "No JCA resource was found for DefaultActiveMQConnectionFactory");
+            }
+
+        } catch (MalformedObjectNameException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    public static final J2eeContext baseContext = new J2eeContextImpl(
+            "geronimo.server", "geronimo", "null", ACTIVEMQJCA_RESOURCE, null,
+            null, NameFactory.JCA_ADMIN_OBJECT);
+
+    /**
+     * Get the JCA resource name of the activemq bean.
+     *
+     * @return JCA resource name
+     */
+    public static String getActiveMQJCA_RESOURCE(ObjectName obj) {
+
+        Set modules = kernel.listGBeans(obj);
+
+        String JCA_Resource = null;
+
+        for (Iterator iterator = modules.iterator(); iterator.hasNext();) {
+            ObjectName activemqObject = (ObjectName) iterator.next();
+            JCA_Resource = activemqObject
+                    .getKeyProperty(NameFactory.JCA_RESOURCE);
+        }
+
+        return JCA_Resource;
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/AbstractJMSManager.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,132 @@
+/**
+ *
+ * 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;
+
+import javax.jms.Queue;
+
+public class DestinationInfo implements Comparable {
+
+    private final String name;
+
+    private final String physicalName;
+
+    private final Class type;
+
+    private final String applicationName;
+
+    private final String moduleName;
+
+    private final String configURI;
+
+    public DestinationInfo(String name, String physicalName, Class type,
+            String applicationName, String moduleName, String configURI) {
+        this.name = name;
+        this.physicalName = physicalName;
+        this.type = type;
+        this.applicationName = applicationName;
+        this.moduleName = moduleName;
+        this.configURI = configURI;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public String getPhysicalName() {
+        return physicalName;
+    }
+
+    public Class getType() {
+        return type;
+    }
+
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    public String getModuleName() {
+        return moduleName;
+    }
+
+    public String getConfigURI() {
+        return configURI;
+    }
+
+    /**
+     * Determines if the destination that this objects represents is viewable
+     * from the console this means that either the destination that this object
+     * represents was added via the Geronimo JMS Console or it is a Queue.
+     *
+     * @return true if the console knows how to display this Destination
+     *         otherwise returns false.
+     */
+    public boolean isViewable() {
+        return Queue.class.isAssignableFrom(type) || isConsoleManaged();
+    }
+
+    /**
+     * Determines if the destination that this objects represents is removable
+     * from the console this means that the destination that this object
+     * represents was added via the Geronimo JMS Console.
+     *
+     * @return true if the console knows how to remove this Destination
+     *         otherwise returns false.
+     */
+    public boolean isRemovable() {
+        return isConsoleManaged();
+    }
+
+    /**
+     * Determines if the destination that this objects represents was added via
+     * the console.
+     *
+     * @return true if the destination that this objects represents was added
+     *         via the console otherwise returns false.
+     */
+    private boolean isConsoleManaged() {
+        return configURI.indexOf(AbstractJMSManager.BASE_CONFIG_URI + name) > -1;
+    }
+
+    public int compareTo(Object o) {
+        if (o instanceof DestinationInfo) {
+            DestinationInfo rhs = (DestinationInfo) o;
+            // If one of the objects is removable and the other is not, the
+            // removable one is less (comes first in a descending sort).
+            if (rhs.isRemovable() != this.isRemovable()) {
+                if (this.isRemovable()) {
+                    return -1;
+                } else {
+                    return 1;
+                }
+                // If one of the objects is viewable and the other is not the
+                // viewable one is less (comes first in a descending sort).
+            } else if (rhs.isViewable() != this.isViewable()) {
+                if (this.isViewable()) {
+                    return -1;
+                } else {
+                    return 1;
+                }
+                // Sort by name if all else fails.
+            } else {
+                return this.name.compareTo(rhs.getName());
+            }
+        }
+        return 1;
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/DestinationInfo.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,300 @@
+/**
+ *
+ * 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;
+
+import org.apache.geronimo.console.BasePortlet;
+import org.apache.geronimo.console.GeronimoVersion;
+import org.apache.geronimo.console.databasemanager.DataSourceInfo;
+import org.apache.geronimo.console.jmsmanager.activemqCF.ActiveMQConnectorHelper;
+import org.apache.geronimo.gbean.GAttributeInfo;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.KernelRegistry;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class JMSConnectionFactoryManagerPortlet extends BasePortlet {
+
+    private final static ActiveMQConnectorHelper helper = new ActiveMQConnectorHelper();
+
+    private final static String PARENT_ID = "geronimo/activemq-broker/" + GeronimoVersion.GERONIMO_VERSION + "/car";
+
+    private final static String ADD_MODE = "addACF";
+
+    private final static String SUBMIT_CREATE = "Create";
+
+    private final ObjectName DATABASE_QUERY = JMXUtil
+            .getObjectName("*:j2eeType=JCAManagedConnectionFactory,*");
+
+    protected final String NORMAL_VIEW = "/WEB-INF/view/jmsmanager/activemq/normal.jsp";;
+
+    protected final String DETAIL_VIEW = "/WEB-INF/view/jmsmanager/activemq/detail.jsp";
+
+    protected final String HELP_VIEW = "/WEB-INF/view/jmsmanager/activemq/help.jsp";;
+
+    protected final String ADD_VIEW = "/WEB-INF/view/jmsmanager/activemq/addACF.jsp";
+
+    protected Kernel kernel;
+
+    private PortletRequestDispatcher normalView;
+
+    private PortletRequestDispatcher detailView;
+
+    private PortletRequestDispatcher helpView;
+
+    private PortletRequestDispatcher addView;
+
+    private static final Set HIDDEN_ATTRIBUTES;
+
+    static {
+        HIDDEN_ATTRIBUTES = new HashSet();
+        HIDDEN_ATTRIBUTES.add("kernel");
+        HIDDEN_ATTRIBUTES.add("connectionImplClass");
+        HIDDEN_ATTRIBUTES.add("connectionInterface");
+        HIDDEN_ATTRIBUTES.add("connectionFactoryInterface");
+        HIDDEN_ATTRIBUTES.add("connectionFactoryImplClass");
+        HIDDEN_ATTRIBUTES.add("implementedInterfaces");
+        HIDDEN_ATTRIBUTES.add("managedConnectionFactoryClass");
+        HIDDEN_ATTRIBUTES.add("recoveryXAResources");
+    }
+
+    public void init(PortletConfig portletConfig) throws PortletException {
+        super.init(portletConfig);
+        kernel = KernelRegistry.getSingleKernel();
+        PortletContext context = portletConfig.getPortletContext();
+        normalView = context.getRequestDispatcher(NORMAL_VIEW);
+        detailView = context.getRequestDispatcher(DETAIL_VIEW);
+        helpView = context.getRequestDispatcher(HELP_VIEW);
+        addView = context.getRequestDispatcher(ADD_VIEW);
+    }
+
+    public void processAction(ActionRequest actionRequest,
+            ActionResponse actionResponse) throws PortletException, IOException {
+        String mode = actionRequest.getParameter("mode");
+        String submit = actionRequest.getParameter("submit");
+
+        if (mode == null) {
+            return;
+        } else if (ADD_MODE.equals(mode)) {
+            actionResponse.setRenderParameter("mode", mode);
+            if (SUBMIT_CREATE.equals(submit)) {
+                String acfName = actionRequest.getParameter("acfName");
+                String serverURL = actionRequest.getParameter("serverURL");
+                String userName = actionRequest.getParameter("userName");
+                String pword = actionRequest.getParameter("pword");
+                String poolMaxSize = actionRequest.getParameter("poolMaxSize");
+                String blocking = actionRequest.getParameter("blocking");
+
+                String[] args = { trimStr(acfName), trimStr(PARENT_ID),
+                        trimStr(acfName), trimStr(serverURL),
+                        trimStr(userName), pword, trimStr(acfName),
+                        trimStr(poolMaxSize), trimStr(blocking) };
+                helper.deployPlan(actionRequest, args);
+                // Set mode to list after creating the new ConnectionFactories
+                actionResponse.setRenderParameter("mode", "list");
+            }
+            return;
+        }
+
+        String name = actionRequest.getParameter("name");
+        if (name != null) {
+            actionResponse.setRenderParameter("mode", "list");
+            return;
+        }
+    }
+
+    protected void doView(RenderRequest renderRequest,
+            RenderResponse renderResponse) throws IOException, PortletException {
+        if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+            return;
+        }
+
+        List dependencies = helper.getDependencies(renderRequest);
+        // pass them to the render request
+        renderRequest.setAttribute("dependencies", (String[]) dependencies
+                .toArray(new String[dependencies.size()]));
+
+        String name = renderRequest.getParameter("name");
+        String mode = renderRequest.getParameter("mode");
+        String check = renderRequest.getParameter("check");
+
+        if (ADD_MODE.equals(mode)) {
+            addView.include(renderRequest, renderResponse);
+            return;
+        }
+
+        boolean test = false;
+        if (name == null || mode == null) {
+            mode = "list";
+        }
+        if ("true".equals(check)) {
+            test = true;
+        }
+        if ("detail".equals(mode) || "config".equals(mode)) {
+            renderDetail(renderRequest, renderResponse, name);
+        } else {
+            renderList(renderRequest, renderResponse, name, test);
+        }
+    }
+
+    private void renderList(RenderRequest renderRequest,
+            RenderResponse renderResponse, String name, boolean check)
+            throws PortletException, IOException {
+
+        Set gbeanNames = kernel.listGBeans(DATABASE_QUERY);
+        List connectionFactories = new ArrayList(gbeanNames.size());
+        for (Iterator i = gbeanNames.iterator(); i.hasNext();) {
+            ObjectName gbeanName = (ObjectName) i.next();
+
+            // check that this connector is a DataSource
+            try {
+                Class cfInterface = Class.forName((String) kernel.getAttribute(
+                        gbeanName, "connectionFactoryInterface"));
+                if (!(ConnectionFactory.class).isAssignableFrom(cfInterface)) {
+                    continue;
+                }
+            } catch (Exception e) {
+                throw new PortletException(e);
+            }
+
+            DataSourceInfo info = new DataSourceInfo();
+            info.setObjectName(gbeanName);
+            info.setName(gbeanName.getKeyProperty("name"));
+            try {
+                info.setState(new Integer(kernel.getGBeanState(gbeanName)));
+                //check if user asked this connection to be tested
+                if ((gbeanName.toString().equals(name)) && (check)) {
+                    info.setWorking(true);
+                    try {
+                        Object cf = kernel.invoke(gbeanName, "$getResource");
+                        testConnection(cf);
+                        info.setMessage("Connected");
+                    } catch (Exception e) {
+                        Throwable t = e;
+                        String message = "Failed: ";
+                        if (t.getMessage() != null) {
+                            message = message + t.getMessage();
+                        } else {
+                            while (t.getMessage() == null) {
+                                t = t.getCause();
+                                if (t != null) {
+                                    message = message + t.getMessage();
+                                } else {
+                                    message = message + "Unknown reason";
+                                }
+                            }
+                        }
+                        info.setMessage(message);
+                    }
+                } else {
+                    info.setWorking(false);
+                }
+
+            } catch (Exception e) {
+                throw new PortletException(e);
+            }
+            connectionFactories.add(info);
+        }
+        Collections.sort(connectionFactories);
+        renderRequest.setAttribute("cFactories", connectionFactories);
+
+        normalView.include(renderRequest, renderResponse);
+    }
+
+    private void renderDetail(RenderRequest renderRequest,
+            RenderResponse renderResponse, String name)
+            throws PortletException, IOException {
+        ObjectName gbeanName;
+
+        try {
+            gbeanName = new ObjectName(name);
+        } catch (MalformedObjectNameException e) {
+            throw new PortletException("Malformed parameter name: "
+                    + renderRequest.getParameter("name"));
+        }
+
+        try {
+            GBeanInfo gbeanInfo = kernel.getGBeanInfo(gbeanName);
+            Set attributes = gbeanInfo.getAttributes();
+            Map values = new HashMap(attributes.size());
+            for (Iterator i = attributes.iterator(); i.hasNext();) {
+                GAttributeInfo attribute = (GAttributeInfo) i.next();
+                String gname = attribute.getName();
+                if (HIDDEN_ATTRIBUTES.contains(gname)) {
+                    continue;
+                }
+                Object value = kernel.getAttribute(gbeanName, gname);
+                values.put(gname, value);
+            }
+            renderRequest.setAttribute("attributeMap", values);
+        } catch (Exception e) {
+            throw new PortletException(e);
+        }
+
+        detailView.include(renderRequest, renderResponse);
+    }
+
+    protected void doHelp(RenderRequest renderRequest,
+            RenderResponse renderResponse) throws PortletException, IOException {
+        helpView.include(renderRequest, renderResponse);
+    }
+
+    public void destroy() {
+        normalView = null;
+        helpView = null;
+        addView = null;
+        kernel = null;
+        super.destroy();
+    }
+
+    private String trimStr(String str) {
+        if (str != null) {
+            return str.trim();
+        }
+        return "";
+    }
+
+    protected void testConnection(Object cf) throws Exception {
+        ConnectionFactory jmscf = (ConnectionFactory) cf;
+        Connection c = jmscf.createConnection();
+        c.close();
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSConnectionFactoryManagerPortlet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,141 @@
+/**
+ *
+ * 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;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.jms.ConnectionFactory;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+
+import org.apache.geronimo.console.BasePortlet;
+import org.apache.geronimo.console.jmsmanager.handlers.CreateDestinationHandler;
+import org.apache.geronimo.console.jmsmanager.handlers.PortletResponseHandler;
+import org.apache.geronimo.console.jmsmanager.handlers.RemoveDestinationHandler;
+import org.apache.geronimo.console.jmsmanager.handlers.StatisticsHandler;
+import org.apache.geronimo.console.jmsmanager.renderers.CreateDestinationRenderer;
+import org.apache.geronimo.console.jmsmanager.renderers.PortletRenderer;
+import org.apache.geronimo.console.jmsmanager.renderers.StatisticsRenderer;
+import org.apache.geronimo.console.jmsmanager.renderers.ViewDLQRenderer;
+import org.apache.geronimo.console.jmsmanager.renderers.ViewDestinationsRenderer;
+import org.apache.geronimo.console.jmsmanager.renderers.ViewMessagesRenderer;
+
+public class JMSManagerPortlet extends BasePortlet {
+
+    private PortletRequestDispatcher edit;
+
+    private PortletRequestDispatcher help;
+
+    private ConnectionFactory cf;
+
+    private Map handlers;
+
+    private Map renderers;
+
+    private PortletContext context;
+
+    public void init(PortletConfig portletConfig) throws PortletException {
+        super.init(portletConfig);
+
+        context = portletConfig.getPortletContext();
+
+        help = context
+                .getRequestDispatcher("/WEB-INF/view/jmsmanager/help.jsp");
+        edit = context
+                .getRequestDispatcher("/WEB-INF/view/jmsmanager/edit.jsp");
+
+        renderers = new HashMap();
+        renderers.put("createDestination", new CreateDestinationRenderer());
+        renderers.put("viewDestinations", new ViewDestinationsRenderer());
+        renderers.put("statistics", new StatisticsRenderer());
+        renderers.put("viewMessages", new ViewMessagesRenderer());
+        renderers.put("viewDLQ", new ViewDLQRenderer());
+
+        handlers = new HashMap();
+        handlers.put("createDestination", new CreateDestinationHandler());
+        handlers.put("removeDestination", new RemoveDestinationHandler());
+        handlers.put("statistics", new StatisticsHandler());
+
+    }
+
+    public void doHelp(RenderRequest renderRequest,
+            RenderResponse renderResponse) throws PortletException, IOException {
+        help.include(renderRequest, renderResponse);
+    }
+
+    public void doView(RenderRequest renderRequest,
+            RenderResponse renderResponse) throws IOException, PortletException {
+
+        if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+            return;
+        }
+
+        String view = renderRequest.getParameter("processAction");
+        if (view == null) {
+            // no specific content requested - show the destinations list
+            view = "viewDestinations";
+        }
+
+        PortletRenderer renderer = (PortletRenderer) renderers.get(view);
+        if (renderer == null) {
+            throw new PortletException("Invalid view parameter specified: "
+                    + view);
+        }
+
+        String include = renderer.render(renderRequest, renderResponse);
+        if (include != null) {
+            PortletRequestDispatcher requestDispatcher = context
+                    .getRequestDispatcher(include);
+            requestDispatcher.include(renderRequest, renderResponse);
+        }
+
+    }
+
+    public void processAction(ActionRequest actionRequest,
+            ActionResponse actionResponse) throws PortletException, IOException {
+        String processAction = actionRequest.getParameter("processaction");
+
+        PortletResponseHandler handler = (PortletResponseHandler) handlers
+                .get(processAction);
+
+        if (handler == null) {
+            // throw new RuntimeException( "no handlers for processAction = " +
+            // processAction );
+            handler = (PortletResponseHandler) handlers.get("viewDestinations");
+        }
+
+        handler.processAction(actionRequest, actionResponse);
+    }
+
+    public void destroy() {
+
+        help = null;
+        edit = null;
+        super.destroy();
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/JMSManagerPortlet.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,200 @@
+/**
+ *
+ * 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.activemqCF;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.common.DeploymentException;
+import org.apache.geronimo.console.util.ObjectNameConstants;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.KernelRegistry;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.repository.ListableRepository;
+
+import javax.portlet.PortletRequest;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+public class ActiveMQConnectorHelper {
+    //todo: this class is horrible and needs to be burned!
+    private final static Log log = LogFactory.getLog(ActiveMQConnectorHelper.class);
+
+    private static String MODULE_FILE;
+
+    private final static String ACTIVEMQ_RAR = "repository/activemq/rars/activemq-ra-3.2.1.rar";
+
+    private static final String LINE_SEP = System.getProperty("line.separator");
+
+    private static final String PLAN_TEMPLATE = getPlanTemplate();
+
+    private static final String[] DEPLOYER_ARGS = { File.class.getName(),
+            File.class.getName() };
+
+    private static final String DEPLOY_METHOD = "deploy";
+
+    private static String getPlanTemplate() {
+        StringBuffer sb = new StringBuffer();
+        sb.append("<?xml version=\"1.0\"?>\n");
+        sb
+                .append("<connector xmlns=\"http://geronimo.apache.org/xml/ns/j2ee/connector-1.0\"\n");
+        sb.append("    configId=\"{0}\" parentId=\"{1}\">\n");
+        sb.append("  <resourceadapter>\n");
+        sb.append("    <resourceadapter-instance>\n");
+        sb.append("      <resourceadapter-name>{2}</resourceadapter-name>\n");
+        sb
+                .append("      <config-property-setting name=\"ServerUrl\">{3}</config-property-setting>\n");
+        sb
+                .append("      <config-property-setting name=\"UserName\">{4}</config-property-setting>\n");
+        sb
+                .append("      <config-property-setting name=\"Password\">{5}</config-property-setting>\n");
+        sb
+                .append("      <workmanager><gbean-link>DefaultWorkManager</gbean-link></workmanager>\n");
+        sb.append("    </resourceadapter-instance>\n");
+        sb.append("    <outbound-resourceadapter>\n");
+        sb.append("      <connection-definition>\n");
+        sb
+                .append("        <connectionfactory-interface>javax.jms.ConnectionFactory</connectionfactory-interface>\n");
+        sb.append("        <connectiondefinition-instance>\n");
+        sb.append("          <name>{6}</name>\n");
+        sb
+                .append("          <implemented-interface>javax.jms.QueueConnectionFactory</implemented-interface>\n");
+        sb
+                .append("          <implemented-interface>javax.jms.TopicConnectionFactory</implemented-interface>\n");
+        sb.append("          <connectionmanager>\n");
+        sb.append("            <xa-transaction>\n");
+        sb.append("              <transaction-caching/>\n");
+        sb.append("            </xa-transaction>\n");
+        sb.append("            <single-pool>\n");
+        sb.append("              <max-size>{7}</max-size>\n");
+        sb
+                .append("              <blocking-timeout-milliseconds>{8}</blocking-timeout-milliseconds>\n");
+        sb.append("              <match-one/>\n");
+        sb.append("            </single-pool>\n");
+        sb.append("          </connectionmanager>\n");
+        sb.append("        </connectiondefinition-instance>\n");
+        sb.append("      </connection-definition>\n");
+        sb.append("    </outbound-resourceadapter>\n");
+        sb.append("  </resourceadapter>\n");
+        sb.append("</connector>\n");
+
+        return sb.toString();
+    }
+
+    private void savePlan(File f, Object[] args) {
+        MessageFormat mf = new MessageFormat(PLAN_TEMPLATE);
+        String plan = mf.format(args);
+
+        try {
+            f.createNewFile();
+            FileOutputStream fos = new FileOutputStream(f);
+            OutputStreamWriter osw = new OutputStreamWriter(fos);
+            Writer out = new BufferedWriter(osw);
+            out.write(plan);
+            out.flush();
+            out.close();
+            osw.close();
+            fos.close();
+        } catch (Exception e) {
+            System.out.println("ERROR: Problem creating the plan file");
+            e.printStackTrace();
+        }
+    }
+
+    public void deployPlan(PortletRequest request, Object[] args) {
+        try {
+            File file = File.createTempFile("console-jms-connector-plan-", ".xml");
+            file.deleteOnExit();
+            savePlan(file, args);
+            if(MODULE_FILE == null) {
+                MODULE_FILE = PortletManager.getServerInfo(request).resolvePath(ACTIVEMQ_RAR);
+            }
+            deployPlan(new File(MODULE_FILE), file);
+        } catch (IOException e) {
+            log.error("Unable to write deployment plan", e);
+        }
+    }
+
+    public void deployPlan(File moduleFile, File planFile) {
+        try {
+            Kernel kernel = KernelRegistry.getSingleKernel();
+            List list = (List) kernel.invoke(ObjectNameConstants.DEPLOYER_OBJECT_NAME, DEPLOY_METHOD,
+                    new Object[] {moduleFile, planFile}, DEPLOYER_ARGS);
+            ConfigurationManager configurationManager = ConfigurationUtil
+                    .getConfigurationManager(kernel);
+            for (Iterator iterator = list.iterator(); iterator.hasNext();) {
+                URI configID = URI.create((String)iterator.next());
+                if (!configurationManager.isLoaded(configID)) {
+                    configurationManager.load(configID);
+                }
+
+                configurationManager.loadGBeans(configID);
+                configurationManager.start(configID);
+            }
+        } catch (DeploymentException e) {
+            StringBuffer buf = new StringBuffer(256);
+            Throwable cause = e;
+            while (cause != null) {
+                buf.append(cause.getMessage());
+                buf.append(LINE_SEP);
+                cause = cause.getCause();
+            }
+            System.out
+                    .println("ERROR: Problem deploying the ActiveMQ connector: "
+                            + buf.toString());
+            e.printStackTrace();
+        } catch (URISyntaxException e) {
+            System.out
+                    .println("ERROR: Newly installed app has invalid config ID");
+            e.printStackTrace();
+        } catch (Exception e) {
+            System.out.println("ERROR: Problem creating the datasource");
+            e.printStackTrace();
+        }
+    }
+
+    public List getDependencies(PortletRequest request) {
+        ListableRepository[] repo = PortletManager.getListableRepositories(request);
+        List dependencies = new ArrayList();
+        for (int i = 0; i < repo.length; i++) {
+            ListableRepository repository = repo[i];
+            try {
+                URI[] uris = repository.listURIs();
+                for (int j = 0; j < uris.length; j++) {
+                    URI uri = uris[j];
+                    dependencies.add(uri.toString());
+                }
+            } catch (URISyntaxException e) {
+                e.printStackTrace();
+            }
+        }
+
+        return dependencies;
+    }
+}
\ No newline at end of file

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/activemqCF/ActiveMQConnectorHelper.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,160 @@
+/**
+ *
+ * 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.handlers;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.connector.AdminObjectWrapper;
+import org.apache.geronimo.connector.AdminObjectWrapperGBean;
+import org.apache.geronimo.console.core.jms.TopicBrowserGBean;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.console.GeronimoVersion;
+import org.apache.geronimo.gbean.DynamicGAttributeInfo;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.config.ConfigurationData;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationModuleType;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+
+import javax.jms.Queue;
+import javax.jms.Topic;
+import javax.management.ObjectName;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+
+public class CreateDestinationHandler extends AbstractJMSManager implements PortletResponseHandler {
+    protected static Log log = LogFactory
+            .getLog(CreateDestinationHandler.class);
+
+    private static final List parentId = Arrays.asList(new URI[] {URI.create("geronimo/activemq-broker/" + GeronimoVersion.GERONIMO_VERSION + "/car")});
+
+    static final GBeanInfo QUEUE_INFO;
+
+    static final GBeanInfo TOPIC_INFO;
+
+    static {
+        GBeanInfoBuilder queueInfoBuilder = new GBeanInfoBuilder(
+                AdminObjectWrapper.class, AdminObjectWrapperGBean.GBEAN_INFO);
+        queueInfoBuilder.addAttribute(new DynamicGAttributeInfo("PhysicalName",
+                String.class.getName(), true, true, true, true));
+        QUEUE_INFO = queueInfoBuilder.getBeanInfo();
+        GBeanInfoBuilder topicInfoBuilder = new GBeanInfoBuilder(
+                AdminObjectWrapper.class, AdminObjectWrapperGBean.GBEAN_INFO);
+        topicInfoBuilder.addAttribute(new DynamicGAttributeInfo("PhysicalName",
+                String.class.getName(), true, true, true, true));
+        TOPIC_INFO = topicInfoBuilder.getBeanInfo();
+    }
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws IOException, PortletException {
+        String destinationName = request.getParameter(DESTINATION_NAME);
+        String destinationPhysicalName = request
+                .getParameter(DESTINATION_PHYSICAL_NAME);
+        String destinationType = request.getParameter(DESTINATION_TYPE);
+        String destinationApplicationName = request
+                .getParameter(DESTINATION_APPLICATION_NAME);
+        String destinationModuleName = request
+                .getParameter(DESTINATION_MODULE_NAME);
+        try {
+            ObjectName adminObjectName = NameFactory.getComponentName(null,
+                    null, destinationApplicationName, NameFactory.JCA_RESOURCE,
+                    destinationModuleName, destinationName, null, baseContext);
+
+            GBeanData adminObjectData;
+            if (Topic.class.getName().equals(destinationType)) {
+                adminObjectData = new GBeanData(adminObjectName, TOPIC_INFO);
+                adminObjectData.setAttribute("adminObjectInterface", "javax.jms.Topic");
+                adminObjectData.setAttribute("adminObjectClass", "org.activemq.message.ActiveMQTopic");
+            } else if (Queue.class.getName().equals(destinationType)) {
+                adminObjectData = new GBeanData(adminObjectName, QUEUE_INFO);
+                adminObjectData.setAttribute("adminObjectInterface", "javax.jms.Queue");
+                adminObjectData.setAttribute("adminObjectClass", "org.activemq.message.ActiveMQQueue.class");
+            } else {
+                throw new PortletException(
+                        "Invalid choice destination, must be FQCL of Topic or Queue, not "
+                                + destinationType);
+            }
+            adminObjectData.setAttribute("PhysicalName",
+                    destinationPhysicalName);
+
+            URI configId = new URI(BASE_CONFIG_URI + destinationName);
+
+            ConfigurationManager configurationManager = ConfigurationUtil
+                    .getConfigurationManager(kernel);
+            List stores = configurationManager.listStores();
+            assert stores.size() == 1 : "Piling one hack on another, this code only works with exactly one store";
+
+            ObjectName storeName = (ObjectName) stores.iterator().next();
+            File installDir = (File) kernel.invoke(storeName,
+                    "createNewConfigurationDir");
+            //DeploymentContext deploymentContext = new
+            // DeploymentContext(installDir, configId,
+            // ConfigurationModuleType.SERVICE, parentId, kernel);
+            ConfigurationData configData = new ConfigurationData();
+            configData.setId(configId);
+            configData.setParentId(parentId);
+            configData.setModuleType(ConfigurationModuleType.SERVICE);
+            //deploymentContext.addGBean(adminObjectData);
+            configData.addGBean(adminObjectData);
+            // If we are adding a topic we have to add a browser so we can view
+            // its messages later.
+            if (Topic.class.getName().equals(destinationType)) {
+                GBeanData tBrowserBeanData = new GBeanData(NameFactory
+                        .getComponentName(null, null,
+                                destinationApplicationName,
+                                NameFactory.JCA_RESOURCE,
+                                destinationModuleName, destinationName,
+                                "TopicBrowser", baseContext),
+                        TopicBrowserGBean.GBEAN_INFO);
+                tBrowserBeanData
+                        .setAttribute("subscriberName", destinationName);
+                tBrowserBeanData.setReferencePattern(
+                        "ConnectionFactoryWrapper", ObjectName
+                                .getInstance(CONNECTION_FACTORY_NAME));
+                tBrowserBeanData.setReferencePattern("TopicWrapper",
+                        adminObjectName);
+
+                configData.addGBean(tBrowserBeanData);
+            }
+
+            //saves it.
+            //deploymentContext.close();
+            kernel.invoke(storeName, "install", new Object[] {configData,
+                    installDir}, new String[] {
+                    ConfigurationData.class.getName(), File.class.getName() });
+
+            configurationManager.load(configId);
+            configurationManager.loadGBeans(configId);
+            configurationManager.start(configId);
+
+        } catch (Exception e) {
+            log.error("problem", e);
+        }
+        response.setRenderParameter("processAction", "viewDestinations");
+    }
+
+}
\ No newline at end of file

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+public interface PortletResponseHandler {
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws IOException, PortletException;
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,88 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.management.ObjectName;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.console.util.ObjectNameConstants;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.kernel.DependencyManager;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
+
+public class RemoveDestinationHandler extends AbstractJMSManager implements
+        PortletResponseHandler {
+
+    protected static Log log = LogFactory
+            .getLog(RemoveDestinationHandler.class);
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws IOException, PortletException {
+        String destinationConfigURIName = request
+                .getParameter(DESTINATION_CONFIG_URI);
+        try {
+            ConfigurationManager configurationManager = ConfigurationUtil
+                    .getConfigurationManager(kernel);
+            URI destinationConfigURI = new URI(destinationConfigURIName);
+            ObjectName configurationObjectName = Configuration.getConfigurationObjectName(destinationConfigURI);
+
+            List stores = configurationManager.listStores();
+            assert stores.size() == 1 :"Piling one hack on another, this code only works with exactly one store";
+            ObjectName storeName = (ObjectName) stores.iterator().next();
+
+            // Unsubscribe topicbrowser before uninstalling the configuration.
+            DependencyManager dm = kernel.getDependencyManager();
+            //GBeanData topicBrowser = (GBeanData) kernel.invoke(storeName,
+            // "getConfiguration", new Object[]{destinationConfigURI}, new
+            // String[]{URI.class.getName()});
+            GBeanData topicBrowser = kernel.getGBeanData(configurationObjectName);
+            java.util.Set children = dm.getChildren(topicBrowser.getName());
+            for (Iterator i = children.iterator(); i.hasNext();) {
+                ObjectName o = (ObjectName) i.next();
+                if ("TopicBrowser".equals(o.getKeyProperty("j2eeType"))) {
+                    kernel.invoke(o, "unsubscribe");
+                    break;
+                }
+            }
+
+            // Uninstall configuration
+            //kernel.stopConfiguration(destinationConfigURI);
+            kernel.stopGBean(configurationObjectName);
+            kernel.invoke(storeName, "uninstall",
+                    new Object[] {destinationConfigURI},
+                    new String[] {URI.class.getName()});
+        } catch (Exception e) {
+            log.error("problem removing destination: "
+                    + destinationConfigURIName, e);
+        }
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,45 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+
+public class StatisticsHandler extends AbstractJMSManager implements
+        PortletResponseHandler {
+
+    protected static Log log = LogFactory.getLog(StatisticsHandler.class);
+
+    public void processAction(ActionRequest request, ActionResponse response)
+            throws IOException, PortletException {
+        String destinationName = request.getParameter(DESTINATION_NAME);
+        String destinationType = request.getParameter(DESTINATION_TYPE);
+
+        response.setRenderParameter("destinationName", destinationName);
+        response.setRenderParameter("destinationType", destinationType);
+        response.setRenderParameter("processAction", "statistics");
+    }
+
+}
\ No newline at end of file

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,42 @@
+/**
+ *
+ * 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.renderers;
+
+import java.io.IOException;
+
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+
+public class CreateDestinationRenderer extends AbstractJMSManager implements
+        PortletRenderer {
+
+    protected static Log log = LogFactory
+            .getLog(CreateDestinationRenderer.class);
+
+    public String render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+
+        return "/WEB-INF/view/jmsmanager/createdestination.jsp";
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,31 @@
+/**
+ *
+ * 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.renderers;
+
+import java.io.IOException;
+
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+public interface PortletRenderer {
+
+    String render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException;
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,68 @@
+/**
+ *
+ * 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.renderers;
+
+import java.io.IOException;
+import java.util.Hashtable;
+
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+
+public class StatisticsRenderer extends AbstractJMSManager implements
+        PortletRenderer {
+
+    protected static Log log = LogFactory.getLog(StatisticsRenderer.class);
+
+    public String render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+
+        Hashtable statistics = getStatistics(request, response);
+
+        request.setAttribute("statistics", statistics);
+
+        return "/WEB-INF/view/jmsmanager/statistics.jsp";
+    }
+
+    public static Hashtable getStatistics(RenderRequest renderRequest,
+            RenderResponse renderResponse) throws IOException, PortletException {
+        String description = "My Descrition";
+        String currentDepth = "11";
+        String openInputCount = "1";
+        String openOutputCount = "1";
+        String inhibitGet = "false";
+        String inhibitPut = "false";
+        String sharable = "true";
+        String triggerControl = "false";
+        String maximumDepth = "10000";
+        String maximumMessageLength = "2342344";
+
+        String destinationName = renderRequest.getParameter("destinationName");
+        if (destinationName == null) {
+            destinationName = "";
+        }
+        Hashtable statsHash = new Hashtable();
+
+        return statsHash;
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,143 @@
+/**
+ *
+ * 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.renderers;
+
+import java.io.IOException;
+import java.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.Queue;
+import javax.jms.QueueBrowser;
+import javax.jms.Session;
+import javax.management.ObjectName;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.activemq.service.DeadLetterPolicy;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+
+public class ViewDLQRenderer extends AbstractJMSManager implements
+        PortletRenderer {
+
+    private Destination destination = null;
+
+    private Destination dlq = null;
+
+    private QueueBrowser dlqBrowser = null;
+
+    private Connection connection = null;
+
+    private Session session = null;
+
+    private String dlqName;
+
+    public ViewDLQRenderer() {
+    }
+
+    public void setup(RenderRequest request, RenderResponse response) {
+        String destinationApplicationName = request
+                .getParameter("destinationApplicationName");
+        String destinationModuleName = request
+                .getParameter("destinationModuleName");
+        String destinationName = request.getParameter("destinationName");
+
+        try {
+            ObjectName adminObjectName = NameFactory.getComponentName(null,
+                    null, destinationApplicationName, NameFactory.JCA_RESOURCE,
+                    destinationModuleName, destinationName, null, baseContext);
+            destination = (Destination) kernel.invoke(adminObjectName,
+                    "$getResource");
+            ConnectionFactory connectionFactory = (ConnectionFactory) kernel
+                    .invoke(ObjectName.getInstance(CONNECTION_FACTORY_NAME),
+                            "$getResource");
+            connection = connectionFactory.createConnection();
+            session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            DeadLetterPolicy dlp = new DeadLetterPolicy();
+
+            //dlqName =
+            // dlp.getDeadLetterNameFromDestination((ActiveMQDestination)
+            // destination);
+            // This is a hack to get around the fact that the code commented
+            // above throws a ClassCastException due to ClassLoader weirdness.
+            Field f = dlp.getClass().getDeclaredField(
+                    "deadLetterPerDestinationName");
+            f.setAccessible(true);
+            boolean deadLetterPerDestinationName = f.getBoolean(dlp);
+            f = dlp.getClass().getDeclaredField("deadLetterPrefix");
+            f.setAccessible(true);
+            String deadLetterPrefix = "" + f.get(dlp);
+            if (deadLetterPerDestinationName) {
+                dlqName = deadLetterPrefix
+                        + destination.getClass().getMethod("getPhysicalName",
+                                null).invoke(destination, null);
+            } else {
+                dlqName = deadLetterPrefix + deadLetterPrefix;
+            }
+
+            dlq = session.createQueue(dlqName);
+            dlqBrowser = session.createBrowser((Queue) dlq);
+
+            connection.start();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    public List getDLQContents(QueueBrowser qb) {
+
+        List list = new ArrayList();
+
+        try {
+            for (Enumeration e = qb.getEnumeration(); e.hasMoreElements();) {
+                Object o = e.nextElement();
+                list.add(o);
+            }
+
+            connection.stop();
+            dlqBrowser.close();
+            session.close();
+            connection.close();
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        return list;
+    }
+
+    public String render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+
+        setup(request, response);
+        List dlqContents = getDLQContents(dlqBrowser);
+        request.setAttribute("dlqcontents", dlqContents);
+        request.setAttribute("dlqname", dlqName);
+
+        return "/WEB-INF/view/jmsmanager/viewDLQ.jsp";
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.renderers;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.ObjectName;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.console.jmsmanager.DestinationInfo;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.DependencyManager;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.KernelRegistry;
+
+public class ViewDestinationsRenderer extends AbstractJMSManager implements
+        PortletRenderer {
+
+    protected static Log log = LogFactory
+            .getLog(ViewDestinationsRenderer.class);
+
+    public String render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+
+        List destinationList = getDestinationList(request, response);
+
+        request.setAttribute(DESTINATION_LIST, destinationList);
+
+        return "/WEB-INF/view/jmsmanager/view.jsp";
+    }
+
+    public List getDestinationList(RenderRequest request,
+            RenderResponse response) {
+        Kernel kernel = KernelRegistry.getSingleKernel();
+
+        Set destinations = kernel.listGBeans(DESTINATION_QUERY);
+        List destinationInfos = new ArrayList(destinations.size());
+        DependencyManager dm = kernel.getDependencyManager();
+        for (Iterator iterator = destinations.iterator(); iterator.hasNext();) {
+            ObjectName destinationName = (ObjectName) iterator.next();
+
+            try {
+                Class type;
+                try {
+                    type = Class.forName((String) kernel.getAttribute(
+                            destinationName, "adminObjectInterface"));
+                } catch (ClassCastException cce) {
+                    type = (Class) kernel.getAttribute(destinationName,
+                            "adminObjectInterface");
+                }
+                Set parents = dm.getParents(destinationName);
+                Iterator i = parents.iterator();
+                // If no parents this is a configuration we don't need those
+                // here.
+                if (!i.hasNext()) {
+                    continue;
+                }
+                ObjectName parent = (ObjectName) i.next();
+                String adminObjectName = destinationName
+                        .getKeyProperty(NameFactory.J2EE_NAME);
+                if (adminObjectName.equals("MDBTransferBeanOutQueue")
+                        || adminObjectName.equals("SendReceiveQueue")) {
+                    continue;
+                }
+                String configURI = parent.getKeyProperty("name");
+                if (configURI.startsWith("\"")) {
+                    configURI = configURI.substring(1);
+                }
+                if (configURI.endsWith("\"")) {
+                    configURI = configURI.substring(0, configURI.length() - 1);
+                }
+
+                DestinationInfo info = new DestinationInfo(adminObjectName,
+                        (String) kernel.getAttribute(destinationName,
+                                "PhysicalName"), type, destinationName
+                                .getKeyProperty(NameFactory.J2EE_APPLICATION),
+                        destinationName
+                                .getKeyProperty(NameFactory.JCA_RESOURCE),
+                        configURI);
+                destinationInfos.add(info);
+            } catch (Exception e) {
+                log.error(e);
+            }
+        }
+        Collections.sort(destinationInfos);
+        return destinationInfos;
+    }
+
+}

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain