1 17 package org.apache.geronimo.console.jmsmanager.server; 18 19 import java.io.IOException ; 20 import java.util.List ; 21 import java.util.ArrayList ; 22 import java.net.URI ; 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 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 { 60 try { 61 String mode = actionRequest.getParameter("mode"); 62 String connectorURI = actionRequest.getParameter("connectorURI"); 63 String brokerURI = actionRequest.getParameter("brokerURI"); 64 JMSManager manager = PortletManager.getCurrentServer(actionRequest).getJMSManagers()[0]; if(mode.equals("new")) { 66 actionResponse.setRenderParameter("mode", "new"); 68 String protocol = actionRequest.getParameter("protocol"); 69 actionResponse.setRenderParameter("protocol", protocol); 70 actionResponse.setRenderParameter("brokerURI", brokerURI); 71 } else if(mode.equals("add")) { String protocol = actionRequest.getParameter("protocol"); 75 String host = actionRequest.getParameter("host"); 76 int port = Integer.parseInt(actionRequest.getParameter("port")); 77 String name = actionRequest.getParameter("name"); 78 AbstractName brokerAbstractName = new AbstractName(URI.create(brokerURI)); 79 JMSConnector connector = PortletManager.createJMSConnector(actionRequest, manager, brokerAbstractName, name, protocol, host, port); 81 try { 83 ((GeronimoManagedBean)connector).startRecursive(); 84 } catch (Exception e) { 85 log.error("Unable to start connector", e); } 87 actionResponse.setRenderParameter("mode", "list"); 88 } else if(mode.equals("save")) { String host = actionRequest.getParameter("host"); 92 int port = Integer.parseInt(actionRequest.getParameter("port")); 93 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 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 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 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 , PortletException { 136 if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) { 137 return; 138 } 139 140 try { 141 String mode = renderRequest.getParameter("mode"); 142 if(mode == null || mode.equals("")) { 143 mode = "list"; 144 } 145 JMSManager manager = PortletManager.getCurrentServer(renderRequest).getJMSManagers()[0]; 147 if(mode.equals("new")) { 148 String brokerURI = renderRequest.getParameter("brokerURI"); 149 String 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 brokerURI = renderRequest.getParameter("brokerURI"); 157 String 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 (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 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 { 180 List beans = new ArrayList (); 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 brokerName = brokerAbstractName.getName().get("name").toString(); 190 String 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 { 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 s) { 231 return s != null && !s.equals(""); 232 } 233 234 public static class ConnectorWrapper { 235 private String brokerName; 236 private String brokerURI; 237 private String connectorName; 238 private String connectorURI; 239 private JMSConnector connector; 240 241 public ConnectorWrapper(String brokerName, String brokerURI, String connectorName, String 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 getBrokerName() { 250 return brokerName; 251 } 252 253 public String getConnectorName() { 254 return connectorName; 255 } 256 257 public JMSConnector getConnector() { 258 return connector; 259 } 260 261 public String getBrokerURI() { 262 return brokerURI; 263 } 264 public String getConnectorURI() { 265 return connectorURI; 266 } 267 } 268 } 269 | Popular Tags |