001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.console.jmsmanager;
019
020 import java.io.IOException;
021 import java.util.HashMap;
022 import java.util.Map;
023
024 import javax.jms.ConnectionFactory;
025 import javax.portlet.ActionRequest;
026 import javax.portlet.ActionResponse;
027 import javax.portlet.PortletConfig;
028 import javax.portlet.PortletContext;
029 import javax.portlet.PortletException;
030 import javax.portlet.PortletRequestDispatcher;
031 import javax.portlet.RenderRequest;
032 import javax.portlet.RenderResponse;
033 import javax.portlet.WindowState;
034
035 import org.apache.geronimo.console.BasePortlet;
036 import org.apache.geronimo.console.jmsmanager.handlers.CreateDestinationHandler;
037 import org.apache.geronimo.console.jmsmanager.handlers.PortletResponseHandler;
038 import org.apache.geronimo.console.jmsmanager.handlers.RemoveDestinationHandler;
039 import org.apache.geronimo.console.jmsmanager.handlers.StatisticsHandler;
040 import org.apache.geronimo.console.jmsmanager.renderers.CreateDestinationRenderer;
041 import org.apache.geronimo.console.jmsmanager.renderers.PortletRenderer;
042 import org.apache.geronimo.console.jmsmanager.renderers.StatisticsRenderer;
043 import org.apache.geronimo.console.jmsmanager.renderers.ViewDLQRenderer;
044 import org.apache.geronimo.console.jmsmanager.renderers.ViewDestinationsRenderer;
045 import org.apache.geronimo.console.jmsmanager.renderers.ViewMessagesRenderer;
046
047 public class JMSManagerPortlet extends BasePortlet {
048
049 private PortletRequestDispatcher edit;
050
051 private PortletRequestDispatcher help;
052
053 private ConnectionFactory cf;
054
055 private Map handlers;
056
057 private Map renderers;
058
059 private PortletContext context;
060
061 public void init(PortletConfig portletConfig) throws PortletException {
062 super.init(portletConfig);
063
064 context = portletConfig.getPortletContext();
065
066 help = context
067 .getRequestDispatcher("/WEB-INF/view/jmsmanager/help.jsp");
068 edit = context
069 .getRequestDispatcher("/WEB-INF/view/jmsmanager/edit.jsp");
070
071 renderers = new HashMap();
072 renderers.put("createDestination", new CreateDestinationRenderer());
073 renderers.put("viewDestinations", new ViewDestinationsRenderer());
074 renderers.put("statistics", new StatisticsRenderer());
075 renderers.put("viewMessages", new ViewMessagesRenderer());
076 renderers.put("viewDLQ", new ViewDLQRenderer());
077
078 handlers = new HashMap();
079 handlers.put("createDestination", new CreateDestinationHandler());
080 handlers.put("removeDestination", new RemoveDestinationHandler());
081 handlers.put("statistics", new StatisticsHandler());
082
083 }
084
085 public void doHelp(RenderRequest renderRequest,
086 RenderResponse renderResponse) throws PortletException, IOException {
087 help.include(renderRequest, renderResponse);
088 }
089
090 public void doView(RenderRequest renderRequest,
091 RenderResponse renderResponse) throws IOException, PortletException {
092
093 if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
094 return;
095 }
096
097 String view = renderRequest.getParameter("processAction");
098 if (view == null) {
099 // no specific content requested - show the destinations list
100 view = "viewDestinations";
101 }
102
103 PortletRenderer renderer = (PortletRenderer) renderers.get(view);
104 if (renderer == null) {
105 throw new PortletException("Invalid view parameter specified: "
106 + view);
107 }
108
109 String include = renderer.render(renderRequest, renderResponse);
110 if (include != null) {
111 PortletRequestDispatcher requestDispatcher = context
112 .getRequestDispatcher(include);
113 requestDispatcher.include(renderRequest, renderResponse);
114 }
115
116 }
117
118 public void processAction(ActionRequest actionRequest,
119 ActionResponse actionResponse) throws PortletException, IOException {
120 String processAction = actionRequest.getParameter("processaction");
121
122 PortletResponseHandler handler = (PortletResponseHandler) handlers
123 .get(processAction);
124
125 if (handler == null) {
126 // throw new RuntimeException( "no handlers for processAction = " +
127 // processAction );
128 handler = (PortletResponseHandler) handlers.get("viewDestinations");
129 }
130
131 handler.processAction(actionRequest, actionResponse);
132 }
133
134 public void destroy() {
135
136 help = null;
137 edit = null;
138 super.destroy();
139 }
140
141 }