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