You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2006/04/26 16:45:12 UTC

svn commit: r397209 [1/5] - in /incubator/activemq/trunk/activemq-web-console: ./ .settings/ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/activemq/ src/main/java/org/apache/activemq/web/ src/main/j...

Author: jstrachan
Date: Wed Apr 26 07:45:03 2006
New Revision: 397209

URL: http://svn.apache.org/viewcvs?rev=397209&view=rev
Log:
Initial import of a simple web based console for ActiveMQ

Added:
    incubator/activemq/trunk/activemq-web-console/
    incubator/activemq/trunk/activemq-web-console/.classpath
    incubator/activemq/trunk/activemq-web-console/.project
    incubator/activemq/trunk/activemq-web-console/.settings/
    incubator/activemq/trunk/activemq-web-console/.settings/org.eclipse.jdt.core.prefs
    incubator/activemq/trunk/activemq-web-console/README.txt   (with props)
    incubator/activemq/trunk/activemq-web-console/pom.xml   (with props)
    incubator/activemq/trunk/activemq-web-console/src/
    incubator/activemq/trunk/activemq-web-console/src/main/
    incubator/activemq/trunk/activemq-web-console/src/main/java/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/
    incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/resources/
    incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/.cvsignore
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/dispatcher-servlet.xml   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/jsp/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/jspf/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/jspf/headertags.jspf
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/jspf/old.jspf
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/form/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/form/checkbox.tag
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/form/option.tag
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/form/text.tag
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/form/uri.tag
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/jms/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/jms/forEachMessage.tag
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/tags/jms/persistent.tag
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/web.xml   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/browse.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/decorators/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/decorators/main.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/decorators/panel.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/decorators/printable.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/graph.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/images/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/images/atombadge.png   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/images/rssbadge.gif   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/images/tableft10.gif   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/images/tabright10.gif   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/index.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/common.js   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/css.js   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/prototype.js   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/rico.js   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/sorttable.js   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/js/standardista-table-sorting.js   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/message.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/queues.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/send.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/deliciouslyblue.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/forms.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/layout-navtop-subright.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/layout.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/sorttable.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/tools.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/styles/typo.css   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/subscribers.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/test/
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/test/dummy.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/test/index.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/test/systemProperties.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/main/webapp/topics.jsp   (with props)
    incubator/activemq/trunk/activemq-web-console/src/test/
    incubator/activemq/trunk/activemq-web-console/src/test/java/
    incubator/activemq/trunk/activemq-web-console/src/test/java/org/
    incubator/activemq/trunk/activemq-web-console/src/test/java/org/apache/
    incubator/activemq/trunk/activemq-web-console/src/test/java/org/apache/activemq/
    incubator/activemq/trunk/activemq-web-console/src/test/java/org/apache/activemq/web/
    incubator/activemq/trunk/activemq-web-console/src/test/java/org/apache/activemq/web/tool/
    incubator/activemq/trunk/activemq-web-console/src/test/java/org/apache/activemq/web/tool/Main.java   (with props)

Added: incubator/activemq/trunk/activemq-web-console/.classpath
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/.classpath?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/.classpath (added)
+++ incubator/activemq/trunk/activemq-web-console/.classpath Wed Apr 26 07:45:03 2006
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry kind="src" path="src/main/webapp"/>
+	<classpathentry kind="src" path="src/main/resources"/>
+	<classpathentry output="target/test-classes" kind="src" path="src/test/java"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/mx4j/mx4j/2.1.1/mx4j-2.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty/6.0.0beta14/jetty-6.0.0beta14.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jms_1.1_spec/1.0/geronimo-jms_1.1_spec-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xstream/xstream/1.1.2/xstream-1.1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/jetty-util/6.0.0beta14/jetty-util-6.0.0beta14.jar"/>
+	<classpathentry kind="var" path="M2_REPO/ant/ant/1.6.2/ant-1.6.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/rome/rome/0.8/rome-0.8.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-jcl/1.0-rc5/slf4j-jcl-1.0-rc5.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/xbean/xbean-spring/2.2/xbean-spring-2.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/incubator-activemq/activemq-jaas/4.0-SNAPSHOT/activemq-jaas-4.0-SNAPSHOT.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/servlet/jstl/1.0/jstl-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/incubator-activemq/activeio-core/3.0-SNAPSHOT/activeio-core-3.0-SNAPSHOT.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xmlpull/xmlpull/1.1.3.4d_b4_min/xmlpull-1.1.3.4d_b4_min.jar"/>
+	<classpathentry kind="var" path="M2_REPO/stax/stax-api/1.0/stax-api-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/springframework/spring/1.2.6/spring-1.2.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/backport-util-concurrent/backport-util-concurrent/2.1/backport-util-concurrent-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-j2ee-management_1.0_spec/1.0/geronimo-j2ee-management_1.0_spec-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/mortbay/jetty/servlet-api-2.5/6.0.0beta14/servlet-api-2.5-6.0.0beta14.jar"/>
+	<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-jta_1.0.1B_spec/1.0/geronimo-jta_1.0.1B_spec-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/geronimo/specs/geronimo-j2ee-jacc_1.0_spec/1.0/geronimo-j2ee-jacc_1.0_spec-1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.1.1.0/derby-10.1.1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/opensymphony/sitemesh/2.2.1/sitemesh-2.2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/qdox/qdox/1.5/qdox-1.5.jar"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/activemq-core"/>
+	<classpathentry combineaccessrules="false" kind="src" path="/activemq-web"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>

Added: incubator/activemq/trunk/activemq-web-console/.project
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/.project?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/.project (added)
+++ incubator/activemq/trunk/activemq-web-console/.project Wed Apr 26 07:45:03 2006
@@ -0,0 +1,14 @@
+<projectDescription>
+  <name>activemq-web-console</name>
+  <comment>Web Console for ActiveMQ</comment>
+  <projects/>
+  <buildSpec>
+    <buildCommand>
+      <name>org.eclipse.jdt.core.javabuilder</name>
+      <arguments/>
+    </buildCommand>
+  </buildSpec>
+  <natures>
+    <nature>org.eclipse.jdt.core.javanature</nature>
+  </natures>
+</projectDescription>
\ No newline at end of file

Added: incubator/activemq/trunk/activemq-web-console/.settings/org.eclipse.jdt.core.prefs
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/.settings/org.eclipse.jdt.core.prefs?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/.settings/org.eclipse.jdt.core.prefs (added)
+++ incubator/activemq/trunk/activemq-web-console/.settings/org.eclipse.jdt.core.prefs Wed Apr 26 07:45:03 2006
@@ -0,0 +1,5 @@
+#Wed Apr 26 13:41:43 BST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.4
+org.eclipse.jdt.core.compiler.compliance=1.4
+org.eclipse.jdt.core.compiler.source=1.4

Added: incubator/activemq/trunk/activemq-web-console/README.txt
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/README.txt?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/README.txt (added)
+++ incubator/activemq/trunk/activemq-web-console/README.txt Wed Apr 26 07:45:03 2006
@@ -0,0 +1,8 @@
+
+Welcome to the ActiveMQ Web Console
+
+To run the console, the jetty plugin may be used:
+
+  mvn jetty6:run
+
+

Propchange: incubator/activemq/trunk/activemq-web-console/README.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/README.txt
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/activemq/trunk/activemq-web-console/README.txt
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/README.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/pom.xml
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/pom.xml?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/pom.xml (added)
+++ incubator/activemq/trunk/activemq-web-console/pom.xml Wed Apr 26 07:45:03 2006
@@ -0,0 +1,184 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+    Copyright 2005-2006 The Apache Software Foundation
+   
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+   
+    http://www.apache.org/licenses/LICENSE-2.0
+   
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+
+<project
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns="http://maven.apache.org/POM/4.0.0">
+  
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>incubator-activemq</groupId>
+    <artifactId>activemq-parent</artifactId>
+    <version>4.0-SNAPSHOT</version>
+    <relativePath>../pom.xml</relativePath>
+  </parent>
+
+  <artifactId>activemq-web-console</artifactId>
+  <packaging>war</packaging>
+  <name>ActiveMQ :: Web Console</name>
+  <description>Web Console for ActiveMQ</description>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.mortbay.jetty</groupId>
+        <artifactId>maven-jetty6-plugin</artifactId>
+        <configuration>
+          
+	         <systemProperties>
+            
+              <!-- enable easy connection to JConsole -->
+              <systemProperty>
+								<name>com.sun.management.jmxremote</name>
+								<value></value>
+							</systemProperty>
+           </systemProperties>
+
+          <scanIntervalSeconds>10</scanIntervalSeconds>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  
+  <dependencies>
+  
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>servlet-api-2.5</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    
+    <!-- j2ee jars -->
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-jms_1.1_spec</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-jta_1.0.1B_spec</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-j2ee-management_1.0_spec</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.geronimo.specs</groupId>
+      <artifactId>geronimo-j2ee-jacc_1.0_spec</artifactId>
+    </dependency>
+
+    <!-- activemq -->
+    <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>activemq-web</artifactId>
+    </dependency>
+
+    <!-- TODO this should not be needed, but transitive dependencies are not working -->
+    <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>activemq-core</artifactId>
+    </dependency>
+        <dependency>
+      <groupId>${pom.groupId}</groupId>
+      <artifactId>activeio-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>incubator-activemq</groupId>
+      <artifactId>activemq-jaas</artifactId>
+      <optional>true</optional>
+    </dependency>
+
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.xbean</groupId>
+      <artifactId>xbean-spring</artifactId>
+    </dependency>
+    
+    <!-- web container -->
+    <dependency>
+      <groupId>org.mortbay.jetty</groupId>
+      <artifactId>jetty</artifactId>
+      <scope>test</scope>
+    </dependency>
+      <dependency>
+        <groupId>org.mortbay.jetty</groupId>
+        <artifactId>jetty-util</artifactId>
+        <scope>test</scope>
+      </dependency>
+
+      <!-- enable commons-logging when inside jetty6:run -->
+      <dependency>
+			  <groupId>org.slf4j</groupId>
+			  <artifactId>slf4j-jcl</artifactId>
+			  <version>1.0-rc5</version>
+        <!--
+        <scope>optional</scope>
+        -->
+      </dependency>
+
+  
+      <!-- SiteMesh for layout -->
+    <dependency>
+      <groupId>opensymphony</groupId>
+      <artifactId>sitemesh</artifactId>
+      <version>2.2.1</version>
+    </dependency>
+    
+    <!-- JSTL support -->
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>jstl</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>taglibs</groupId>
+      <artifactId>standard</artifactId>
+      <version>1.1.2</version>
+    </dependency>
+    
+
+    <!-- XStream marshalling -->
+    <dependency>
+      <groupId>xmlpull</groupId>
+      <artifactId>xmlpull</artifactId>
+    </dependency>    
+
+    <dependency>
+      <groupId>xstream</groupId>
+      <artifactId>xstream</artifactId>
+    </dependency>    
+    
+    <!-- used for testing -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    
+    <!-- Derby SQL DB used for testing JDBC message store -->
+    <dependency>
+      <groupId>org.apache.derby</groupId>
+      <artifactId>derby</artifactId>
+    </dependency>
+  </dependencies>
+
+</project>

Propchange: incubator/activemq/trunk/activemq-web-console/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/pom.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/activemq/trunk/activemq-web-console/pom.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/pom.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,134 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web;
+
+import org.apache.activemq.broker.Broker;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.broker.jmx.BrokerView;
+import org.apache.activemq.broker.jmx.BrokerViewMBean;
+import org.apache.activemq.broker.jmx.DurableSubscriptionViewMBean;
+import org.apache.activemq.broker.jmx.ManagedRegionBroker;
+import org.apache.activemq.broker.jmx.ManagementContext;
+import org.apache.activemq.broker.jmx.QueueViewMBean;
+import org.apache.activemq.broker.jmx.TopicViewMBean;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.management.MBeanServer;
+import javax.management.MBeanServerInvocationHandler;
+import javax.management.ObjectName;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class BrokerFacade {
+    private static final Log log = LogFactory.getLog(BrokerFacade.class);
+
+    private BrokerService brokerService;
+
+    public BrokerFacade(BrokerService brokerService) {
+        this.brokerService = brokerService;
+    }
+
+    public BrokerService getBrokerService() {
+        return brokerService;
+    }
+
+    public Broker getBroker() throws Exception {
+        return brokerService.getBroker();
+    }
+
+    public ManagementContext getManagementContext() {
+        return brokerService.getManagementContext();
+    }
+
+    public BrokerViewMBean getBrokerAdmin() throws Exception {
+        // TODO could use JMX to look this up
+        return brokerService.getAdminView();
+    }
+
+    public ManagedRegionBroker getManagedBroker() throws Exception {
+        BrokerView adminView = brokerService.getAdminView();
+        if (adminView == null) {
+            return null;
+        }
+        return adminView.getBroker();
+    }
+
+    // TODO - we should not have to use JMX to implement the following methods...
+    public Collection getQueues() throws Exception {
+        BrokerView broker = brokerService.getAdminView();
+        if (broker == null) {
+            return Collections.EMPTY_LIST;
+        }
+        ObjectName[] queues = broker.getQueues();
+        return getManagedObjects(queues, QueueViewMBean.class);
+    }
+    
+    public Collection getTopics() throws Exception {
+        BrokerView broker = brokerService.getAdminView();
+        if (broker == null) {
+            return Collections.EMPTY_LIST;
+        }
+        ObjectName[] queues = broker.getTopics();
+        return getManagedObjects(queues, TopicViewMBean.class);
+    }
+    
+    public Collection getDurableTopicSubscribers() throws Exception {
+        BrokerView broker = brokerService.getAdminView();
+        if (broker == null) {
+            return Collections.EMPTY_LIST;
+        }
+        ObjectName[] queues = broker.getDurableTopicSubscribers();
+        return getManagedObjects(queues, DurableSubscriptionViewMBean.class);
+    }
+
+    protected Collection getManagedObjects(ObjectName[] names, Class type) {
+        List answer = new ArrayList();
+        MBeanServer mbeanServer = getManagementContext().getMBeanServer();
+        if (mbeanServer != null) {
+            for (int i = 0; i < names.length; i++) {
+                ObjectName name = names[i];
+                Object value = MBeanServerInvocationHandler.newProxyInstance(mbeanServer, name, type, true);
+                if (value != null) {
+                    answer.add(value);
+                }
+            }
+        }
+        return answer;
+    }
+
+    /**
+     * public Collection getQueues() throws Exception { ManagedRegionBroker
+     * broker = getManagedBroker(); if (broker == null) { return new
+     * ArrayList(); } return
+     * broker.getQueueRegion().getDestinationMap().values(); }
+     * 
+     * 
+     * public Collection getTopics() throws Exception { ManagedRegionBroker
+     * broker = getManagedBroker(); if (broker == null) { return new
+     * ArrayList(); } return
+     * broker.getTopicRegion().getDestinationMap().values(); }
+     */
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/BrokerFacade.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,121 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.command.ActiveMQQueue;
+import org.apache.activemq.command.ActiveMQTopic;
+import org.springframework.web.servlet.ModelAndView;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ *
+ * @version $Revision$
+ */
+public class DestinationFacade extends BrokerFacade {
+
+    private String JMSDestination;
+    private String JMSDestinationType;
+
+    public DestinationFacade(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    
+    public String toString() {
+        return super.toString() + "[destination:" + JMSDestination + "; type=" + JMSDestinationType + "]";
+    }
+
+
+    // Operations
+    // -------------------------------------------------------------------------
+    public void removeDestination() throws Exception {
+        getValidDestination();
+        if (isQueue()) {
+            getBrokerAdmin().removeQueue(getJMSDestination());
+        }
+        else {
+            getBrokerAdmin().removeTopic(getJMSDestination());
+        }
+    }
+
+    public void addDestination() throws Exception {
+        if (isQueue()) {
+            getBrokerAdmin().addQueue(getValidDestination());
+        }
+        else {
+            getBrokerAdmin().addTopic(getValidDestination());
+        }
+    }
+    
+    // Properties
+    // -------------------------------------------------------------------------
+    public boolean isQueue() {
+        if (JMSDestinationType != null && JMSDestinationType.equalsIgnoreCase("topic")) {
+            return false;
+        }
+        return true;
+    }
+
+    public String getJMSDestination() {
+        return JMSDestination;
+    }
+
+    public void setJMSDestination(String destination) {
+        this.JMSDestination = destination;
+    }
+
+    public String getJMSDestinationType() {
+        return JMSDestinationType;
+    }
+
+    public void setJMSDestinationType(String type) {
+        this.JMSDestinationType = type;
+    }
+
+    protected ActiveMQDestination createDestination() {
+        if (isQueue()) {
+            return new ActiveMQQueue(getValidDestination());
+        }
+        else {
+            return new ActiveMQTopic(getValidDestination());
+        }
+    }
+
+    protected String getValidDestination() {
+        if (JMSDestination == null) {
+            throw new IllegalArgumentException("No JMSDestination parameter specified");
+        }
+        return JMSDestination;
+    }
+
+
+    protected ModelAndView redirectToRequest(HttpServletRequest request) {
+        String view = "redirect:" + request.getRequestURI();
+        System.out.println("Redirecting to: " + view);
+        return new ModelAndView(view);
+    }
+
+
+    protected ModelAndView redirectToBrowseView() {
+        return new ModelAndView("redirect:" + (isQueue() ? "queues.jsp" : "topics.jsp"));
+    }
+
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DestinationFacade.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,50 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web;
+
+import org.apache.activemq.broker.BrokerService;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class DurableSubscriberFacade extends DestinationFacade {
+
+    private String clientId;
+    private String subscriberName;
+
+    public DurableSubscriberFacade(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public String getSubscriberName() {
+        return subscriberName;
+    }
+
+    public void setSubscriberName(String subscriberName) {
+        this.subscriberName = subscriberName;
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/DurableSubscriberFacade.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,96 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web;
+
+import org.apache.activemq.broker.BrokerService;
+import org.springframework.beans.factory.DisposableBean;
+
+import javax.jms.JMSException;
+import javax.jms.Queue;
+import javax.jms.QueueBrowser;
+import javax.jms.Session;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class QueueBrowseQuery extends DestinationFacade implements DisposableBean {
+    private SessionPool sessionPool;
+    private String selector;
+    private Session session;
+    private Queue queue;
+    private QueueBrowser browser;
+
+    public QueueBrowseQuery(BrokerService brokerService, SessionPool sessionPool) throws JMSException {
+        super(brokerService);
+        this.sessionPool = sessionPool;
+        this.session = sessionPool.borrowSession();
+
+    }
+
+    public void destroy() throws Exception {
+        if (browser != null) {
+            browser.close();
+        }
+        sessionPool.returnSession(session);
+        session = null;
+    }
+
+    public QueueBrowser getBrowser() throws JMSException {
+        if (browser == null) {
+            browser = createBrowser();
+        }
+        return browser;
+    }
+
+    public void setBrowser(QueueBrowser browser) {
+        this.browser = browser;
+    }
+
+    public Queue getQueue() throws JMSException {
+        if (queue == null) {
+            queue = session.createQueue(getValidDestination());
+        }
+        return queue;
+    }
+
+    public void setQueue(Queue queue) {
+        this.queue = queue;
+    }
+
+    public String getSelector() {
+        return selector;
+    }
+
+    public void setSelector(String selector) {
+        this.selector = selector;
+    }
+
+    public Session getSession() {
+        return session;
+    }
+
+    public boolean isQueue() {
+        return true;
+    }
+
+    protected QueueBrowser createBrowser() throws JMSException {
+        return getSession().createBrowser(getQueue(), getSelector());
+    }
+
+    
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/QueueBrowseQuery.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,88 @@
+/*
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web;
+
+import org.apache.activemq.ActiveMQConnectionFactory;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Session;
+
+import java.util.LinkedList;
+
+/**
+ * A simple pool of JMS Session objects intended for use by Queue browsers.
+ * 
+ * @version $Revision$
+ */
+public class SessionPool {
+
+    private ConnectionFactory connectionFactory;
+    private Connection connection;
+    private LinkedList sessions = new LinkedList();
+
+    public Connection getConnection() throws JMSException {
+        if (connection == null) {
+            connection = getConnectionFactory().createConnection();
+            connection.start();
+        }
+        return connection;
+    }
+
+    public void setConnection(Connection connection) {
+        this.connection = connection;
+    }
+
+    public ConnectionFactory getConnectionFactory() {
+        if (connectionFactory == null) {
+            // TODO support remote brokers too
+            connectionFactory = new ActiveMQConnectionFactory("vm://localhost");
+        }
+        return connectionFactory;
+    }
+
+    public void setConnectionFactory(ConnectionFactory connectionFactory) {
+        this.connectionFactory = connectionFactory;
+    }
+
+
+    public Session borrowSession() throws JMSException {
+        Session answer = null;
+        synchronized (sessions) {
+            if (sessions.isEmpty()) {
+                answer = createSession();
+            }
+            else {
+                answer = (Session) sessions.removeLast();
+            }
+        }
+        return answer;
+    }
+
+    protected void returnSession(Session session) {
+        if (session != null) {
+            synchronized (sessions) {
+                sessions.add(session);
+            }
+        }
+    }
+
+    protected Session createSession() throws JMSException {
+        return getConnection().createSession(false, Session.AUTO_ACKNOWLEDGE);
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/SessionPool.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,43 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.controller;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.web.DestinationFacade;
+import org.apache.activemq.web.DurableSubscriberFacade;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.Controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class CreateDestination extends DestinationFacade implements Controller {
+
+    public CreateDestination(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        addDestination();
+        return redirectToBrowseView();
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateDestination.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,54 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.controller;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.web.DurableSubscriberFacade;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.Controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class CreateSubscriber extends DurableSubscriberFacade implements Controller {
+    private String selector;
+
+    public CreateSubscriber(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    public String getSelector() {
+        return selector;
+    }
+
+    public void setSelector(String selector) {
+        this.selector = selector;
+    }
+
+    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        if (selector != null && selector.length() == 0) {
+            selector = null;
+        }
+        getBrokerAdmin().createDurableSubscriber(getClientId(), getSubscriberName(), getValidDestination(), selector);
+        return new ModelAndView("redirect:subscribers.jsp");
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/CreateSubscriber.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,44 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.controller;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.web.DestinationFacade;
+import org.apache.activemq.web.DurableSubscriberFacade;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.Controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class DeleteDestination extends DestinationFacade implements Controller {
+
+    public DeleteDestination(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        removeDestination();
+        return redirectToBrowseView();
+    }
+
+    
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteDestination.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,42 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.controller;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.web.DurableSubscriberFacade;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.Controller;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ *
+ * @version $Revision$
+ */
+public class DeleteSubscriber extends DurableSubscriberFacade implements Controller {
+
+    public DeleteSubscriber(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        getBrokerAdmin().destroyDurableSubscriber(getClientId(), getSubscriberName());
+        return new ModelAndView("redirect:subscribers.jsp");
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/DeleteSubscriber.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,199 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.controller;
+
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.command.ActiveMQDestination;
+import org.apache.activemq.web.DestinationFacade;
+import org.apache.activemq.web.WebClient;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.mvc.Controller;
+
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * Sends a message
+ * 
+ * @version $Revision$
+ */
+public class SendMessage extends DestinationFacade implements Controller {
+
+    private String JMSText;
+    private boolean JMSPersistent;
+    private int JMSPriority;
+    private int JMSTimeToLive = -1;
+    private String JMSCorrelationID;
+    private String JMSReplyTo;
+    private String JMSType;
+    private int JMSMessageCount = 1;
+    private String JMSMessageCountHeader = "JMSXMessageNumber";
+    private boolean redirectToBrowse;
+
+    public SendMessage(BrokerService brokerService) {
+        super(brokerService);
+    }
+
+    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
+        WebClient client = WebClient.getWebClient(request);
+        ActiveMQDestination dest = createDestination();
+
+        sendMessages(request, client, dest);
+        if (redirectToBrowse) {
+            if (isQueue()) {
+                return new ModelAndView("redirect:browse.jsp?destination=" + getJMSDestination());
+            }
+        }
+        return redirectToBrowseView();
+    }
+
+    protected void sendMessages(HttpServletRequest request, WebClient client, ActiveMQDestination dest) throws JMSException {
+        if (JMSMessageCount <= 1) {
+            JMSMessageCount = 1;
+        }
+        for (int i = 0; i < JMSMessageCount; i++) {
+            Message message = createMessage(client, request);
+            appendHeaders(message, request);
+            if (JMSMessageCount > 1) {
+                message.setIntProperty(JMSMessageCountHeader, i + 1);
+            }
+
+            client.send(dest, message, JMSPersistent, JMSPriority, JMSTimeToLive);
+
+            System.out.println("Sent message: " + message);
+        }
+    }
+
+    // Properties
+    // -------------------------------------------------------------------------
+
+    public String getJMSCorrelationID() {
+        return JMSCorrelationID;
+    }
+
+    public void setJMSCorrelationID(String correlationID) {
+        JMSCorrelationID = correlationID;
+    }
+
+    public String getJMSReplyTo() {
+        return JMSReplyTo;
+    }
+
+    public void setJMSReplyTo(String replyTo) {
+        JMSReplyTo = replyTo;
+    }
+
+    public String getJMSType() {
+        return JMSType;
+    }
+
+    public void setJMSType(String type) {
+        JMSType = type;
+    }
+
+    public boolean isJMSPersistent() {
+        return JMSPersistent;
+    }
+
+    public void setJMSPersistent(boolean persistent) {
+        this.JMSPersistent = persistent;
+    }
+
+    public int getJMSPriority() {
+        return JMSPriority;
+    }
+
+    public void setJMSPriority(int priority) {
+        this.JMSPriority = priority;
+    }
+
+    public String getJMSText() {
+        return JMSText;
+    }
+
+    public void setJMSText(String text) {
+        this.JMSText = text;
+    }
+
+    public int getJMSTimeToLive() {
+        return JMSTimeToLive;
+    }
+
+    public void setJMSTimeToLive(int timeToLive) {
+        this.JMSTimeToLive = timeToLive;
+    }
+
+    public int getJMSMessageCount() {
+        return JMSMessageCount;
+    }
+
+    public void setJMSMessageCount(int copies) {
+        JMSMessageCount = copies;
+    }
+
+    // Implementation methods
+    // -------------------------------------------------------------------------
+    protected Message createMessage(WebClient client, HttpServletRequest request) throws JMSException {
+        if (JMSText != null) {
+            return client.getSession().createTextMessage(JMSText);
+        }
+        // TODO create Bytes message from request body...
+        return client.getSession().createMessage();
+    }
+
+    protected void appendHeaders(Message message, HttpServletRequest request) throws JMSException {
+        message.setJMSCorrelationID(JMSCorrelationID);
+        if (JMSReplyTo != null) {
+            message.setJMSReplyTo(ActiveMQDestination.createDestination(JMSReplyTo, ActiveMQDestination.QUEUE_TYPE));
+        }
+        message.setJMSType(JMSType);
+
+        // now lets add all of the parameters
+        Map map = request.getParameterMap();
+        if (map != null) {
+            for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) {
+                Map.Entry entry = (Map.Entry) iter.next();
+                String name = (String) entry.getKey();
+                Object value = entry.getValue();
+                if (isValidPropertyName(name)) {
+                    if (value instanceof String[]) {
+                        String[] array = (String[]) value;
+                        if (array.length > 0) {
+                            value = array[0];
+                        }
+                        else {
+                            value = null;
+                        }
+                    }
+                    if (value != null) {
+                        message.setObjectProperty(name, value);
+                    }
+                }
+            }
+        }
+    }
+
+    protected boolean isValidPropertyName(String name) {
+        // allow JMSX extensions or non JMS properties
+        return name.startsWith("JMSX") || !name.startsWith("JMS");
+    }
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/SendMessage.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt Wed Apr 26 07:45:03 2006
@@ -0,0 +1,3 @@
+
+With a small amount of work to the controller, we should be able to delete these classes and instead
+just expose the methods of the facades directly

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/controller/TODO.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,180 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.filter;
+
+import org.springframework.web.bind.ServletRequestDataBinder;
+import org.springframework.web.context.WebApplicationContext;
+import org.springframework.web.context.support.WebApplicationContextUtils;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import java.io.IOException;
+import java.util.AbstractMap;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Exposes Spring ApplicationContexts to JSP EL and other view technologies.
+ * Currently a variable is placed in application scope (by default called
+ * 'applicationContext') so that POJOs can be pulled out of Spring in a JSP page
+ * to render things using EL expressions. <br/>
+ * 
+ * e.g. ${applicationContext.cheese} would access the cheese POJO. Or
+ * ${applicationContext.cheese.name} would access the name property of the
+ * cheese POJO. <br/>
+ * 
+ * You can then use JSTL to work with these POJOs such as &lt;c.set var="myfoo"
+ * value="${applicationContext.foo}"/&gt; <br/>
+ * 
+ * In addition to applicationContext a 'requestContext' variable is created
+ * which will automatically bind any request parameters to the POJOs extracted
+ * from the applicationContext - which is ideal for POJOs which implement
+ * queries in view technologies.
+ * 
+ * @version $Revision$
+ */
+public class ApplicationContextFilter implements Filter {
+
+    private ServletContext servletContext;
+    private String applicationContextName = "applicationContext";
+    private String requestContextName = "requestContext";
+    private String requestName = "request";
+
+    public void init(FilterConfig config) throws ServletException {
+        this.servletContext = config.getServletContext();
+        this.applicationContextName = getInitParameter(config, "applicationContextName", applicationContextName);
+        this.requestContextName = getInitParameter(config, "requestContextName", requestContextName);
+        this.requestName = getInitParameter(config, "requestName", requestName);
+
+        // register the application context in the applicationScope
+        WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
+        Map wrapper = createApplicationContextWrapper(context);
+        servletContext.setAttribute(applicationContextName, wrapper);
+    }
+
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+        // lets register a requestContext in the requestScope
+        Map requestContextWrapper = createRequestContextWrapper(request);
+        request.setAttribute(requestContextName, requestContextWrapper);
+        request.setAttribute(requestName, request);
+        chain.doFilter(request, response);
+    }
+
+    public void destroy() {
+    }
+
+    public ServletContext getServletContext() {
+        return servletContext;
+    }
+
+    public String getApplicationContextName() {
+        return applicationContextName;
+    }
+
+    public void setApplicationContextName(String variableName) {
+        this.applicationContextName = variableName;
+    }
+
+    public String getRequestContextName() {
+        return requestContextName;
+    }
+
+    public void setRequestContextName(String requestContextName) {
+        this.requestContextName = requestContextName;
+    }
+
+    protected String getInitParameter(FilterConfig config, String key, String defaultValue) {
+        String parameter = config.getInitParameter(key);
+        return (parameter != null) ? parameter : defaultValue;
+    }
+
+    /**
+     * Creates a wrapper around the web application context so that it can be
+     * accessed easily from inside JSP EL (or other expression languages in
+     * other view technologies).
+     */
+    protected Map createApplicationContextWrapper(final WebApplicationContext context) {
+        Map wrapper = new AbstractMap() {
+
+            public WebApplicationContext getContext() {
+                return context;
+            }
+
+            public Object get(Object key) {
+                if (key == null) {
+                    return null;
+                }
+                return context.getBean(key.toString());
+            }
+
+            public Set entrySet() {
+                return Collections.EMPTY_SET;
+            }
+
+        };
+        return wrapper;
+    }
+
+    /**
+     * Creates a wrapper around the request context (e.g. to allow POJOs to be
+     * auto-injected from request parameter values etc) so that it can be
+     * accessed easily from inside JSP EL (or other expression languages in
+     * other view technologies).
+     */
+    protected Map createRequestContextWrapper(final ServletRequest request) {
+        final WebApplicationContext context = WebApplicationContextUtils.getWebApplicationContext(servletContext);
+        Map wrapper = new AbstractMap() {
+
+            public WebApplicationContext getContext() {
+                return context;
+            }
+
+            public Object get(Object key) {
+                if (key == null) {
+                    return null;
+                }
+                return bindRequestBean(context.getBean(key.toString()), request);
+            }
+
+            public Set entrySet() {
+                return Collections.EMPTY_SET;
+            }
+
+        };
+        return wrapper;
+
+    }
+
+    /**
+     * Binds properties from the request parameters to the given POJO which is
+     * useful for POJOs which are configurable via request parameters such as
+     * for query/view POJOs
+     */
+    protected Object bindRequestBean(Object bean, ServletRequest request) {
+        ServletRequestDataBinder binder = new ServletRequestDataBinder(bean, null);
+        binder.bind(request);
+        return bean;
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/filter/ApplicationContextFilter.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java Wed Apr 26 07:45:03 2006
@@ -0,0 +1,44 @@
+/**
+ *
+ * Copyright 2005-2006 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.activemq.web.handler;
+
+import org.springframework.web.bind.ServletRequestDataBinder;
+import org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * 
+ * @version $Revision$
+ */
+public class BindingBeanNameUrlHandlerMapping extends BeanNameUrlHandlerMapping {
+
+    protected Object getHandlerInternal(HttpServletRequest request) throws Exception {
+        Object object = super.getHandlerInternal(request);
+
+        if (object instanceof String) {
+            String handlerName = (String) object;
+            object = getApplicationContext().getBean(handlerName);
+        }
+
+        ServletRequestDataBinder binder = new ServletRequestDataBinder(object, null);
+        binder.bind(request);
+        System.out.println("Bound POJO is now: " + object);
+        return object;
+    }
+
+}

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/java/org/apache/activemq/web/handler/BindingBeanNameUrlHandlerMapping.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties Wed Apr 26 07:45:03 2006
@@ -0,0 +1,20 @@
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=INFO, stdout
+
+log4j.logger.org.apache.activemq.spring=WARN
+log4j.logger.org.springframework=warn
+
+
+# CONSOLE appender not used by default
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+
+# File appender
+log4j.appender.out=org.apache.log4j.FileAppender
+log4j.appender.out.layout=org.apache.log4j.PatternLayout
+log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
+log4j.appender.out.file=activemq-console.log
+log4j.appender.out.append=true

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/resources/log4j.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/.cvsignore
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/.cvsignore?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/.cvsignore (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/.cvsignore Wed Apr 26 07:45:03 2006
@@ -0,0 +1 @@
+classes

Added: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml Wed Apr 26 07:45:03 2006
@@ -0,0 +1,99 @@
+<!-- START SNIPPET: xbean -->
+<beans xmlns="http://activemq.org/config/1.0">
+  
+  <broker useJmx="true">
+  
+    <!--  Use the following to set the broker memory limit (in bytes)
+  	<memoryManager>  
+	  	<usageManager id="memory-manager" limit="1048576"/>
+  	</memoryManager>
+  	-->
+  	
+	<!-- Use the following to configure how ActiveMQ is exposed in JMX
+	<managementContext>
+	   <managementContext connectorPort="1099" jmxDomainName="org.apache.activemq"/>
+	</managementContext>
+	-->
+
+	<!-- In ActiveMQ 4, you can setup destination policies -->  
+    <destinationPolicy>
+      <policyMap><policyEntries>
+        
+          <policyEntry topic="FOO.>">
+            <dispatchPolicy>
+              <strictOrderDispatchPolicy />
+            </dispatchPolicy>
+            <subscriptionRecoveryPolicy>
+              <lastImageSubscriptionRecoveryPolicy />
+            </subscriptionRecoveryPolicy>
+          </policyEntry>
+
+      </policyEntries></policyMap>
+    </destinationPolicy>
+  
+    <!--
+    <managementContext>
+      <managementContext findTigerMbeanServer="true"/>
+    </managementContext>
+    -->
+  
+    <persistenceAdapter>
+      <journaledJDBC journalLogFiles="5" dataDirectory="activemq-data"/>
+      <!-- To use a different datasource, use th following syntax : -->
+      <!-- 
+      <journaledJDBC journalLogFiles="5" dataDirectory="activemq-data" dataSource="#postgres-ds"/>
+       -->
+    </persistenceAdapter>
+  
+    <transportConnectors>
+       <transportConnector name="default" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
+       <transportConnector name="stomp"   uri="stomp://localhost:61613"/>
+    </transportConnectors>
+    
+    <networkConnectors>
+      <!-- by default just auto discover the other brokers -->
+      <networkConnector name="default" uri="multicast://default"/>
+      <!--
+      <networkConnector name="host1 and host2" uri="static://(tcp://host1:61616,tcp://host2:61616)" failover="true"/>
+      -->
+    </networkConnectors>
+    
+  </broker>
+  
+  <!--  This xbean configuration file supports all the standard spring xml configuration options -->
+  
+  <!-- Postgres DataSource Sample Setup -->
+  <!-- 
+  <bean id="postgres-ds" class="org.postgresql.ds.PGPoolingDataSource">
+    <property name="serverName" value="localhost"/>
+    <property name="databaseName" value="activemq"/>
+    <property name="portNumber" value="0"/>
+    <property name="user" value="activemq"/>
+    <property name="password" value="activemq"/>
+    <property name="dataSourceName" value="postgres"/>
+    <property name="initialConnections" value="1"/>
+    <property name="maxConnections" value="10"/>
+  </bean>
+  -->
+  
+  <!-- MySql DataSource Sample Setup -->
+  <!-- 
+  <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
+    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
+    <property name="url" value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
+    <property name="username" value="activemq"/>
+    <property name="password" value="activemq"/>
+    <property name="poolPreparedStatements" value="true"/>
+  </bean>
+  -->  
+   
+  <!-- Embedded Derby DataSource Sample Setup -->
+  <!-- 
+  <bean id="derby-ds" class="org.apache.derby.jdbc.EmbeddedDataSource">
+    <property name="databaseName" value="derbydb"/>
+    <property name="createDatabase" value="create"/>
+  </bean>
+  -->  
+
+</beans>
+<!-- END SNIPPET: xbean -->

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml
------------------------------------------------------------------------------
    svn:executable = *

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/activemq.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml Wed Apr 26 07:45:03 2006
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+
+  <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
+  
+  
+	<bean id="brokerService" class="org.apache.activemq.xbean.BrokerFactoryBean">
+	  <property name="config" value="/WEB-INF/activemq.xml"/>
+	</bean>
+
+  <bean id="sessionPool" class="org.apache.activemq.web.SessionPool"/>
+  
+  <bean id="brokerQuery" class="org.apache.activemq.web.BrokerFacade" autowire='constructor'/>
+  <bean id="queueBrowser" class="org.apache.activemq.web.QueueBrowseQuery" autowire='constructor' singleton="false"/>
+
+</beans>

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/applicationContext.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml?rev=397209&view=auto
==============================================================================
--- incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml (added)
+++ incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml Wed Apr 26 07:45:03 2006
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<decorators defaultdir="/decorators">
+    <decorator name="main" page="main.jsp">
+        <pattern>/*</pattern>
+    </decorator>
+
+    <decorator name="panel" page="panel.jsp"/>
+    <decorator name="printable" page="printable.jsp"/>
+</decorators>
\ No newline at end of file

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: incubator/activemq/trunk/activemq-web-console/src/main/webapp/WEB-INF/decorators.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml