You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by am...@apache.org on 2005/07/21 03:38:23 UTC
svn commit: r219976 [7/12] - in /geronimo/trunk: ./ etc/
sandbox/console-core/ sandbox/console-core/src/
sandbox/console-core/src/java/ sandbox/console-core/src/java/org/
sandbox/console-core/src/java/org/apache/
sandbox/console-core/src/java/org/apach...
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,167 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.util.List;
+
+import javax.jms.Queue;
+import javax.jms.Topic;
+import javax.management.ObjectName;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+import org.activemq.message.ActiveMQQueue;
+import org.activemq.message.ActiveMQTopic;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.connector.AdminObjectWrapper;
+import org.apache.geronimo.console.core.jms.TopicBrowserGBean;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.gbean.DynamicGAttributeInfo;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.config.ConfigurationData;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationModuleType;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+
+public class CreateDestinationHandler extends AbstractJMSManager implements
+ PortletResponseHandler {
+
+ protected static Log log = LogFactory
+ .getLog(CreateDestinationHandler.class);
+
+ private static final URI parentId = URI
+ .create("org/apache/geronimo/Console");
+
+ static final GBeanInfo QUEUE_INFO;
+
+ static final GBeanInfo TOPIC_INFO;
+
+ static {
+ GBeanInfoBuilder queueInfoBuilder = new GBeanInfoBuilder(
+ AdminObjectWrapper.class, AdminObjectWrapper.GBEAN_INFO);
+ queueInfoBuilder.addAttribute(new DynamicGAttributeInfo("PhysicalName",
+ String.class.getName(), true, true, true));
+ QUEUE_INFO = queueInfoBuilder.getBeanInfo();
+ GBeanInfoBuilder topicInfoBuilder = new GBeanInfoBuilder(
+ AdminObjectWrapper.class, AdminObjectWrapper.GBEAN_INFO);
+ topicInfoBuilder.addAttribute(new DynamicGAttributeInfo("PhysicalName",
+ String.class.getName(), true, true, true));
+ TOPIC_INFO = topicInfoBuilder.getBeanInfo();
+ }
+
+ public void processAction(ActionRequest request, ActionResponse response)
+ throws IOException, PortletException {
+ String destinationName = request.getParameter(DESTINATION_NAME);
+ String destinationPhysicalName = request
+ .getParameter(DESTINATION_PHYSICAL_NAME);
+ String destinationType = request.getParameter(DESTINATION_TYPE);
+ String destinationApplicationName = request
+ .getParameter(DESTINATION_APPLICATION_NAME);
+ String destinationModuleName = request
+ .getParameter(DESTINATION_MODULE_NAME);
+ try {
+ ObjectName adminObjectName = NameFactory.getComponentName(null,
+ null, destinationApplicationName, NameFactory.JCA_RESOURCE,
+ destinationModuleName, destinationName, null, baseContext);
+
+ GBeanData adminObjectData;
+ if (Topic.class.getName().equals(destinationType)) {
+ adminObjectData = new GBeanData(adminObjectName, TOPIC_INFO);
+ adminObjectData.setAttribute("adminObjectInterface",
+ Topic.class.getName());
+ adminObjectData.setAttribute("adminObjectClass",
+ ActiveMQTopic.class.getName());
+ } else if (Queue.class.getName().equals(destinationType)) {
+ adminObjectData = new GBeanData(adminObjectName, QUEUE_INFO);
+ adminObjectData.setAttribute("adminObjectInterface",
+ Queue.class.getName());
+ adminObjectData.setAttribute("adminObjectClass",
+ ActiveMQQueue.class.getName());
+ } else {
+ throw new PortletException(
+ "Invalid choice destination, must be FQCL of Topic or Queue, not "
+ + destinationType);
+ }
+ adminObjectData.setAttribute("PhysicalName",
+ destinationPhysicalName);
+
+ URI configId = new URI(BASE_CONFIG_URI + destinationName);
+
+ ConfigurationManager configurationManager = ConfigurationUtil
+ .getConfigurationManager(kernel);
+ List stores = configurationManager.listStores();
+ assert stores.size() == 1 : "Piling one hack on another, this code only works with exactly one store";
+
+ ObjectName storeName = (ObjectName) stores.iterator().next();
+ File installDir = (File) kernel.invoke(storeName,
+ "createNewConfigurationDir");
+ //DeploymentContext deploymentContext = new
+ // DeploymentContext(installDir, configId,
+ // ConfigurationModuleType.SERVICE, parentId, kernel);
+ ConfigurationData configData = new ConfigurationData();
+ configData.setId(configId);
+ configData.setParentId(parentId);
+ configData.setModuleType(ConfigurationModuleType.SERVICE);
+ //deploymentContext.addGBean(adminObjectData);
+ configData.addGBean(adminObjectData);
+ // If we are adding a topic we have to add a browser so we can view
+ // its messages later.
+ if (Topic.class.getName().equals(destinationType)) {
+ GBeanData tBrowserBeanData = new GBeanData(NameFactory
+ .getComponentName(null, null,
+ destinationApplicationName,
+ NameFactory.JCA_RESOURCE,
+ destinationModuleName, destinationName,
+ "TopicBrowser", baseContext),
+ TopicBrowserGBean.GBEAN_INFO);
+ tBrowserBeanData
+ .setAttribute("subscriberName", destinationName);
+ tBrowserBeanData.setReferencePattern(
+ "ConnectionFactoryWrapper", ObjectName
+ .getInstance(CONNECTION_FACTORY_NAME));
+ tBrowserBeanData.setReferencePattern("TopicWrapper",
+ adminObjectName);
+
+ configData.addGBean(tBrowserBeanData);
+ }
+
+ //saves it.
+ //deploymentContext.close();
+ kernel.invoke(storeName, "install", new Object[] {configData,
+ installDir}, new String[] {
+ ConfigurationData.class.getName(), File.class.getName() });
+
+ ObjectName configName = configurationManager.load(configId);
+ kernel.startRecursiveGBean(configName);
+
+ } catch (Exception e) {
+ log.info("problem", e);
+ log.error("problem", e);
+ }
+ response.setRenderParameter("processAction", "viewDestinations");
+ }
+
+}
\ No newline at end of file
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/CreateDestinationHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,31 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+public interface PortletResponseHandler {
+
+ public void processAction(ActionRequest request, ActionResponse response)
+ throws IOException, PortletException;
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/PortletResponseHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,90 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.IOException;
+import java.net.URI;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.management.ObjectName;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.console.util.ObjectNameConstants;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.kernel.DependencyManager;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.jmx.JMXUtil;
+
+public class RemoveDestinationHandler extends AbstractJMSManager implements
+ PortletResponseHandler {
+
+ protected static Log log = LogFactory
+ .getLog(RemoveDestinationHandler.class);
+
+ public void processAction(ActionRequest request, ActionResponse response)
+ throws IOException, PortletException {
+ String destinationConfigURIName = request
+ .getParameter(DESTINATION_CONFIG_URI);
+ try {
+ ConfigurationManager configurationManager = ConfigurationUtil
+ .getConfigurationManager(kernel);
+ URI destinationConfigURI = new URI(destinationConfigURIName);
+
+ List stores = configurationManager.listStores();
+ assert stores.size() == 1 :"Piling one hack on another, this code only works with exactly one store";
+ ObjectName storeName = (ObjectName) stores.iterator().next();
+
+ // Unsubscribe topicbrowser before uninstalling the configuration.
+ DependencyManager dm = kernel.getDependencyManager();
+ //GBeanData topicBrowser = (GBeanData) kernel.invoke(storeName,
+ // "getConfiguration", new Object[]{destinationConfigURI}, new
+ // String[]{URI.class.getName()});
+ GBeanData topicBrowser = kernel.getGBeanData(JMXUtil
+ .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX
+ + "\"" + destinationConfigURI + "\""));
+ java.util.Set children = dm.getChildren(topicBrowser.getName());
+ for (Iterator i = children.iterator(); i.hasNext();) {
+ ObjectName o = (ObjectName) i.next();
+ if ("TopicBrowser".equals(o.getKeyProperty("j2eeType"))) {
+ kernel.invoke(o, "unsubscribe");
+ break;
+ }
+ }
+
+ // Uninstall configuration
+ //kernel.stopConfiguration(destinationConfigURI);
+ kernel.stopGBean(JMXUtil
+ .getObjectName(ObjectNameConstants.CONFIG_GBEAN_PREFIX
+ + "\"" + destinationConfigURIName + "\""));
+ kernel.invoke(storeName, "uninstall",
+ new Object[] {destinationConfigURI},
+ new String[] {URI.class.getName()});
+ } catch (Exception e) {
+ log.error("problem removing destination: "
+ + destinationConfigURIName, e);
+ }
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/RemoveDestinationHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,45 @@
+/**
+ *
+ * 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.handlers;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.PortletException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+
+public class StatisticsHandler extends AbstractJMSManager implements
+ PortletResponseHandler {
+
+ protected static Log log = LogFactory.getLog(StatisticsHandler.class);
+
+ public void processAction(ActionRequest request, ActionResponse response)
+ throws IOException, PortletException {
+ String destinationName = request.getParameter(DESTINATION_NAME);
+ String destinationType = request.getParameter(DESTINATION_TYPE);
+
+ response.setRenderParameter("destinationName", destinationName);
+ response.setRenderParameter("destinationType", destinationType);
+ response.setRenderParameter("processAction", "statistics");
+ }
+
+}
\ No newline at end of file
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/handlers/StatisticsHandler.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,42 @@
+/**
+ *
+ * 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 javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+
+public class CreateDestinationRenderer extends AbstractJMSManager implements
+ PortletRenderer {
+
+ protected static Log log = LogFactory
+ .getLog(CreateDestinationRenderer.class);
+
+ public String render(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+
+ return "/WEB-INF/view/jmsmanager/createdestination.jsp";
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/CreateDestinationRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,31 @@
+/**
+ *
+ * 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 javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+public interface PortletRenderer {
+
+ String render(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException;
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/PortletRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,68 @@
+/**
+ *
+ * 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.Hashtable;
+
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+
+public class StatisticsRenderer extends AbstractJMSManager implements
+ PortletRenderer {
+
+ protected static Log log = LogFactory.getLog(StatisticsRenderer.class);
+
+ public String render(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+
+ Hashtable statistics = getStatistics(request, response);
+
+ request.setAttribute("statistics", statistics);
+
+ return "/WEB-INF/view/jmsmanager/statistics.jsp";
+ }
+
+ public static Hashtable getStatistics(RenderRequest renderRequest,
+ RenderResponse renderResponse) throws IOException, PortletException {
+ String description = "My Descrition";
+ String currentDepth = "11";
+ String openInputCount = "1";
+ String openOutputCount = "1";
+ String inhibitGet = "false";
+ String inhibitPut = "false";
+ String sharable = "true";
+ String triggerControl = "false";
+ String maximumDepth = "10000";
+ String maximumMessageLength = "2342344";
+
+ String destinationName = renderRequest.getParameter("destinationName");
+ if (destinationName == null) {
+ destinationName = "";
+ }
+ Hashtable statsHash = new Hashtable();
+
+ return statsHash;
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/StatisticsRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,143 @@
+/**
+ *
+ * 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.lang.reflect.Field;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.Destination;
+import javax.jms.Queue;
+import javax.jms.QueueBrowser;
+import javax.jms.Session;
+import javax.management.ObjectName;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.activemq.service.DeadLetterPolicy;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+
+public class ViewDLQRenderer extends AbstractJMSManager implements
+ PortletRenderer {
+
+ private Destination destination = null;
+
+ private Destination dlq = null;
+
+ private QueueBrowser dlqBrowser = null;
+
+ private Connection connection = null;
+
+ private Session session = null;
+
+ private String dlqName;
+
+ public ViewDLQRenderer() {
+ }
+
+ public void setup(RenderRequest request, RenderResponse response) {
+ String destinationApplicationName = request
+ .getParameter("destinationApplicationName");
+ String destinationModuleName = request
+ .getParameter("destinationModuleName");
+ String destinationName = request.getParameter("destinationName");
+
+ try {
+ ObjectName adminObjectName = NameFactory.getComponentName(null,
+ null, destinationApplicationName, NameFactory.JCA_RESOURCE,
+ destinationModuleName, destinationName, null, baseContext);
+ destination = (Destination) kernel.invoke(adminObjectName,
+ "$getResource");
+ ConnectionFactory connectionFactory = (ConnectionFactory) kernel
+ .invoke(ObjectName.getInstance(CONNECTION_FACTORY_NAME),
+ "$getResource");
+ connection = connectionFactory.createConnection();
+ session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ DeadLetterPolicy dlp = new DeadLetterPolicy();
+
+ //dlqName =
+ // dlp.getDeadLetterNameFromDestination((ActiveMQDestination)
+ // destination);
+ // This is a hack to get around the fact that the code commented
+ // above throws a ClassCastException due to ClassLoader weirdness.
+ Field f = dlp.getClass().getDeclaredField(
+ "deadLetterPerDestinationName");
+ f.setAccessible(true);
+ boolean deadLetterPerDestinationName = f.getBoolean(dlp);
+ f = dlp.getClass().getDeclaredField("deadLetterPrefix");
+ f.setAccessible(true);
+ String deadLetterPrefix = "" + f.get(dlp);
+ if (deadLetterPerDestinationName) {
+ dlqName = deadLetterPrefix
+ + destination.getClass().getMethod("getPhysicalName",
+ null).invoke(destination, null);
+ } else {
+ dlqName = deadLetterPrefix + deadLetterPrefix;
+ }
+
+ dlq = session.createQueue(dlqName);
+ dlqBrowser = session.createBrowser((Queue) dlq);
+
+ connection.start();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ public List getDLQContents(QueueBrowser qb) {
+
+ List list = new ArrayList();
+
+ try {
+ for (Enumeration e = qb.getEnumeration(); e.hasMoreElements();) {
+ Object o = e.nextElement();
+ list.add(o);
+ }
+
+ connection.stop();
+ dlqBrowser.close();
+ session.close();
+ connection.close();
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return list;
+ }
+
+ public String render(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+
+ setup(request, response);
+ List dlqContents = getDLQContents(dlqBrowser);
+ request.setAttribute("dlqcontents", dlqContents);
+ request.setAttribute("dlqname", dlqName);
+
+ return "/WEB-INF/view/jmsmanager/viewDLQ.jsp";
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDLQRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,114 @@
+/**
+ *
+ * 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.Iterator;
+import java.util.List;
+import java.util.Set;
+
+import javax.management.ObjectName;
+import javax.portlet.PortletException;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.geronimo.console.jmsmanager.AbstractJMSManager;
+import org.apache.geronimo.console.jmsmanager.DestinationInfo;
+import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
+import org.apache.geronimo.kernel.DependencyManager;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.KernelRegistry;
+
+public class ViewDestinationsRenderer extends AbstractJMSManager implements
+ PortletRenderer {
+
+ protected static Log log = LogFactory
+ .getLog(ViewDestinationsRenderer.class);
+
+ public String render(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+
+ List destinationList = getDestinationList(request, response);
+
+ request.setAttribute(DESTINATION_LIST, destinationList);
+
+ return "/WEB-INF/view/jmsmanager/view.jsp";
+ }
+
+ public List getDestinationList(RenderRequest request,
+ RenderResponse response) {
+ Kernel kernel = KernelRegistry.getSingleKernel();
+
+ Set destinations = kernel.listGBeans(DESTINATION_QUERY);
+ List destinationInfos = new ArrayList(destinations.size());
+ DependencyManager dm = kernel.getDependencyManager();
+ for (Iterator iterator = destinations.iterator(); iterator.hasNext();) {
+ ObjectName destinationName = (ObjectName) iterator.next();
+
+ try {
+ Class type;
+ try {
+ type = Class.forName((String) kernel.getAttribute(
+ destinationName, "adminObjectInterface"));
+ } catch (ClassCastException cce) {
+ type = (Class) kernel.getAttribute(destinationName,
+ "adminObjectInterface");
+ }
+ Set parents = dm.getParents(destinationName);
+ Iterator i = parents.iterator();
+ // If no parents this is a configuration we don't need those
+ // here.
+ if (!i.hasNext()) {
+ continue;
+ }
+ ObjectName parent = (ObjectName) i.next();
+ String adminObjectName = destinationName
+ .getKeyProperty(NameFactory.J2EE_NAME);
+ if (adminObjectName.equals("MDBTransferBeanOutQueue")
+ || adminObjectName.equals("SendReceiveQueue")) {
+ continue;
+ }
+ String configURI = parent.getKeyProperty("name");
+ if (configURI.startsWith("\"")) {
+ configURI = configURI.substring(1);
+ }
+ if (configURI.endsWith("\"")) {
+ configURI = configURI.substring(0, configURI.length() - 1);
+ }
+
+ DestinationInfo info = new DestinationInfo(adminObjectName,
+ (String) kernel.getAttribute(destinationName,
+ "PhysicalName"), type, destinationName
+ .getKeyProperty(NameFactory.J2EE_APPLICATION),
+ destinationName
+ .getKeyProperty(NameFactory.JCA_RESOURCE),
+ configURI);
+ destinationInfos.add(info);
+ } catch (Exception e) {
+ log.error(e);
+ }
+ }
+ Collections.sort(destinationInfos);
+ return destinationInfos;
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewDestinationsRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java Wed Jul 20 18:38:12 2005
@@ -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/sandbox/console-standard/src/java/org/apache/geronimo/console/jmsmanager/renderers/ViewMessagesRenderer.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogManagerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogManagerPortlet.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogManagerPortlet.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogManagerPortlet.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,88 @@
+/**
+ *
+ * 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.logmanager;
+
+import java.io.IOException;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+
+import org.apache.geronimo.console.util.LogHelper;
+
+public class LogManagerPortlet extends GenericPortlet {
+
+ protected PortletRequestDispatcher normalView;
+
+ protected PortletRequestDispatcher helpView;
+
+ protected void doHelp(RenderRequest renderRequest,
+ RenderResponse renderRespose) throws PortletException, IOException {
+ helpView.include(renderRequest, renderRespose);
+ }
+
+ protected void doView(RenderRequest renderRequest,
+ RenderResponse renderRespose) throws PortletException, IOException {
+ if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+ return;
+ }
+ renderRequest.setAttribute("configFile", LogHelper.getConfigFile());
+ renderRequest.setAttribute("configuration", LogHelper
+ .getConfiguration());
+ renderRequest.setAttribute("logLevel", LogHelper.getLogLevel());
+ renderRequest.setAttribute("refreshPeriod", LogHelper
+ .getRefreshPeriod());
+
+ normalView.include(renderRequest, renderRespose);
+ }
+
+ public void init(PortletConfig portletConfig) throws PortletException {
+ PortletContext pc = portletConfig.getPortletContext();
+ normalView = pc
+ .getRequestDispatcher("/WEB-INF/view/logmanager/view.jsp");
+ helpView = pc.getRequestDispatcher("/WEB-INF/view/logmanager/help.jsp");
+ super.init(portletConfig);
+ }
+
+ public void processAction(ActionRequest actionRequest,
+ ActionResponse actionResponse) throws PortletException, IOException {
+
+ String action = actionRequest.getParameter("action");
+ String logLevel = actionRequest.getParameter("logLevel");
+ String configFile = actionRequest.getParameter("configFile");
+ String configuration = actionRequest.getParameter("append");
+ String refreshPeriod = actionRequest.getParameter("refreshPeriod");
+
+ if ("update".equals(action)) {
+ if (refreshPeriod != null) {
+ LogHelper.setRefreshPeriod(Integer.parseInt(refreshPeriod));
+ }
+ LogHelper.setConfigFile(configFile);
+ LogHelper.setLogLevel(logLevel);
+
+ }
+ }
+
+}
\ No newline at end of file
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogManagerPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogViewerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogViewerPortlet.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogViewerPortlet.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogViewerPortlet.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,92 @@
+/**
+ *
+ * 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.logmanager;
+
+import java.io.IOException;
+
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+
+import org.apache.geronimo.console.util.LogHelper;
+
+public class LogViewerPortlet extends GenericPortlet {
+
+ public static final int LOGS_PER_PAGE = 10;
+
+ protected PortletRequestDispatcher searchView;
+
+ protected PortletRequestDispatcher helpView;
+
+ protected void doHelp(RenderRequest renderRequest,
+ RenderResponse renderRespose) throws PortletException, IOException {
+ helpView.include(renderRequest, renderRespose);
+ }
+
+ protected void doView(RenderRequest renderRequest,
+ RenderResponse renderRespose) throws PortletException, IOException {
+ if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+ return;
+ }
+ String action = renderRequest.getParameter("action");
+
+ if ("refresh".equals(action)) {
+ LogHelper.refresh();
+ }
+
+ String startPos = renderRequest.getParameter("startPos");
+ String endPos = renderRequest.getParameter("endPos");
+ String logLevel = renderRequest.getParameter("logLevel");
+ String searchString = renderRequest.getParameter("searchString");
+
+ int lines = LogHelper.getLineCount();
+ int sPos = (startPos != null && startPos.length() > 0) ? Integer
+ .parseInt(startPos) : (lines - LOGS_PER_PAGE);
+ int ePos = (endPos != null && endPos.length() > 0) ? Integer
+ .parseInt(endPos) : lines;
+
+ try {
+ renderRequest.setAttribute("searchResults", LogHelper.searchLogs(
+ sPos, ePos, logLevel, searchString));
+ } catch (IOException e) {
+ throw new PortletException(e.getMessage());
+ }
+ renderRequest.setAttribute("lineCount", new Integer(lines));
+ renderRequest.setAttribute("startPos", new Integer(sPos));
+ renderRequest.setAttribute("endPos", new Integer(ePos));
+ renderRequest.setAttribute("logLevel", logLevel);
+ renderRequest.setAttribute("searchString", searchString);
+
+ searchView.include(renderRequest, renderRespose);
+ }
+
+ public void init(PortletConfig portletConfig) throws PortletException {
+ PortletContext pc = portletConfig.getPortletContext();
+ searchView = pc
+ .getRequestDispatcher("/WEB-INF/view/logmanager/search.jsp");
+ helpView = pc
+ .getRequestDispatcher("/WEB-INF/view/logmanager/viewhelp.jsp");
+ super.init(portletConfig);
+ }
+
+}
\ No newline at end of file
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/LogViewerPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogCriteria.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogCriteria.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogCriteria.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogCriteria.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,96 @@
+/**
+ *
+ * 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.logmanager;
+
+public class WebAccessLogCriteria {
+
+ private String requestHost;
+
+ private String authUser;
+
+ private String requestMethod;
+
+ private String requestedURI;
+
+ private String message;
+
+ /**
+ * Get an instance of WebAccessLogCriteria that matches anyother instances
+ * of new WebAccessLogCriteria.
+ *
+ * @return
+ */
+ public static WebAccessLogCriteria getGlobalMatcher() {
+ return new WebAccessLogCriteria("");
+ }
+
+ public WebAccessLogCriteria(String message, String requestHost,
+ String authUser, String requestMethod, String requestedURI) {
+ this.message = message;
+ this.requestHost = requestHost;
+ this.authUser = authUser;
+ this.requestMethod = requestMethod;
+ this.requestedURI = requestedURI;
+ }
+
+ public WebAccessLogCriteria(String message, String requestHost,
+ String authUser, String requestMethod) {
+ this(message, requestHost, authUser, requestMethod, null);
+ }
+
+ public WebAccessLogCriteria(String message, String requestHost,
+ String authUser) {
+ this(message, requestHost, authUser, null);
+ }
+
+ public WebAccessLogCriteria(String message, String requestHost) {
+ this(message, requestHost, null);
+ }
+
+ public WebAccessLogCriteria(String message) {
+ this(message, null);
+ }
+
+ public String toString() {
+ return message;
+ }
+
+ /**
+ * Check equality of two object using the following rules:
+ * <ol>
+ * <li>If one of the arguments is null return true.</li>
+ * <li>If both arguments are not null check for equality.</li>
+ * </ol>
+ */
+ private boolean checkEquality(Object lhs, Object rhs) {
+ return (lhs == null || rhs == null || lhs.equals(rhs));
+ }
+
+ /**
+ * Check's criteria matches this one. This method checks all the
+ * relevant(all except message) fields for equality but will also consider
+ * to fields a match if one of them is null.
+ */
+ public boolean matches(WebAccessLogCriteria rhs) {
+ return (checkEquality(requestHost, rhs.requestHost)
+ && checkEquality(authUser, rhs.authUser)
+ && checkEquality(requestMethod, rhs.requestMethod) && checkEquality(
+ requestedURI, rhs.requestedURI));
+ }
+
+}
\ No newline at end of file
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogCriteria.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogHelper.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogHelper.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogHelper.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogHelper.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,260 @@
+/**
+ *
+ * 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.logmanager;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.FilenameFilter;
+import java.io.IOException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.StringTokenizer;
+import java.util.TreeMap;
+import java.util.regex.Pattern;
+
+import javax.management.MalformedObjectNameException;
+import javax.management.ObjectName;
+
+import org.apache.geronimo.console.util.KernelHelper;
+import org.apache.geronimo.console.util.ObjectNameConstants;
+
+public class WebAccessLogHelper extends KernelHelper {
+
+ private static ObjectName objName, serverInfoObjName;
+
+ private static final String LOG_FILE_ATTR = "filename";
+
+ private static Map logs = new TreeMap();
+
+ private static boolean loaded = false;
+
+ private static int lines = 0;
+
+ private static Map loadLogs() throws IOException {
+ if (!loaded) {
+ refresh();
+ }
+ return logs;
+ }
+
+ public static ArrayList getLogsByDate(Date logDate) throws IOException {
+ // Since the two date arg version is inclusive we just call that one
+ // passing in the logDate as start and end dates.
+ return filterLogsByDate(WebAccessLogCriteria.getGlobalMatcher(),
+ logDate, logDate);
+ }
+
+ public static int getLineCount() throws IOException {
+ if (!loaded) {
+ refresh();
+ }
+ return lines;
+ }
+
+ public static ArrayList getLogs() throws IOException {
+ return filterLogs(WebAccessLogCriteria.getGlobalMatcher());
+ }
+
+ public static ArrayList filterLogs(WebAccessLogCriteria criteria)
+ throws IOException {
+ Map log = loadLogs();
+ ArrayList ret = new ArrayList();
+ for (Iterator i = log.keySet().iterator(); i.hasNext();) {
+ Date date = (Date) i.next();
+ ArrayList msgs = (ArrayList) log.get(date);
+ for (Iterator j = msgs.iterator(); j.hasNext();) {
+ WebAccessLogCriteria obj = (WebAccessLogCriteria) j.next();
+ if (obj.matches(criteria)) {
+ ret.add(obj);
+ }
+ }
+ }
+ return ret;
+ }
+
+ public static ArrayList filterLogsByDate(WebAccessLogCriteria criteria,
+ Date startDate, Date endDate) throws IOException {
+ Map log = loadLogs();
+ ArrayList ret = new ArrayList();
+ for (Iterator i = log.keySet().iterator(); i.hasNext();) {
+ Date date = (Date) i.next();
+ ArrayList msgs = (ArrayList) log.get(date);
+ for (Iterator j = msgs.iterator(); j.hasNext();) {
+ WebAccessLogCriteria obj = (WebAccessLogCriteria) j.next();
+ if (obj.matches(criteria)
+ && isBetween(date, startDate, endDate)) {
+ ret.add(obj);
+ }
+ }
+ }
+ return ret;
+
+ }
+
+ public static ArrayList searchLogs(String requestHost, String authUser,
+ String requestMethod, String requestedURI) throws IOException {
+ return searchLogs(requestHost, authUser, requestMethod, requestedURI,
+ null, null);
+ }
+
+ public static ArrayList searchLogs(String requestHost, String authUser,
+ String requestMethod, String requestedURI, Date startDate,
+ Date endDate) throws IOException {
+ if (requestHost != null && requestHost.trim().length() == 0) {
+ requestHost = null;
+ }
+ if (authUser != null && authUser.trim().length() == 0) {
+ authUser = null;
+ }
+ if (requestMethod != null && requestMethod.trim().length() == 0) {
+ requestMethod = null;
+ }
+ if (requestedURI != null && requestedURI.trim().length() == 0) {
+ requestedURI = null;
+ }
+ WebAccessLogCriteria criteria = new WebAccessLogCriteria("",
+ requestHost, authUser, requestMethod, requestedURI);
+ if (startDate == null || endDate == null) {
+ return filterLogs(criteria);
+ } else {
+ return filterLogsByDate(criteria, startDate, endDate);
+ }
+ }
+
+ public static File[] getFiles() {
+ String fileNamePattern = get(objName, LOG_FILE_ATTR).toString();
+ if (fileNamePattern.indexOf("/") > -1) {
+ fileNamePattern = fileNamePattern.substring(fileNamePattern
+ .lastIndexOf("/") + 1);
+ } else if (fileNamePattern.indexOf("\\") > -1) {
+ fileNamePattern = fileNamePattern.substring(fileNamePattern
+ .lastIndexOf("\\") + 1);
+ }
+
+ Object[] arg = { get(objName, LOG_FILE_ATTR).toString() };
+ String[] parms = { String.class.getName() };
+ try {
+ String logFile = (String) invoke(serverInfoObjName, "resolvePath",
+ arg, parms);
+ File f = new File(logFile).getParentFile();
+ return (f != null ? f.listFiles(new PatternFilenameFilter(
+ fileNamePattern)) : new File[0]);
+ } catch (Exception e) {
+ return new File[0];
+ }
+ }
+
+ public static void refresh() throws IOException {
+ loaded = false;
+ lines = 0;
+ logs.clear();
+ File[] logFiles = getFiles();
+ for (int i = 0; i < logFiles.length; i++) {
+ BufferedReader in = new BufferedReader(new FileReader(logFiles[i]));
+ for (String line = in.readLine(); line != null; line = in
+ .readLine()) {
+ try {
+ StringTokenizer split = new StringTokenizer(line, " ");
+ String remoteHost = split.nextToken().trim();
+ // Ignore host
+ split.nextToken();
+ String user = split.nextToken("[").trim();
+ String dateTime = split.nextToken(" ").substring(1).trim();
+ //ignore GMT offset
+ split.nextToken();
+ String reqMethod = split.nextToken().substring(1).trim();
+ String reqURI = split.nextToken().trim();
+ // Get date time.
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(new SimpleDateFormat(
+ "dd/MMM/yyyy:HH:mm:ss").parse(dateTime));
+ // remove time so we can filter by date later.
+ calendar.clear(Calendar.MILLISECOND);
+ calendar.clear(Calendar.MINUTE);
+ calendar.clear(Calendar.SECOND);
+ // Weird java bug. calling calendar.clear(Calendar.HOUR)
+ // does not clear the hour but this works.
+ calendar.clear(calendar.HOUR_OF_DAY);
+ calendar.clear(calendar.HOUR);
+ ArrayList msgs;
+ if (logs.containsKey(calendar.getTime())) {
+ msgs = (ArrayList) logs.get(calendar.getTime());
+ } else {
+ msgs = new ArrayList();
+ }
+ WebAccessLogCriteria criteria = new WebAccessLogCriteria(
+ line, remoteHost, user, reqMethod, reqURI);
+ msgs.add(0, criteria);
+ logs.put(calendar.getTime(), msgs);
+ lines++;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+ loaded = true;
+ }
+
+ /**
+ * Check if a date is between two dates (inclusive).
+ *
+ * @return true if date is between(inclusive) startDate and endDate.
+ */
+ private static boolean isBetween(Date date, Date startDate, Date endDate) {
+ return (date.equals(startDate) || date.after(startDate))
+ && (date.equals(endDate) || date.before(endDate));
+ }
+
+ static {
+ try {
+ objName = new ObjectName(
+ ObjectNameConstants.REQUEST_LOGGER_OBJECT_NAME);
+ serverInfoObjName = new ObjectName(
+ ObjectNameConstants.SERVER_INFO_OBJECT_NAME);
+ } catch (MalformedObjectNameException e) {
+
+ }
+ }
+
+ /*
+ * Static inner class implementation of java.io.Filename. This will help us
+ * filter for only the files that we are interested in.
+ */
+ static class PatternFilenameFilter implements FilenameFilter {
+ Pattern pattern;
+
+ PatternFilenameFilter(String fileNamePattern) {
+ fileNamePattern = fileNamePattern.replaceAll("yyyy", "\\\\d{4}");
+ fileNamePattern = fileNamePattern.replaceAll("yy", "\\\\d{2}");
+ fileNamePattern = fileNamePattern.replaceAll("mm", "\\\\d{2}");
+ fileNamePattern = fileNamePattern.replaceAll("dd", "\\\\d{2}")
+ + ".*";
+ this.pattern = Pattern.compile(fileNamePattern);
+ }
+
+ public boolean accept(File file, String fileName) {
+ return pattern.matcher(fileName).matches();
+ }
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,134 @@
+/**
+ *
+ * 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.logmanager;
+
+import java.io.IOException;
+import java.util.Calendar;
+
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+
+public class WebAccessLogViewerPortlet extends GenericPortlet {
+
+ protected PortletRequestDispatcher searchView;
+
+ protected PortletRequestDispatcher helpView;
+
+ protected void doHelp(RenderRequest renderRequest,
+ RenderResponse renderRespose) throws PortletException, IOException {
+ helpView.include(renderRequest, renderRespose);
+ }
+
+ protected void doView(RenderRequest renderRequest,
+ RenderResponse renderRespose) throws PortletException, IOException {
+ if (WindowState.MINIMIZED.equals(renderRequest.getWindowState())) {
+ return;
+ }
+ String action = renderRequest.getParameter("action");
+ if ("refresh".equals(action)) {
+ WebAccessLogHelper.refresh();
+ }
+
+ String startDate = (String) renderRequest.getParameter("startDate");
+ String startMonth = (String) renderRequest.getParameter("startMonth");
+ String startYear = (String) renderRequest.getParameter("startYear");
+ String endDate = (String) renderRequest.getParameter("endDate");
+ String endMonth = (String) renderRequest.getParameter("endMonth");
+ String endYear = (String) renderRequest.getParameter("endYear");
+
+ Calendar cal1 = Calendar.getInstance(), cal2 = Calendar.getInstance();
+ // If no dates were passed we assume than no fields were passed and just
+ // filter on the current date.
+ if (startDate == null || startMonth == null || startDate == null
+ || endDate == null || endMonth == null || endDate == null) {
+ // just keep the month date and year
+ cal1.clear(Calendar.MILLISECOND);
+ cal1.clear(Calendar.MINUTE);
+ cal1.clear(Calendar.SECOND);
+ // Weird java bug. calling calendar.clear(Calendar.HOUR) does not
+ // clear the hour but this works.
+ cal1.clear(cal1.HOUR_OF_DAY);
+ cal1.clear(cal1.HOUR);
+
+ renderRequest.setAttribute("logs", WebAccessLogHelper
+ .getLogsByDate(cal1.getTime()));
+ renderRequest.setAttribute("toDate", cal1.getTime());
+ } else {
+ int sdt = Integer.parseInt(startDate), smnth = Integer
+ .parseInt(startMonth), syr = Integer.parseInt(startYear), edt = Integer
+ .parseInt(endDate), emnth = Integer.parseInt(endMonth), eyr = Integer
+ .parseInt(endYear);
+ boolean ignoreDates = renderRequest.getParameter("ignoreDates") == null;
+ String requestHost = (String) renderRequest
+ .getParameter("requestHost");
+ String authUser = (String) renderRequest.getParameter("authUser");
+ String requestMethod = (String) renderRequest
+ .getParameter("requestMethod");
+ String requestedURI = (String) renderRequest
+ .getParameter("requestedURI");
+ if (ignoreDates) {
+ cal1.clear();
+ cal2.clear();
+ cal1.set(Calendar.DATE, sdt);
+ cal1.set(Calendar.MONTH, smnth);
+ cal1.set(Calendar.YEAR, syr);
+ cal2.set(Calendar.DATE, edt);
+ cal2.set(Calendar.MONTH, emnth);
+ cal2.set(Calendar.YEAR, eyr);
+ renderRequest.setAttribute("logs", WebAccessLogHelper
+ .searchLogs(requestHost, authUser, requestMethod,
+ requestedURI, cal1.getTime(), cal2.getTime()));
+ } else {
+ renderRequest.setAttribute("logs", WebAccessLogHelper
+ .searchLogs(requestHost, authUser, requestMethod,
+ requestedURI));
+ }
+ renderRequest.setAttribute("toDate", cal2.getTime());
+ renderRequest.setAttribute("ignoreDates", new Boolean(ignoreDates));
+ renderRequest.setAttribute("requestHost", requestHost);
+ renderRequest.setAttribute("authUser", authUser);
+ renderRequest.setAttribute("requestMethod", requestMethod);
+ renderRequest.setAttribute("requestedURI", requestedURI);
+
+ }
+ renderRequest.setAttribute("fromDate", cal1.getTime());
+ searchView.include(renderRequest, renderRespose);
+ }
+
+ public void init(PortletConfig portletConfig) throws PortletException {
+ PortletContext pc = portletConfig.getPortletContext();
+ searchView = pc
+ .getRequestDispatcher("/WEB-INF/view/webaccesslogmanager/view.jsp");
+ helpView = pc
+ .getRequestDispatcher("/WEB-INF/view/webaccesslogmanager/help.jsp");
+ super.init(portletConfig);
+ }
+
+ public void processAction(ActionRequest actionRequest,
+ ActionResponse actionResponse) throws PortletException, IOException {
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/logmanager/WebAccessLogViewerPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/repository/RepositoryViewPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/repository/RepositoryViewPortlet.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/repository/RepositoryViewPortlet.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/repository/RepositoryViewPortlet.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,202 @@
+/**
+ *
+ * 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.repository;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URI;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.management.ObjectName;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletConfig;
+import javax.portlet.PortletContext;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.portlet.PortletFileUpload;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.KernelRegistry;
+
+public class RepositoryViewPortlet extends GenericPortlet {
+
+ private static final String REPO_OBJ_NAME = "geronimo.server:name=Repository,J2EEServer=geronimo,J2EEApplication=null,j2eeType=GBean,J2EEModule=org/apache/geronimo/System";
+
+ private Kernel kernel;
+
+ private PortletContext ctx;
+
+ private PortletRequestDispatcher normalView;
+
+ private PortletRequestDispatcher helpView;
+
+ private URL rootURL;
+
+ public void init(PortletConfig portletConfig) throws PortletException {
+ super.init(portletConfig);
+ kernel = KernelRegistry.getSingleKernel();
+ ctx = portletConfig.getPortletContext();
+ normalView = ctx
+ .getRequestDispatcher("/WEB-INF/view/repository/normal.jsp");
+ helpView = ctx
+ .getRequestDispatcher("/WEB-INF/view/repository/help.jsp");
+
+ URI uri = null;
+
+ try {
+ ObjectName reponame = new ObjectName(REPO_OBJ_NAME);
+ uri = new URI(".");
+ rootURL = (URL) kernel.invoke(reponame, "getURL",
+ new Object[] {uri}, new String[] {"java.net.URI"});
+ uri = new URI(rootURL.toString());
+ rootURL.getFile();
+ } catch (Exception e) {
+ throw new PortletException(e);
+ }
+
+ if (!uri.getScheme().equals("file")) {
+ throw new PortletException("unsupported scheme: repositoryURL = "
+ + rootURL.toString());
+ }
+ }
+
+ public void processAction(ActionRequest actionRequest,
+ ActionResponse actionResponse) throws PortletException, IOException {
+ try {
+
+ File rootDir = new File(rootURL.getFile() + File.separatorChar
+ + "upload" + File.separatorChar + "jars");
+
+ if (!rootDir.exists()) {
+ rootDir.mkdirs();
+ }
+
+ PortletFileUpload uploader = new PortletFileUpload(
+ new DiskFileItemFactory(10240, rootDir));
+
+ File uploadFile = null;
+
+ try {
+
+ List items = uploader.parseRequest(actionRequest);
+ for (Iterator i = items.iterator(); i.hasNext();) {
+ FileItem item = (FileItem) i.next();
+ if (!item.isFormField()) {
+ String fieldName = item.getFieldName().trim();
+ String name = item.getName().trim();
+ File file;
+
+ if (name.length() == 0) {
+ file = null;
+ } else {
+ // Firefox sends basename, IE sends full path
+ int index = name.lastIndexOf('\\');
+ if (index != -1) {
+ name = name.substring(index + 1);
+ }
+ file = new File(rootDir, name);
+ }
+ if ("local".equals(fieldName)) {
+ uploadFile = file;
+ }
+ if (file != null) {
+ try {
+ item.write(file);
+ } catch (Exception e) {
+ throw new PortletException(e);
+ }
+ }
+ }
+ }
+ } catch (FileUploadException e) {
+ throw new PortletException(e);
+ }
+ } catch (PortletException e) {
+ throw e;
+ }
+ }
+
+ protected void doView(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+ // i think generic portlet already does this
+ if (WindowState.MINIMIZED.equals(request.getWindowState())) {
+ return;
+ }
+
+ try {
+ File f = new File(new URI(rootURL.toString()));
+ List ls = listing(f, f.getCanonicalPath());
+ Collections.sort(ls);
+
+ request.setAttribute("org.apache.geronimo.console.repo.root",
+ rootURL.toString());
+ request.setAttribute("org.apache.geronimo.console.repo.list", ls);
+ } catch (Exception e) {
+ throw new PortletException(e);
+ }
+
+ normalView.include(request, response);
+ }
+
+ public void doHelp(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException {
+ helpView.include(request, response);
+ }
+
+ public List listing(File dir, String basepath) throws java.io.IOException {
+ if (dir == null) {
+ throw new IllegalArgumentException("directory argument is null");
+ }
+
+ if (!dir.isDirectory()) {
+ throw new IllegalArgumentException("directory argument expected");
+ }
+
+ List listing = new ArrayList();
+
+ List ls = Arrays.asList(dir.listFiles());
+ Iterator iter = ls.iterator();
+
+ while (iter.hasNext()) {
+ File f = (File) iter.next();
+
+ if (f.isDirectory()) {
+ List listing1 = listing(f, basepath);
+ listing.addAll(listing1);
+ } else {
+ listing.add(f.getCanonicalPath().substring(
+ basepath.length() + 1));
+ }
+ }
+ return listing;
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/repository/RepositoryViewPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/securitymanager/AbstractSecurityManagerPortlet.java
URL: http://svn.apache.org/viewcvs/geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/securitymanager/AbstractSecurityManagerPortlet.java?rev=219976&view=auto
==============================================================================
--- geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/securitymanager/AbstractSecurityManagerPortlet.java (added)
+++ geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/securitymanager/AbstractSecurityManagerPortlet.java Wed Jul 20 18:38:12 2005
@@ -0,0 +1,57 @@
+/**
+ *
+ * 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.securitymanager;
+
+import java.io.IOException;
+
+import javax.portlet.GenericPortlet;
+import javax.portlet.PortletException;
+import javax.portlet.PortletRequestDispatcher;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import javax.portlet.WindowState;
+
+public abstract class AbstractSecurityManagerPortlet extends GenericPortlet {
+
+ protected PortletRequestDispatcher normalView;
+
+ protected PortletRequestDispatcher addNormalView;
+
+ protected PortletRequestDispatcher maximizedView;
+
+ protected PortletRequestDispatcher addMaximizedView;
+
+ protected PortletRequestDispatcher helpView;
+
+ protected PortletRequestDispatcher errorView;
+
+ protected void doEdit(RenderRequest renderRequest,
+ RenderResponse renderResponse) throws PortletException, IOException {
+ if (WindowState.NORMAL.equals(renderRequest.getWindowState())) {
+ addNormalView.include(renderRequest, renderResponse);
+ } else {
+ addMaximizedView.include(renderRequest, renderResponse);
+ }
+ }
+
+ protected void doHelp(RenderRequest renderRequest,
+ RenderResponse renderResponse) throws PortletException, IOException {
+ helpView.include(renderRequest, renderResponse);
+ }
+
+}
Propchange: geronimo/trunk/sandbox/console-standard/src/java/org/apache/geronimo/console/securitymanager/AbstractSecurityManagerPortlet.java
------------------------------------------------------------------------------
svn:eol-style = native