KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > geronimo > console > jmsmanager > server > JMSConnectorPortlet


1 /**
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements. See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License. You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */

17 package org.apache.geronimo.console.jmsmanager.server;
18
19 import java.io.IOException JavaDoc;
20 import java.util.List JavaDoc;
21 import java.util.ArrayList JavaDoc;
22 import java.net.URI JavaDoc;
23
24 import javax.portlet.PortletRequestDispatcher;
25 import javax.portlet.ActionRequest;
26 import javax.portlet.ActionResponse;
27 import javax.portlet.PortletException;
28 import javax.portlet.RenderRequest;
29 import javax.portlet.RenderResponse;
30 import javax.portlet.WindowState;
31 import javax.portlet.PortletConfig;
32 import javax.portlet.PortletContext;
33 import org.apache.geronimo.console.util.PortletManager;
34 import org.apache.geronimo.kernel.proxy.GeronimoManagedBean;
35 import org.apache.geronimo.management.geronimo.JMSConnector;
36 import org.apache.geronimo.management.geronimo.JMSManager;
37 import org.apache.geronimo.management.geronimo.JMSBroker;
38 import org.apache.geronimo.gbean.AbstractName;
39 import org.apache.commons.logging.Log;
40 import org.apache.commons.logging.LogFactory;
41
42 /**
43  * List, edit, add, remove JMS network connectors
44  *
45  * @version $Rev: 476321 $ $Date: 2006-11-17 16:18:49 -0500 (Fri, 17 Nov 2006) $
46  */

47 public class JMSConnectorPortlet extends BaseJMSPortlet {
48     private final static Log log = LogFactory.getLog(JMSConnectorPortlet.class);
49
50     private PortletRequestDispatcher normalView;
51
52     private PortletRequestDispatcher maximizedView;
53
54     private PortletRequestDispatcher helpView;
55
56     protected PortletRequestDispatcher editView;
57
58     public void processAction(ActionRequest actionRequest,
59                               ActionResponse actionResponse) throws PortletException, IOException JavaDoc {
60         try {
61             String JavaDoc mode = actionRequest.getParameter("mode");
62             String JavaDoc connectorURI = actionRequest.getParameter("connectorURI");
63             String JavaDoc brokerURI = actionRequest.getParameter("brokerURI");
64             JMSManager manager = PortletManager.getCurrentServer(actionRequest).getJMSManagers()[0]; //todo: handle multiple
65
if(mode.equals("new")) {
66                 // User selected to add a new connector, need to show criteria portlet
67
actionResponse.setRenderParameter("mode", "new");
68                 String JavaDoc protocol = actionRequest.getParameter("protocol");
69                 actionResponse.setRenderParameter("protocol", protocol);
70                 actionResponse.setRenderParameter("brokerURI", brokerURI);
71             } else if(mode.equals("add")) { // User just submitted the form to add a new connector
72
// Get submitted values
73
//todo: lots of validation
74
String JavaDoc protocol = actionRequest.getParameter("protocol");
75                 String JavaDoc host = actionRequest.getParameter("host");
76                 int port = Integer.parseInt(actionRequest.getParameter("port"));
77                 String JavaDoc name = actionRequest.getParameter("name");
78                 AbstractName brokerAbstractName = new AbstractName(URI.create(brokerURI));
79                 // Create and configure the connector
80
JMSConnector connector = PortletManager.createJMSConnector(actionRequest, manager, brokerAbstractName, name, protocol, host, port);
81                 // Start the connector
82
try {
83                     ((GeronimoManagedBean)connector).startRecursive();
84                 } catch (Exception JavaDoc e) {
85                     log.error("Unable to start connector", e); //todo: get into rendered page somehow?
86
}
87                 actionResponse.setRenderParameter("mode", "list");
88             } else if(mode.equals("save")) { // User just submitted the form to update a connector
89
// Get submitted values
90
//todo: lots of validation
91
String JavaDoc host = actionRequest.getParameter("host");
92                 int port = Integer.parseInt(actionRequest.getParameter("port"));
93                 // Identify and update the connector
94
AbstractName connectorAbstractName = new AbstractName(URI.create(connectorURI));
95                 JMSConnector connector = (JMSConnector)PortletManager.getManagedBean(actionRequest, connectorAbstractName);
96                 if(connector != null) {
97                     connector.setHost(host);
98                     connector.setPort(port);
99                 }
100                 actionResponse.setRenderParameter("mode", "list");
101             } else if(mode.equals("start")) {
102                 AbstractName connectorAbstractName = new AbstractName(URI.create(connectorURI));
103                 try {
104                     PortletManager.getManagedBean(actionRequest, connectorAbstractName).startRecursive();
105                 } catch (Exception JavaDoc e) {
106                     throw new PortletException(e);
107                 }
108                 actionResponse.setRenderParameter("mode", "list");
109             } else if(mode.equals("stop")) {
110                 AbstractName connectorAbstractName = new AbstractName(URI.create(connectorURI));
111                 try {
112                     PortletManager.getManagedBean(actionRequest, connectorAbstractName).stop();
113                 } catch (Exception JavaDoc e) {
114                     throw new PortletException(e);
115                 }
116                 actionResponse.setRenderParameter("mode", "list");
117             } else if(mode.equals("edit")) {
118                 actionResponse.setRenderParameter("connectorURI", connectorURI);
119                 actionResponse.setRenderParameter("brokerURI", brokerURI);
120                 actionResponse.setRenderParameter("mode", "edit");
121             } else if(mode.equals("delete")) {
122                 AbstractName connectorAbstractName = new AbstractName(URI.create(connectorURI));
123                 manager.removeConnector(connectorAbstractName);
124                 actionResponse.setRenderParameter("mode", "list");
125             }
126         } catch (Throwable JavaDoc e) {
127             log.error("Unable to process portlet action", e);
128             if(e instanceof PortletException) {
129                 throw (PortletException)e;
130             }
131         }
132     }
133
134     protected void doView(RenderRequest renderRequest,
135                           RenderResponse renderResponse) throws IOException JavaDoc, PortletException {
136         if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
137             return;
138         }
139
140         try {
141             String JavaDoc mode = renderRequest.getParameter("mode");
142             if(mode == null || mode.equals("")) {
143                 mode = "list";
144             }
145             JMSManager manager = PortletManager.getCurrentServer(renderRequest).getJMSManagers()[0]; //todo: handle multiple
146

147             if(mode.equals("new")) {
148                 String JavaDoc brokerURI = renderRequest.getParameter("brokerURI");
149                 String JavaDoc protocol = renderRequest.getParameter("protocol");
150                 renderRequest.setAttribute("protocol", protocol);
151                 renderRequest.setAttribute("brokerURI", brokerURI);
152                 renderRequest.setAttribute("brokerName", new AbstractName(URI.create(brokerURI)).getName().get("name").toString());
153                 renderRequest.setAttribute("mode", "add");
154                 editView.include(renderRequest, renderResponse);
155             } else if(mode.equals("edit")) {
156                 String JavaDoc brokerURI = renderRequest.getParameter("brokerURI");
157                 String JavaDoc connectorURI = renderRequest.getParameter("connectorURI");
158                 JMSConnector connector = (JMSConnector)PortletManager.getManagedBean(renderRequest, new AbstractName(URI.create(connectorURI)));
159                 if(connector == null) {
160                     doList(renderRequest, manager, renderResponse);
161                 } else {
162                     renderRequest.setAttribute("connectorURI", connectorURI);
163                     renderRequest.setAttribute("brokerName", new AbstractName(URI.create(brokerURI)).getName().get("name").toString());
164                     renderRequest.setAttribute("connectorName", new AbstractName(URI.create(connectorURI)).getName().get("name").toString());
165                     renderRequest.setAttribute("protocol", connector.getProtocol());
166                     renderRequest.setAttribute("port", new Integer JavaDoc(connector.getPort()));
167                     renderRequest.setAttribute("host", connector.getHost());
168                     renderRequest.setAttribute("mode", "save");
169                     editView.include(renderRequest, renderResponse);
170                 }
171             } else if(mode.equals("list")) {
172                 doList(renderRequest, manager, renderResponse);
173             }
174         } catch (Throwable JavaDoc e) {
175             log.error("Unable to render portlet", e);
176         }
177     }
178
179     private void doList(RenderRequest renderRequest, JMSManager manager, RenderResponse renderResponse) throws PortletException, IOException JavaDoc {
180         List JavaDoc beans = new ArrayList JavaDoc();
181         JMSBroker[] brokers = (JMSBroker[]) manager.getContainers();
182         for (int i = 0; i < brokers.length; i++) {
183             JMSBroker broker = brokers[i];
184             AbstractName brokerAbstractName = PortletManager.getNameFor(renderRequest, broker);
185             JMSConnector[] connectors = (JMSConnector[]) manager.getConnectorsForContainer(broker);
186             for (int j = 0; j < connectors.length; j++) {
187                 JMSConnector connector = connectors[j];
188                 AbstractName connectorAbstractName = PortletManager.getNameFor(renderRequest,connector);
189                 String JavaDoc brokerName = brokerAbstractName.getName().get("name").toString();
190                 String JavaDoc connectorName = connectorAbstractName.getName().get("name").toString();
191                 ConnectorWrapper info = new ConnectorWrapper(brokerName, brokerAbstractName.toString(),
192                                                              connectorName, connectorAbstractName.toString(),
193                                                              connector);
194                 beans.add(info);
195             }
196         }
197         renderRequest.setAttribute("brokers", getBrokerList(renderRequest, manager));
198         renderRequest.setAttribute("connectors", beans);
199         renderRequest.setAttribute("protocols", manager.getSupportedProtocols());
200
201         if (WindowState.NORMAL.equals(renderRequest.getWindowState())) {
202             normalView.include(renderRequest, renderResponse);
203         } else {
204             maximizedView.include(renderRequest, renderResponse);
205         }
206     }
207
208     protected void doHelp(RenderRequest renderRequest,
209                           RenderResponse renderResponse) throws PortletException, IOException JavaDoc {
210         helpView.include(renderRequest, renderResponse);
211     }
212
213     public void init(PortletConfig portletConfig) throws PortletException {
214         super.init(portletConfig);
215         PortletContext pc = portletConfig.getPortletContext();
216         normalView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/normal.jsp");
217         maximizedView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/maximized.jsp");
218         helpView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/help.jsp");
219         editView = pc.getRequestDispatcher("/WEB-INF/view/jmsmanager/server/connector/editGeneric.jsp");
220     }
221
222     public void destroy() {
223         helpView = null;
224         editView = null;
225         normalView = null;
226         maximizedView = null;
227         super.destroy();
228     }
229
230     public static boolean isValid(String JavaDoc s) {
231         return s != null && !s.equals("");
232     }
233
234     public static class ConnectorWrapper {
235         private String JavaDoc brokerName;
236         private String JavaDoc brokerURI;
237         private String JavaDoc connectorName;
238         private String JavaDoc connectorURI;
239         private JMSConnector connector;
240
241         public ConnectorWrapper(String JavaDoc brokerName, String JavaDoc brokerURI, String JavaDoc connectorName, String JavaDoc connectorURI, JMSConnector connector) {
242             this.brokerName = brokerName;
243             this.brokerURI = brokerURI;
244             this.connectorName = connectorName;
245             this.connectorURI = connectorURI;
246             this.connector = connector;
247         }
248
249         public String JavaDoc getBrokerName() {
250             return brokerName;
251         }
252
253         public String JavaDoc getConnectorName() {
254             return connectorName;
255         }
256
257         public JMSConnector getConnector() {
258             return connector;
259         }
260
261         public String JavaDoc getBrokerURI() {
262             return brokerURI;
263         }
264         public String JavaDoc getConnectorURI() {
265             return connectorURI;
266         }
267     }
268 }
269
Popular Tags