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 [10/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/...

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,178 @@
+/**
+ *
+ * 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.Enumeration;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.Queue;
+import javax.jms.QueueBrowser;
+import javax.jms.QueueConnection;
+import javax.jms.QueueConnectionFactory;
+import javax.jms.QueueSession;
+import javax.jms.Topic;
+import javax.management.ObjectName;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+
+public class ViewMessagesRenderer extends AbstractJMSManager implements
+        PortletRenderer {
+
+    private static final TopicListener topicListener = new TopicListener();
+
+    public String render(RenderRequest request, RenderResponse response)
+            throws PortletException, IOException {
+        List messageList = getMessageList(request, response);
+        request.setAttribute("messages", messageList);
+        return "/WEB-INF/view/jmsmanager/viewmessages.jsp";
+    }
+
+    public List getMessageList(RenderRequest request, RenderResponse response)
+            throws PortletException {
+        String destinationApplicationName = request
+                .getParameter("destinationApplicationName");
+        String destinationModuleName = request
+                .getParameter("destinationModuleName");
+        String destinationName = request.getParameter("destinationName");
+
+        List ret = new ArrayList();
+        try {
+            ObjectName adminObjectName = NameFactory.getComponentName(null,
+                    null, destinationApplicationName, NameFactory.JCA_RESOURCE,
+                    destinationModuleName, destinationName, null, baseContext);
+            Destination dest = (Destination) kernel.invoke(adminObjectName,
+                    "$getResource");
+            if (dest instanceof Queue) {
+                Queue queue = (Queue) dest;
+                QueueConnectionFactory qConFactory = null;
+                QueueConnection qConnection = null;
+                QueueSession qSession = null;
+                QueueBrowser qBrowser = null;
+                try {
+                    qConFactory = (QueueConnectionFactory) kernel.invoke(
+                            ObjectName.getInstance(CONNECTION_FACTORY_NAME),
+                            "$getResource");
+                    qConnection = qConFactory.createQueueConnection();
+                    qSession = qConnection.createQueueSession(false,
+                            QueueSession.AUTO_ACKNOWLEDGE);
+                    qBrowser = qSession.createBrowser(queue);
+                    qConnection.start();
+                    for (Enumeration e = qBrowser.getEnumeration(); e
+                            .hasMoreElements();) {
+                        Object o = e.nextElement();
+                        ret.add(o);
+                    }
+                    qConnection.stop();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                } finally {
+                    try {
+                        if (qBrowser != null) {
+                            qBrowser.close();
+                        }
+                    } catch (JMSException ignore) {
+                    }
+                    try {
+                        if (qSession != null) {
+                            qSession.close();
+                        }
+                    } catch (JMSException ignore) {
+                    }
+                    try {
+                        if (qConnection != null) {
+                            qConnection.close();
+                        }
+                    } catch (JMSException ignore) {
+                    }
+                }
+            } else if (dest instanceof Topic) {
+                ObjectName tBrowserObjName = NameFactory.getComponentName(null,
+                        null, destinationApplicationName,
+                        NameFactory.JCA_RESOURCE, destinationModuleName,
+                        destinationName, "TopicBrowser", baseContext);
+                ret = (List) kernel.invoke(tBrowserObjName, "getMessages");
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return ret;
+    }
+
+    static class TopicListener implements MessageListener {
+        /**
+         * Hashtable to hold the messages for each topic. Messages are stored as
+         * Message/Topic key/value pairs.
+         */
+        private Map messagesMap = new Hashtable();
+
+        public final String name = this.toString();
+
+        public synchronized void onMessage(Message message) {
+            try {
+                Destination dest = message.getJMSDestination();
+                List messages = null;
+                if (!messagesMap.containsKey(dest)) {
+                    register((Topic) dest);
+                }
+                messages = (List) messagesMap.get(dest);
+
+                if (!messages.contains(message)) {
+                    messages.add(message);
+                }
+                messagesMap.put(dest, messages);
+            } catch (JMSException e) {
+                e.printStackTrace();
+            }
+        }
+
+        public void register(Topic topic) {
+            if (!messagesMap.containsKey(topic)) {
+                List messages = new ArrayList();
+                messagesMap.put(topic, messages);
+            }
+        }
+
+        public List getMessages(Topic topic) {
+            List ret;
+            if (messagesMap.containsKey(topic)) {
+                ret = (List) messagesMap.get(topic);
+            } else {
+                ret = Collections.EMPTY_LIST;
+            }
+            return Collections.unmodifiableList(ret);
+        }
+
+        public boolean isListeningTo(Topic topic) {
+            return messagesMap.containsKey(topic);
+        }
+    }
+
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/BaseJMSPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/BaseJMSPortlet.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/BaseJMSPortlet.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/BaseJMSPortlet.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,53 @@
+/**
+ *
+ * Copyright 2003-2004 The Apache Software Foundation
+ *
+ *  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.util.Map;
+import java.util.LinkedHashMap;
+import javax.portlet.RenderRequest;
+import javax.portlet.PortletException;
+import javax.management.ObjectName;
+import org.apache.geronimo.console.BasePortlet;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.management.geronimo.JMSBroker;
+import org.apache.geronimo.kernel.proxy.GeronimoManagedBean;
+
+/**
+ * Common methods for JMS portlets
+ *
+ * @version $Rev$ $Date$
+ */
+public class BaseJMSPortlet extends BasePortlet {
+    protected static Map getBrokerMap(RenderRequest renderRequest, String managerObjectName) throws PortletException {
+        JMSBroker[] brokers;
+        Map map = new LinkedHashMap();
+        try {
+            String[] names = PortletManager.getJMSBrokerNames(renderRequest, managerObjectName);
+            brokers = new JMSBroker[names.length];
+            for (int i = 0; i < names.length; i++) {
+                String name = names[i];
+                JMSBroker broker = PortletManager.getJMSBroker(renderRequest, name);
+                brokers[i] = broker;
+                ObjectName objectName = ObjectName.getInstance(name);
+                map.put(objectName.getKeyProperty("name"), broker);
+            }
+        } catch (Exception e) {
+            throw new PortletException(e);
+        }
+        return map;
+    }
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSBrokerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSBrokerPortlet.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSBrokerPortlet.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSBrokerPortlet.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,122 @@
+/**
+ *
+ * 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.Map;
+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 org.apache.geronimo.console.util.PortletManager;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Basic list of JMS brokers
+ *
+ * @version $Rev$ $Date$
+ */
+public class JMSBrokerPortlet extends BaseJMSPortlet {
+    private final static Log log = LogFactory.getLog(JMSBrokerPortlet.class);
+    private PortletRequestDispatcher normalView;
+
+    private PortletRequestDispatcher maximizedView;
+
+    private PortletRequestDispatcher helpView;
+
+    public void processAction(ActionRequest actionRequest,
+                              ActionResponse actionResponse) throws PortletException, IOException {
+        try {
+            String mode = actionRequest.getParameter("mode");
+            String name = actionRequest.getParameter("objectName");
+            if(mode.equals("start")) {
+                try {
+                    //todo: this only goes into the "starting" state, doesn't make it to "running" -- what's up with that?
+                    PortletManager.getManagedBean(actionRequest, name).startRecursive();
+                } catch (Exception e) {
+                    throw new PortletException(e);
+                }
+            } else if(mode.equals("stop")) {
+                try {
+                    PortletManager.getManagedBean(actionRequest, name).stop();
+                } catch (Exception e) {
+                    throw new PortletException(e);
+                }
+            } else if(mode.equals("edit")) {
+                //todo: is there anything to edit?
+            } else if(mode.equals("delete")) {
+                //todo: add a method to JMSManager to handle this
+            } else if(mode.equals("new")) {
+                //todo: add a method to JMSManager to handle this -- it needs to let you pick a configuration that has ActiveMQ on the path...
+            }
+            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 {
+        try {
+            if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+                return;
+            }
+            String managerName = PortletManager.getJMSManagerNames(renderRequest)[0];  //todo: handle multiple
+            Map map = getBrokerMap(renderRequest, managerName);
+            renderRequest.setAttribute("brokers", map.entrySet());
+            if (WindowState.NORMAL.equals(renderRequest.getWindowState())) {
+                normalView.include(renderRequest, renderResponse);
+            } else {
+                maximizedView.include(renderRequest, renderResponse);
+            }
+        } catch (Throwable e) {
+            log.error("Unable to render portlet", e);
+        }
+    }
+
+    protected void doHelp(RenderRequest renderRequest,
+                          RenderResponse renderResponse) throws PortletException, IOException {
+        helpView.include(renderRequest, renderResponse);
+    }
+
+    public void init(PortletConfig portletConfig) throws PortletException {
+        super.init(portletConfig);
+
+        normalView = portletConfig.getPortletContext().getRequestDispatcher(
+                "/WEB-INF/view/jmsmanager/server/normal.jsp");
+        maximizedView = portletConfig.getPortletContext().getRequestDispatcher(
+                "/WEB-INF/view/jmsmanager/server/maximized.jsp");
+        helpView = portletConfig.getPortletContext().getRequestDispatcher(
+                "/WEB-INF/view/jmsmanager/server/help.jsp");
+    }
+
+    public void destroy() {
+        helpView = null;
+        normalView = null;
+        maximizedView = null;
+        super.destroy();
+    }
+
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSConnectorPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSConnectorPortlet.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSConnectorPortlet.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/server/JMSConnectorPortlet.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,257 @@
+/**
+ *
+ * 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$ $Date$
+ */
+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;
+        }
+    }
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/AbstractHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/AbstractHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/AbstractHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/AbstractHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,627 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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.wizard;
+
+import javax.portlet.*;
+import javax.enterprise.deploy.spi.DeploymentManager;
+import javax.enterprise.deploy.spi.DeploymentConfiguration;
+import javax.enterprise.deploy.spi.Target;
+import javax.enterprise.deploy.spi.TargetModuleID;
+import javax.enterprise.deploy.spi.status.ProgressObject;
+import javax.enterprise.deploy.model.DDBeanRoot;
+import javax.enterprise.deploy.model.DDBean;
+import java.io.IOException;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.BufferedOutputStream;
+import java.io.FileOutputStream;
+import java.util.Properties;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.Iterator;
+import java.net.URL;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.console.MultiPageAbstractHandler;
+import org.apache.geronimo.console.MultiPageModel;
+import org.apache.geronimo.deployment.tools.loader.ConnectorDeployable;
+import org.apache.geronimo.connector.deployment.jsr88.Connector15DCBRoot;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectorDCB;
+import org.apache.geronimo.connector.deployment.jsr88.ResourceAdapter;
+import org.apache.geronimo.connector.deployment.jsr88.ResourceAdapterInstance;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectionDefinition;
+import org.apache.geronimo.connector.deployment.jsr88.ConnectionDefinitionInstance;
+import org.apache.geronimo.connector.deployment.jsr88.SinglePool;
+import org.apache.geronimo.connector.deployment.jsr88.AdminObjectDCB;
+import org.apache.geronimo.connector.deployment.jsr88.AdminObjectInstance;
+import org.apache.geronimo.naming.deployment.jsr88.GBeanLocator;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Base class for portlet helpers
+ *
+ * @version $Rev$ $Date$
+ */
+public abstract class AbstractHandler extends MultiPageAbstractHandler {
+    private final static Log log = LogFactory.getLog(AbstractHandler.class);
+    // ********** This part specific to JMS portlets **********
+
+    protected final static String LIST_MODE="list";
+    protected final static String SELECT_PROVIDER_MODE="provider";
+    protected final static String CONFIGURE_RA_MODE="ra";
+    protected final static String ADD_FACTORY_MODE="factory";
+    protected final static String SELECT_FACTORY_TYPE_MODE="factoryType";
+    protected final static String ADD_DESTINATION_MODE="destination";
+    protected final static String SELECT_DESTINATION_TYPE_MODE="destinationType";
+    protected final static String REVIEW_MODE="review";
+    protected final static String SHOW_PLAN_MODE="plan";
+    protected final static String DEPLOY_MODE="deploy";
+
+    protected final static String PROVIDER_PARAMETER="provider";
+    protected final static String RAR_FILE_PARAMETER="rar";
+    protected final static String DEPENDENCY_PARAMETER="dependency";
+    protected final static String INSTANCE_NAME_PARAMETER="instanceName";
+    protected final static String NAME_PARAMETER="name";
+    protected final static String CURRENT_FACTORY_PARAMETER="currentFactoryID";
+    protected final static String CURRENT_DEST_PARAMETER="currentDestinationID";
+    protected final static String FACTORY_TYPE_PARAMETER="factoryType";
+    protected final static String DEST_TYPE_PARAMETER="destinationType";
+    protected final static String TRANSACTION_PARAMETER="transaction";
+    protected final static String XA_TRANSACTION_PARAMETER="xaTransaction";
+    protected final static String XA_THREAD_PARAMETER="xaThread";
+    protected final static String MIN_SIZE_PARAMETER="poolMinSize";
+    protected final static String MAX_SIZE_PARAMETER="poolMaxSize";
+    protected final static String IDLE_TIME_PARAMETER="poolIdleTimeout";
+    protected final static String BLOCK_TIME_PARAMETER="poolBlockingTimeout";
+
+    public AbstractHandler(String mode, String viewName) {
+        super(mode, viewName);
+    }
+
+    public static class JMSResourceData implements MultiPageModel {
+        private String rarURI;
+        private String dependency;
+        private String instanceName;
+        private Properties instanceProps = new Properties();
+        private String workManager;
+        private int currentFactory = -1;
+        private int currentDestination = -1;
+        private int factoryType = -1;
+        private int destinationType = -1;
+        private List connectionFactories = new ArrayList();
+        private List adminObjects = new ArrayList();
+        // Used for editing an existing resource
+        private String objectName;
+
+        public JMSResourceData(PortletRequest request) {
+            Map map = request.getParameterMap();
+            rarURI = request.getParameter(RAR_FILE_PARAMETER);
+            dependency = request.getParameter(DEPENDENCY_PARAMETER);
+            instanceName = request.getParameter(INSTANCE_NAME_PARAMETER);
+            factoryType = isEmpty(request.getParameter(FACTORY_TYPE_PARAMETER)) ? -1 : Integer.parseInt(request.getParameter(FACTORY_TYPE_PARAMETER));
+            currentFactory = isEmpty(request.getParameter(CURRENT_FACTORY_PARAMETER)) ? -1 : Integer.parseInt(request.getParameter(CURRENT_FACTORY_PARAMETER));
+            destinationType = isEmpty(request.getParameter(DEST_TYPE_PARAMETER)) ? -1 : Integer.parseInt(request.getParameter(DEST_TYPE_PARAMETER));
+            currentDestination = isEmpty(request.getParameter(CURRENT_DEST_PARAMETER)) ? -1 : Integer.parseInt(request.getParameter(CURRENT_DEST_PARAMETER));
+            for(int i=0; i<20; i++) {
+                String key = "instance-config-" + i;
+                if(map.containsKey(key)) {
+                    instanceProps.setProperty(key, request.getParameter(key));
+                }
+            }
+            workManager = "DefaultWorkManager"; //todo
+            int index = 0;
+            while(true) {
+                String key = "factory."+(index++)+".";
+                if(!map.containsKey(key+FACTORY_TYPE_PARAMETER)) {
+                    break;
+                }
+                JMSConnectionFactoryData data = new JMSConnectionFactoryData();
+                data.load(request, key);
+                connectionFactories.add(data);
+            }
+            index = 0;
+            while(true) {
+                String key = "destination."+(index++)+".";
+                if(!map.containsKey(key+DEST_TYPE_PARAMETER)) {
+                    break;
+                }
+                JMSAdminObjectData data = new JMSAdminObjectData();
+                data.load(request, key);
+                adminObjects.add(data);
+            }
+            createIfNecessary();
+        }
+
+        public void createIfNecessary() {
+            while(currentFactory >= connectionFactories.size()) {
+                connectionFactories.add(new JMSConnectionFactoryData());
+            }
+            while(currentDestination >= adminObjects.size()) {
+                adminObjects.add(new JMSAdminObjectData());
+            }
+        }
+
+        public void save(ActionResponse response) {
+            if(!isEmpty(rarURI)) response.setRenderParameter(RAR_FILE_PARAMETER, rarURI);
+            if(!isEmpty(dependency)) response.setRenderParameter(DEPENDENCY_PARAMETER, dependency);
+            if(!isEmpty(instanceName)) response.setRenderParameter(INSTANCE_NAME_PARAMETER, instanceName);
+            for (Iterator it = instanceProps.entrySet().iterator(); it.hasNext();) {
+                Map.Entry entry = (Map.Entry) it.next();
+                if(!isEmpty((String)entry.getValue())) {
+                    response.setRenderParameter((String)entry.getKey(), (String)entry.getValue());
+                }
+            }
+            if(!isEmpty(workManager)) response.setRenderParameter("workManager", workManager);
+            response.setRenderParameter(FACTORY_TYPE_PARAMETER, Integer.toString(factoryType));
+            response.setRenderParameter(DEST_TYPE_PARAMETER, Integer.toString(destinationType));
+            response.setRenderParameter(CURRENT_DEST_PARAMETER, Integer.toString(currentDestination));
+            response.setRenderParameter(CURRENT_FACTORY_PARAMETER, Integer.toString(currentFactory));
+            for (int i = 0; i < connectionFactories.size(); i++) {
+                JMSConnectionFactoryData data = (JMSConnectionFactoryData) connectionFactories.get(i);
+                String key = "factory."+i+".";
+                data.save(response, key);
+            }
+            for (int i = 0; i < adminObjects.size(); i++) {
+                JMSAdminObjectData data = (JMSAdminObjectData) adminObjects.get(i);
+                String key = "destination."+i+".";
+                data.save(response, key);
+            }
+        }
+
+        public int getFactoryType() {
+            return factoryType;
+        }
+
+        public void setFactoryType(int factoryType) {
+            this.factoryType = factoryType;
+        }
+
+        public int getDestinationType() {
+            return destinationType;
+        }
+
+        public void setDestinationType(int destinationType) {
+            this.destinationType = destinationType;
+        }
+
+        public int getCurrentFactoryID() {
+            return currentFactory;
+        }
+
+        public void setCurrentFactoryID(int id) {
+            currentFactory = id;
+        }
+
+        public int getCurrentDestinationID() {
+            return currentDestination;
+        }
+
+        public void setCurrentDestinationID(int id) {
+            currentDestination = id;
+        }
+
+        public String getRarURI() {
+            return rarURI;
+        }
+
+        public void setRarURI(String rarURI) {
+            this.rarURI = rarURI;
+        }
+
+        public String getDependency() {
+            return dependency;
+        }
+
+        public void setDependency(String dependency) {
+            this.dependency = dependency;
+        }
+
+        public String getInstanceName() {
+            return instanceName;
+        }
+
+        public void setInstanceName(String instanceName) {
+            this.instanceName = instanceName;
+        }
+
+        public String getWorkManager() {
+            return workManager;
+        }
+
+        public void setWorkManager(String workManager) {
+            this.workManager = workManager;
+        }
+
+        public Properties getInstanceProps() {
+            return instanceProps;
+        }
+
+        public List getConnectionFactories() {
+            return connectionFactories;
+        }
+
+        public List getAdminObjects() {
+            return adminObjects;
+        }
+
+        public JMSConnectionFactoryData getCurrentFactory() {
+            return (JMSConnectionFactoryData) connectionFactories.get(currentFactory);
+        }
+
+        public JMSAdminObjectData getCurrentDestination() {
+            return (JMSAdminObjectData) adminObjects.get(currentDestination);
+        }
+
+        public int getConnectionFactoryCount() {
+            return connectionFactories.size();
+        }
+
+        public int getDestinationCount() {
+            return adminObjects.size();
+        }
+    }
+
+    public static class JMSConnectionFactoryData {
+        private int factoryType;
+        private String instanceName;
+        private String transaction; //none, local, xa
+        private boolean xaTransactionCaching;
+        private boolean xaThreadCaching;
+        private Integer poolMinSize;
+        private Integer poolMaxSize;
+        private Integer poolBlockingTimeout;
+        private Integer poolIdleTimeout;
+        private Properties instanceProps = new Properties();
+
+        public void load(PortletRequest request, String prefix) {
+            factoryType = isEmpty(request.getParameter(prefix+FACTORY_TYPE_PARAMETER)) ? -1 : Integer.parseInt(request.getParameter(prefix+FACTORY_TYPE_PARAMETER));
+            instanceName = request.getParameter(prefix+INSTANCE_NAME_PARAMETER);
+            transaction = request.getParameter(prefix+TRANSACTION_PARAMETER);
+            xaThreadCaching = !isEmpty(request.getParameter(prefix+XA_THREAD_PARAMETER)) && request.getParameter(prefix+XA_THREAD_PARAMETER).equals("true");
+            xaTransactionCaching = isEmpty(request.getParameter(prefix+XA_TRANSACTION_PARAMETER)) || request.getParameter(prefix+XA_TRANSACTION_PARAMETER).equals("true");
+            poolMinSize = isEmpty(request.getParameter(prefix+MIN_SIZE_PARAMETER)) ? null : new Integer(request.getParameter(prefix+MIN_SIZE_PARAMETER));
+            poolMaxSize = isEmpty(request.getParameter(prefix+MAX_SIZE_PARAMETER)) ? null : new Integer(request.getParameter(prefix+MAX_SIZE_PARAMETER));
+            poolIdleTimeout = isEmpty(request.getParameter(prefix+IDLE_TIME_PARAMETER)) ? null : new Integer(request.getParameter(prefix+IDLE_TIME_PARAMETER));
+            poolBlockingTimeout = isEmpty(request.getParameter(prefix+BLOCK_TIME_PARAMETER)) ? null : new Integer(request.getParameter(prefix+BLOCK_TIME_PARAMETER));
+            Map map = request.getParameterMap();
+            for(int i=0; i<20; i++) {
+                String key = prefix+"instance-config-" + i;
+                if(map.containsKey(key)) {
+                    instanceProps.setProperty(key.substring(prefix.length()), request.getParameter(key));
+                }
+            }
+        }
+
+        public void save(ActionResponse response, String prefix) {
+            if(factoryType > -1) response.setRenderParameter(prefix+FACTORY_TYPE_PARAMETER, Integer.toString(factoryType));
+            if(!isEmpty(instanceName)) response.setRenderParameter(prefix+INSTANCE_NAME_PARAMETER, instanceName);
+            if(!isEmpty(transaction)) response.setRenderParameter(prefix+TRANSACTION_PARAMETER, transaction);
+            response.setRenderParameter(prefix+XA_THREAD_PARAMETER, Boolean.toString(xaThreadCaching));
+            response.setRenderParameter(prefix+XA_TRANSACTION_PARAMETER, Boolean.toString(xaTransactionCaching));
+            if(poolMinSize != null) response.setRenderParameter(prefix+MIN_SIZE_PARAMETER, poolMinSize.toString());
+            if(poolMaxSize != null) response.setRenderParameter(prefix+MAX_SIZE_PARAMETER, poolMaxSize.toString());
+            if(poolBlockingTimeout != null) response.setRenderParameter(prefix+BLOCK_TIME_PARAMETER, poolBlockingTimeout.toString());
+            if(poolIdleTimeout != null) response.setRenderParameter(prefix+IDLE_TIME_PARAMETER, poolIdleTimeout.toString());
+            for (Iterator it = instanceProps.entrySet().iterator(); it.hasNext();) {
+                Map.Entry entry = (Map.Entry) it.next();
+                if(!isEmpty((String)entry.getValue())) {
+                    response.setRenderParameter(prefix+entry.getKey(), (String)entry.getValue());
+                }
+            }
+        }
+
+        public int getFactoryType() {
+            return factoryType;
+        }
+
+        public void setFactoryType(int factoryType) {
+            this.factoryType = factoryType;
+        }
+
+        public String getInstanceName() {
+            return instanceName;
+        }
+
+        public void setInstanceName(String instanceName) {
+            this.instanceName = instanceName;
+        }
+
+        public String getTransaction() {
+            return transaction;
+        }
+
+        public void setTransaction(String transaction) {
+            this.transaction = transaction;
+        }
+
+        public boolean isXaTransactionCaching() {
+            return xaTransactionCaching;
+        }
+
+        public void setXaTransactionCaching(boolean xaTransactionCaching) {
+            this.xaTransactionCaching = xaTransactionCaching;
+        }
+
+        public boolean isXaThreadCaching() {
+            return xaThreadCaching;
+        }
+
+        public void setXaThreadCaching(boolean xaThreadCaching) {
+            this.xaThreadCaching = xaThreadCaching;
+        }
+
+        public Integer getPoolMinSize() {
+            return poolMinSize;
+        }
+
+        public void setPoolMinSize(Integer poolMinSize) {
+            this.poolMinSize = poolMinSize;
+        }
+
+        public Integer getPoolMaxSize() {
+            return poolMaxSize;
+        }
+
+        public void setPoolMaxSize(Integer poolMaxSize) {
+            this.poolMaxSize = poolMaxSize;
+        }
+
+        public Integer getPoolBlockingTimeout() {
+            return poolBlockingTimeout;
+        }
+
+        public void setPoolBlockingTimeout(Integer poolBlockingTimeout) {
+            this.poolBlockingTimeout = poolBlockingTimeout;
+        }
+
+        public Integer getPoolIdleTimeout() {
+            return poolIdleTimeout;
+        }
+
+        public void setPoolIdleTimeout(Integer poolIdleTimeout) {
+            this.poolIdleTimeout = poolIdleTimeout;
+        }
+
+        public Properties getInstanceProps() {
+            return instanceProps;
+        }
+    }
+
+    public static class JMSAdminObjectData {
+        private int destinationType;
+        private String name;
+        private Properties instanceProps = new Properties();
+
+        public void load(PortletRequest request, String prefix) {
+            destinationType = isEmpty(request.getParameter(prefix+DEST_TYPE_PARAMETER)) ? -1 : Integer.parseInt(request.getParameter(prefix+DEST_TYPE_PARAMETER));
+            name = request.getParameter(prefix+NAME_PARAMETER);
+            Map map = request.getParameterMap();
+            for(int i=0; i<20; i++) {
+                String key = prefix+"instance-config-" + i;
+                if(map.containsKey(key)) {
+                    instanceProps.setProperty(key.substring(prefix.length()), request.getParameter(key));
+                }
+            }
+        }
+
+        public void save(ActionResponse response, String prefix) {
+            if(destinationType > -1) response.setRenderParameter(prefix+DEST_TYPE_PARAMETER, Integer.toString(destinationType));
+            if(!isEmpty(name)) response.setRenderParameter(prefix+NAME_PARAMETER, name);
+            for (Iterator it = instanceProps.entrySet().iterator(); it.hasNext();) {
+                Map.Entry entry = (Map.Entry) it.next();
+                if(!isEmpty((String)entry.getValue())) {
+                    response.setRenderParameter(prefix+entry.getKey(), (String)entry.getValue());
+                }
+            }
+        }
+
+        public int getDestinationType() {
+            return destinationType;
+        }
+
+        public void setDestinationType(int destinationType) {
+            this.destinationType = destinationType;
+        }
+
+        public String getName() {
+            return name;
+        }
+
+        public void setName(String name) {
+            this.name = name;
+        }
+
+        public Properties getInstanceProps() {
+            return instanceProps;
+        }
+    }
+
+    private static String getPropertyName(String propertyKey, JMSProviderData.ConfigPropertyData[] configs) {
+        int pos = propertyKey.lastIndexOf('-');
+        String num = propertyKey.substring(pos+1);
+        return configs[Integer.parseInt(num)].getName();
+    }
+
+    protected static String save(PortletRequest request, ActionResponse response, JMSResourceData data, boolean planOnly) throws IOException {
+        JMSProviderData provider = JMSProviderData.getProviderData(data.rarURI, request);
+        if(data.objectName == null || data.objectName.equals("")) { // we're creating a new pool
+            //data.instanceName = data.instanceName.replaceAll("\\s", "");
+            DeploymentManager mgr = PortletManager.getDeploymentManager(request);
+            try {
+                URL url = PortletManager.getRepositoryEntry(request, data.getRarURI());
+                String str = url.toString();
+                if(str.indexOf(' ') > -1) {
+                    url = new URL(str.replaceAll(" ", "%20")); // try to avoid problems with spaces in path on Windows
+                }
+                ConnectorDeployable deployable = new ConnectorDeployable(url);
+                DeploymentConfiguration config = mgr.createConfiguration(deployable);
+                final DDBeanRoot ddBeanRoot = deployable.getDDBeanRoot();
+                Connector15DCBRoot root = (Connector15DCBRoot) config.getDConfigBeanRoot(ddBeanRoot);
+                ConnectorDCB connector = (ConnectorDCB) root.getDConfigBean(ddBeanRoot.getChildBean(root.getXpaths()[0])[0]);
+                connector.setConfigID("console-jms-"+data.instanceName);
+                if(!isEmpty(data.dependency)) {
+                    connector.setParentID(data.dependency);
+                }
+
+                // Basic settings on RA plan and RA instance
+                ResourceAdapter ra;
+                if(connector.getResourceAdapter().length > 0) {
+                    ra = connector.getResourceAdapter(0);
+                } else {
+                    ra = new ResourceAdapter();
+                    connector.setResourceAdapter(new ResourceAdapter[]{ra});
+                }
+                ResourceAdapterInstance raInstance = new ResourceAdapterInstance();
+                ra.setResourceAdapterInstance(raInstance);
+                raInstance.setResourceAdapterName(data.instanceName);
+                for (Iterator it = data.instanceProps.entrySet().iterator(); it.hasNext();) {
+                    Map.Entry entry = (Map.Entry) it.next();
+                    String name = getPropertyName((String)entry.getKey(), provider.getInstanceConfigProperties());
+                    for(int i=0; i<raInstance.getConfigPropertySetting().length; i++) {
+                        if(raInstance.getConfigPropertySetting(i).getName().equals(name)) {
+                            raInstance.getConfigPropertySetting(i).setValue((String)entry.getValue());
+                            break;
+                        }
+                    }
+                }
+                GBeanLocator workManager = new GBeanLocator();
+                raInstance.setWorkManager(workManager);
+                workManager.setGBeanLink(data.workManager); //todo
+                // Connection Factories
+                if(data.getConnectionFactoryCount() > 0) {
+                    ConnectionDefinition[] defs = new ConnectionDefinition[data.getConnectionFactoryCount()];
+                    for (int i = 0; i < defs.length; i++) {
+                        defs[i] = new ConnectionDefinition();
+                    }
+                    ra.setConnectionDefinition(defs);
+                    for (int i = 0; i < data.getConnectionFactories().size(); i++) {
+                        JMSConnectionFactoryData factoryData = (JMSConnectionFactoryData) data.getConnectionFactories().get(i);
+                        JMSProviderData.ConnectionDefinition providerData = provider.getConnectionDefinitions()[factoryData.getFactoryType()];
+                        ConnectionDefinition def = defs[i];
+                        def.setConnectionFactoryInterface(providerData.getConnectionFactoryInterface());
+                        ConnectionDefinitionInstance instance = new ConnectionDefinitionInstance();
+                        def.setConnectionInstance(new ConnectionDefinitionInstance[]{instance});
+                        if(providerData.getConnectionFactoryInterface().equals("javax.jms.ConnectionFactory")) {
+                            instance.setImplementedInterface(new String[]{"javax.jms.QueueConnectionFactory","javax.jms.TopicConnectionFactory"});
+                        }
+                        instance.setName(factoryData.getInstanceName());
+                        SinglePool pool = new SinglePool();
+                        instance.getConnectionManager().setPoolSingle(pool);
+                        pool.setMatchOne(true);
+                        pool.setMaxSize(factoryData.getPoolMaxSize());
+                        pool.setMinSize(factoryData.getPoolMinSize());
+                        pool.setBlockingTimeoutMillis(factoryData.getPoolBlockingTimeout());
+                        pool.setIdleTimeoutMinutes(factoryData.getPoolIdleTimeout());
+                        if(factoryData.getTransaction().equals("none")) {
+                            instance.getConnectionManager().setTransactionNone(true);
+                        } else if(factoryData.getTransaction().equals("local")) {
+                            instance.getConnectionManager().setTransactionLocal(true);
+                        } else if(factoryData.getTransaction().equals("xa")) {
+                            instance.getConnectionManager().setTransactionXA(true);
+                            instance.getConnectionManager().setTransactionXACachingThread(factoryData.isXaThreadCaching());
+                            instance.getConnectionManager().setTransactionXACachingTransaction(factoryData.isXaTransactionCaching());
+                        }
+                        for (Iterator it = factoryData.instanceProps.entrySet().iterator(); it.hasNext();) {
+                            Map.Entry entry = (Map.Entry) it.next();
+                            String name = getPropertyName((String)entry.getKey(), providerData.getConfigProperties());
+                            for(int j=0; j<instance.getConfigPropertySetting().length; j++) {
+                                if(instance.getConfigPropertySetting(j).getName().equals(name)) {
+                                    instance.getConfigPropertySetting(j).setValue((String)entry.getValue());
+                                    break;
+                                }
+                            }
+                        }
+                    }
+                }
+
+                // Destinations
+                DDBean[] ddBeans = connector.getDDBean().getChildBean(connector.getXpaths()[0]);
+                AdminObjectDCB[] adminDCBs = new AdminObjectDCB[ddBeans.length];
+                for (int i = 0; i < adminDCBs.length; i++) {
+                    adminDCBs[i] = (AdminObjectDCB) connector.getDConfigBean(ddBeans[i]);
+                }
+                for (int i = 0; i < data.getAdminObjects().size(); i++) {
+                    JMSAdminObjectData admin = (JMSAdminObjectData) data.getAdminObjects().get(i);
+                    JMSProviderData.AdminObjectDefinition providerData = provider.getAdminObjectDefinitions()[admin.getDestinationType()];
+                    for (int j = 0; j < adminDCBs.length; j++) {
+                        AdminObjectDCB adminDCB = adminDCBs[j];
+                        if(adminDCB.getAdminObjectInterface().equals(providerData.getAdminObjectInterface())) {
+                            AdminObjectInstance[] before = adminDCB.getAdminObjectInstance();
+                            AdminObjectInstance[] after = new AdminObjectInstance[before.length+1];
+                            System.arraycopy(before, 0, after, 0, before.length);
+                            AdminObjectInstance instance = new AdminObjectInstance();
+                            after[before.length] = instance;
+                            adminDCB.setAdminObjectInstance(after);
+                            instance.setMessageDestinationName(admin.getName());
+                            for (Iterator it = admin.instanceProps.entrySet().iterator(); it.hasNext();) {
+                                Map.Entry entry = (Map.Entry) it.next();
+                                String name = getPropertyName((String)entry.getKey(), providerData.getConfigProperties());
+                                for(int k=0; k<instance.getConfigPropertySetting().length; k++) {
+                                    if(instance.getConfigPropertySetting(k).getName().equals(name)) {
+                                        instance.getConfigPropertySetting(k).setValue((String)entry.getValue());
+                                        break;
+                                    }
+                                }
+                            }
+                            break;
+                        }
+                    }
+                }
+
+                // Save
+                if(planOnly) {
+                    ByteArrayOutputStream out = new ByteArrayOutputStream();
+                    config.save(out);
+                    out.close();
+                    return new String(out.toByteArray(), "US-ASCII");
+                } else {
+                    File tempFile = File.createTempFile("console-deployment",".xml");
+                    tempFile.deleteOnExit();
+                    log.debug("Writing JMS Resource deployment plan to "+tempFile.getAbsolutePath());
+                    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(tempFile));
+                    config.save(out);
+                    out.flush();
+                    out.close();
+                    Target[] targets = mgr.getTargets();
+                    ProgressObject po = mgr.distribute(targets, new File(url.getPath()), tempFile);
+                    waitForProgress(po);
+                    if(po.getDeploymentStatus().isCompleted()) {
+                        TargetModuleID[] ids = po.getResultTargetModuleIDs();
+                        po = mgr.start(ids);
+                        waitForProgress(po);
+                        if(po.getDeploymentStatus().isCompleted()) {
+                            ids = po.getResultTargetModuleIDs();
+                            System.out.println("Deployment completed successfully!");
+                        }
+                    }
+                }
+            } catch (Exception e) {
+                log.error("Unable to save connection pool", e);
+            } finally {
+                if(mgr != null) mgr.release();
+            }
+        } else { // We're saving updates to an existing pool
+            if(planOnly) {
+                throw new UnsupportedOperationException("Can't update a plan for an existing deployment");
+            }
+            throw new UnsupportedOperationException("Can't edit existing configurations yet");
+        }
+        return null;
+    }
+}
+

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/ConfigureRAInstanceHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/ConfigureRAInstanceHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/ConfigureRAInstanceHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/ConfigureRAInstanceHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,61 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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.wizard;
+
+import org.apache.geronimo.console.MultiPageModel;
+
+import java.io.IOException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+/**
+ * Handler for the screen that configures a resource adapter instance.
+ *
+ * @version $Rev$ $Date$
+ */
+public class ConfigureRAInstanceHandler extends AbstractHandler {
+    public ConfigureRAInstanceHandler() {
+        super(CONFIGURE_RA_MODE, "/WEB-INF/view/jmswizard/raInstance.jsp");
+    }
+
+    public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        return getMode();
+    }
+
+    public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        JMSProviderData provider = JMSProviderData.getProviderData(data.getRarURI(), request);
+        request.setAttribute("provider", provider);
+    }
+
+    public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        if(isEmpty(data.getInstanceName())) {
+            return getMode()+BEFORE_ACTION;
+        }
+        String next = request.getParameter("nextAction");
+        if(next.equals(SELECT_DESTINATION_TYPE_MODE)) {
+            data.setCurrentDestinationID(data.getAdminObjects().size());
+        } else if(next.equals(SELECT_FACTORY_TYPE_MODE)) {
+            data.setCurrentFactoryID(data.getConnectionFactories().size());
+        }
+        return next+BEFORE_ACTION;
+    }
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateConnectionFactoryHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateConnectionFactoryHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateConnectionFactoryHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateConnectionFactoryHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,71 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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.wizard;
+
+import org.apache.geronimo.console.MultiPageModel;
+
+import java.io.IOException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+/**
+ * Handler for the screen that creates a new connection factory
+ *
+ * @version $Rev$ $Date$
+ */
+public class CreateConnectionFactoryHandler extends AbstractHandler {
+    public CreateConnectionFactoryHandler() {
+        super(ADD_FACTORY_MODE, "/WEB-INF/view/jmswizard/factory.jsp");
+    }
+
+    public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        data.getCurrentFactory().setFactoryType(data.getFactoryType());
+        return getMode();
+    }
+
+    public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        JMSProviderData provider = JMSProviderData.getProviderData(data.getRarURI(), request);
+        request.setAttribute("provider", provider);
+    }
+
+    public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        if(isEmpty(data.getCurrentFactory().getInstanceName())) {
+            return getMode();
+        }
+        if(data.getCurrentFactory().getTransaction().equals("xa")) {
+            data.getCurrentFactory().setXaThreadCaching(false);
+            data.getCurrentFactory().setXaTransactionCaching(true);
+        } else {
+            data.getCurrentFactory().setXaThreadCaching(false);
+            data.getCurrentFactory().setXaTransactionCaching(false);
+        }
+        // todo: process interface parameters
+        String next = request.getParameter("nextAction");
+        if(next.equals(SELECT_DESTINATION_TYPE_MODE)) {
+            data.setCurrentDestinationID(data.getAdminObjects().size());
+        } else if(next.equals(SELECT_FACTORY_TYPE_MODE)) {
+            data.setCurrentFactoryID(data.getConnectionFactories().size());
+        }
+        return next+BEFORE_ACTION;
+    }
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateDestinationHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateDestinationHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateDestinationHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/CreateDestinationHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,63 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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.wizard;
+
+import org.apache.geronimo.console.MultiPageModel;
+
+import java.io.IOException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+/**
+ * Handler for the screen that creates a new connection factory
+ *
+ * @version $Rev$ $Date$
+ */
+public class CreateDestinationHandler extends AbstractHandler {
+    public CreateDestinationHandler() {
+        super(ADD_DESTINATION_MODE, "/WEB-INF/view/jmswizard/destination.jsp");
+    }
+
+    public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        data.getCurrentDestination().setDestinationType(data.getDestinationType());
+        return getMode();
+    }
+
+    public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        JMSProviderData provider = JMSProviderData.getProviderData(data.getRarURI(), request);
+        request.setAttribute("provider", provider);
+    }
+
+    public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        if(isEmpty(data.getCurrentDestination().getName())) {
+            return getMode();
+        }
+        String next = request.getParameter("nextAction");
+        if(next.equals(SELECT_DESTINATION_TYPE_MODE)) {
+            data.setCurrentDestinationID(data.getAdminObjects().size());
+        } else if(next.equals(SELECT_FACTORY_TYPE_MODE)) {
+            data.setCurrentFactoryID(data.getConnectionFactories().size());
+        }
+        return next+BEFORE_ACTION;
+    }
+}

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

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

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

Added: geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/DeployHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/DeployHandler.java?rev=393787&view=auto
==============================================================================
--- geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/DeployHandler.java (added)
+++ geronimo/trunk/applications/console/console-standard/src/java/org/apache/geronimo/console/jmsmanager/wizard/DeployHandler.java Thu Apr 13 04:34:08 2006
@@ -0,0 +1,50 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  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.wizard;
+
+import java.io.IOException;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import org.apache.geronimo.console.util.PortletManager;
+import org.apache.geronimo.console.MultiPageModel;
+
+/**
+ * Can deploy a JMS resource into the server.  There currently no UI associated with this.
+ *
+ * @version $Rev$ $Date$
+ */
+public class DeployHandler extends AbstractHandler {
+    public DeployHandler() {
+        super(DEPLOY_MODE, null);
+    }
+
+    public String actionBeforeView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        JMSResourceData data = (JMSResourceData) model;
+        save(request, response, data, false);
+        return LIST_MODE;
+    }
+
+    public void renderView(RenderRequest request, RenderResponse response, MultiPageModel model) throws PortletException, IOException {
+    }
+
+    public String actionAfterView(ActionRequest request, ActionResponse response, MultiPageModel model) throws PortletException, IOException {
+        return LIST_MODE;
+    }
+}

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

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

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