You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ag...@apache.org on 2009/01/15 08:26:22 UTC
svn commit: r734622 [1/5] - in /qpid/trunk/qpid/java/management/client: ./
etc/ src/main/java/ src/main/java/org/apache/qpid/management/
src/main/java/org/apache/qpid/management/configuration/
src/main/java/org/apache/qpid/management/domain/model/ src/...
Author: agazzarini
Date: Wed Jan 14 23:26:19 2009
New Revision: 734622
URL: http://svn.apache.org/viewvc?rev=734622&view=rev
Log:
QPID-1574 : QMan WS-DM Adapter
Added:
qpid/trunk/qpid/java/management/client/etc/jetty.xml
qpid/trunk/qpid/java/management/client/etc/log4j.xml
qpid/trunk/qpid/java/management/client/etc/qman-config.xsd
qpid/trunk/qpid/java/management/client/src/main/java/muse.xml
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/ICommand.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClassMBean.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidEventMBean.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/jmx/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/jmx/EntityLifecycleNotification.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/jmx/OperationHasBeenInvokedNotification.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/servlet/ConnectQManToBroker.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManLifeCycleManager.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/servlet/WSDMAdapter.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/ArtifactsNotAvailableException.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/BuilderException.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/IArtifactBuilder.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/MBeanCapability.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/MBeanCapabilityBuilder.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/QManAdapterCapability.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/QManMetadataExchangeCapability.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/RmdBuilder.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/WSDMArtifactsDirector.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/WsArtifacts.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/WsArtifactsFactory.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/capabilities/WsdlBuilder.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/EntityInstanceNotFoundFault.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/NoSuchAttributeFault.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/ObjectNameIdFactory.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/QManFault.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/ThreadSession.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/common/ThreadSessionManager.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/engine/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/engine/WSDMAdapterEnvironment.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/engine/WSDMAdapterIsolationLayer.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/resources/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/resources/QManWsResource.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/serializer/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/serializer/ByteArraySerializer.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/serializer/MapSerializer.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/serializer/ObjectSerializer.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/wsdm/muse/serializer/UUIDSerializer.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/qman/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/qman/debug/
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/qman/debug/XmlDebugger.java
qpid/trunk/qpid/java/management/client/src/main/java/router-entries/
qpid/trunk/qpid/java/management/client/src/main/java/router-entries/adapter/
qpid/trunk/qpid/java/management/client/src/main/java/router-entries/adapter/resource-instance-1.xml
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/QManAdapter.rmd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/QManAdapter.wsdl
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/QManWsResource.rmd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/QManWsResource.wsdl
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/SOAP-Envelope-1_2.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-Addressing-2005_08.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-BaseFaults-1_2.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-MetadataExchange-2004_09.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-Resource-1_2.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-ResourceLifetime-1_2.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-ResourceMetadataDescriptor-CD-01.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-ResourceProperties-1_2.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-ServiceGroup-1_2.xsd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WS-ServiceGroupEntry-1_2.wsdl
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WsResource.rmd
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/WsResourceFactory.wsdl
qpid/trunk/qpid/java/management/client/src/main/java/wsdl/XML-Namespace-1998.xsd
Removed:
qpid/trunk/qpid/java/management/client/etc/qman.log4j
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/messages/AmqpCoDec.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/servlet/QManServlet.java
Modified:
qpid/trunk/qpid/java/management/client/README.txt
qpid/trunk/qpid/java/management/client/build.xml
qpid/trunk/qpid/java/management/client/etc/qman-config.xml
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Messages.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/JmxService.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidEntity.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidEvent.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidFeature.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Binary.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/type/Map.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/BrokerMessageListener.java
qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/services/QMan.java
qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/TestConstants.java
qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/configuration/ConfigurationTest.java
qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/configuration/ConfiguratorTest.java
qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidClassTest.java
qpid/trunk/qpid/java/management/client/src/test/java/org/apache/qpid/management/domain/model/QpidEventTest.java
qpid/trunk/qpid/java/management/client/web.xml
Modified: qpid/trunk/qpid/java/management/client/README.txt
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/README.txt?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/README.txt (original)
+++ qpid/trunk/qpid/java/management/client/README.txt Wed Jan 14 23:26:19 2009
@@ -115,3 +115,5 @@
When Qpid is built form source, the war archive qman.war is located in qpid/java/build/management/client/servlet
Enjoy!
+
+
Modified: qpid/trunk/qpid/java/management/client/build.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/build.xml?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/build.xml (original)
+++ qpid/trunk/qpid/java/management/client/build.xml Wed Jan 14 23:26:19 2009
@@ -18,49 +18,116 @@
- under the License.
-
-->
-<project name="Qpid Management Client" default="build">
+<project name="QMan - Qpid JMX / WS-DM Adapter" default="build">
- <property name="module.depends" value="client common"/>
+ <property name="module.depends" value="client common systests"/>
+ <import file="../../module.xml"/>
- <import file="../../module.xml"/>
-
-
- <property name="servlet.war" value="qman.war"/>
- <property name="servlet.root" value="${module.build}/servlet"/>
- <property name="servlet.web-inf" value="${servlet.root}/WEB-INF"/>
- <property name="servlet.classes" value="${servlet.web-inf}/classes"/>
-
-
- <target name="servlet-prepare">
- <mkdir dir="${servlet.root}"/>
- <mkdir dir="${servlet.web-inf}"/>
- <mkdir dir="${servlet.classes}"/>
- <copy file="./web.xml" todir="${servlet.web-inf}" verbose="false"/>
- <copy todir="${servlet.classes}" verbose="false">
- <fileset dir="${module.classes}">
+ <property name="war.name" value="qman.war"/>
+ <property name="build.root" value="${module.build}"/>
+ <property name="web.module" value="${module.build}/WsdmModule"/>
+ <property name="web-inf.folder" value="${web.module}/WEB-INF"/>
+ <property name="classes.folder" value="${web-inf.folder}/classes"/>
+
+ <target name="release-bin-other">
+ <mkdir dir="${module.release}${file.separator}log"/>
+ </target>
+
+ <target name="libs-release" description="copy dependencies into module release">
+
+ <!-- Copy the module dependencies for JMX Bridge release-->
+ <copy todir="${module.release}${file.separator}" failonerror="true" verbose="true">
+ <fileset dir="${build}" casesensitive="yes" includes="${module.libs}">
+ <not><filename name="**/*javassist*"/></not>
+ <not><filename name="**/*xml-api*"/></not>
+ <not><filename name="**/*xerces*"/></not>
+ <not><filename name="**/*xalan*"/></not>
+ <not><filename name="**/*wsdl*"/></not>
+ <not><filename name="**/*muse*"/></not>
+ </fileset>
+ </copy>
+
+ <!-- qpid-management-client.jar : this should be copied only on jmx dist -->
+ <copy todir="${module.release}/lib" failonerror="true">
+ <fileset file="${module.jar}"/>
+ <fileset dir="${build.lib}" includes="${module.depends.jars}"/>
+ </copy>
+
+ <!-- qman.war -->
+ <copy todir="${module.release}/lib" failonerror="true">
+ <fileset file="${web.module}${file.separator}${war.name}"/>
+ </copy>
+ </target>
+
+ <target name="prepare-wsdm-module">
+ <mkdir dir="${web.module}"/>
+ <mkdir dir="${web-inf.folder}"/>
+ <mkdir dir="${classes.folder}"/>
+ <copy file="./web.xml" todir="${web-inf.folder}" verbose="false"/>
+ <copy todir="${classes.folder}" verbose="false">
+ <fileset dir="${module.classes}">
<include name="org/apache/qpid/management/servlet/*"/>
- </fileset>
- </copy>
- <copy todir="${servlet.web-inf}">
+ <include name="org/apache/qpid/management/wsdm/**"/>
+ <include name="org/apache/qpid/qman/**"/>
+ <include name="wsdl/**"/>
+ <include name="muse.xml"/>
+ <include name="router-entries/**"/>
+ </fileset>
+ </copy>
+ <copy todir="${web-inf.folder}">
<fileset dir="${build}" includes="${module.libs}"/>
</copy>
- <copy todir="${servlet.web-inf}/lib">
+ <copy todir="${web-inf.folder}/lib">
<fileset dir="${build}/lib">
<include name="qpid-client-*.jar"/>
<include name="qpid-common-*.jar"/>
- <include name="qpid-management-client-*.jar"/>
+ <include name="qpid-management-client-*.jar"/>
+ <exclude name="qpid-client-example*.jar"/>
+ <exclude name="qpid-client-tests*.jar"/>
+ <exclude name="qpid-common-tests*.jar"/>
+ <exclude name="qpid-management-client-tests*.jar"/>
</fileset>
</copy>
+ </target>
+ <target name="jar.manifest" depends="compile" if="module.manifest">
+ <jar destfile="${module.jar}" manifest="${module.manifest}">
+ <fileset dir="${module.classes}" casesensitive="yes">
+ <include name="**/**"/>
+ <exclude name="org/apache/qpid/management/servlet/*"/>
+ <exclude name="org/apache/qpid/management/wsdm/**"/>
+ <exclude name="org/apache/qpid/qman/**"/>
+ <exclude name="wsdl/**"/>
+ <exclude name="muse.xml"/>
+ <exclude name="router-entries/**"/>
+ </fileset>
+ </jar>
+ </target>
+ <target name="jar.nomanifest" depends="compile" unless="module.manifest">
+ <jar destfile="${module.jar}">
+ <metainf dir="${project.root}/resources/" />
+ <fileset dir="${module.classes}" casesensitive="yes">
+ <include name="**/**"/>
+ <exclude name="org/apache/qpid/management/servlet/*"/>
+ <exclude name="org/apache/qpid/management/wsdm/**"/>
+ <exclude name="org/apache/qpid/qman/**"/>
+ <exclude name="wsdl/**"/>
+ <exclude name="muse.xml"/>
+ <exclude name="router-entries/**"/>
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="clean-wsdm-module" description="Clean up web module directory before proceed.">
+ <delete dir="${web.module}"/>
</target>
- <target name="servlet-clean">
- <delete dir="${servlet.root}"/>
+ <target name="clenaup-wsdm-module-tmp-files" description="Clean up all the temporary files used for build WSDM module.">
+ <delete dir="${web-inf.folder}"/>
</target>
- <target name="servlet">
- <jar destfile="${servlet.root}/${servlet.war}" basedir="${servlet.root}"/>
+ <target name="create-wsdm-module" description="Creates WSDM Module (Web Application Archive ).">
+ <jar destfile="${web.module}/${war.name}" basedir="${web.module}"/>
</target>
-
- <target name="postbuild" depends="servlet-clean,servlet-prepare,servlet" description="run after a build"/>
-
-</project>
+
+ <target name="postbuild" depends="clean-wsdm-module,prepare-wsdm-module,create-wsdm-module,clenaup-wsdm-module-tmp-files" description="Build WS-DM module"/>
+</project>
\ No newline at end of file
Added: qpid/trunk/qpid/java/management/client/etc/jetty.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/etc/jetty.xml?rev=734622&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/client/etc/jetty.xml (added)
+++ qpid/trunk/qpid/java/management/client/etc/jetty.xml Wed Jan 14 23:26:19 2009
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
+<Configure id="Server" class="org.mortbay.jetty.Server">
+ <Set name="StopAtShutdown">true</Set>
+ <Set name="Connectors">
+ <Array type="org.mortbay.jetty.Connector">
+ <Item>
+ <New
+ class="org.mortbay.jetty.nio.SelectChannelConnector">
+ <Set name="port">
+ <SystemProperty name="qman.port" default="8080" />
+ </Set>
+ <Set name="host">
+ <SystemProperty name="qman.host" default="localhost" />
+ </Set>
+ </New>
+ </Item>
+ </Array>
+ </Set>
+ <Set name="handler">
+ <New class="org.mortbay.jetty.webapp.WebAppContext">
+ <Set name="contextPath">/qman</Set>
+ <Set name="war"><SystemProperty name="jetty.home" default=".." />/lib/qman.war</Set>
+ </New>
+ </Set>
+</Configure>
\ No newline at end of file
Added: qpid/trunk/qpid/java/management/client/etc/log4j.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/etc/log4j.xml?rev=734622&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/client/etc/log4j.xml (added)
+++ qpid/trunk/qpid/java/management/client/etc/log4j.xml Wed Jan 14 23:26:19 2009
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
+
+<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
+
+ <!-- QMan Appender-->
+ <appender name="QMAN_LOG"
+ class="org.apache.log4j.DailyRollingFileAppender">
+ <param name="File" value="../log/qman.log" />
+ <param name="Append" value="true" />
+ <param name="DatePattern" value="'.'yyyy-MM-dd" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n" />
+ </layout>
+ </appender>
+
+ <!-- XML messages appender -->
+ <appender name="MESSAGES_LOG"
+ class="org.apache.log4j.DailyRollingFileAppender">
+<!-- <param name="File" value="../log/messages.log" /> -->
+ <param name="File" value="../log/messages.log"/>
+ <param name="Append" value="true" />
+ <param name="DatePattern" value="'.'yyyy-MM-dd" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d%n %m%n" />
+ </layout>
+ </appender>
+
+ <!-- Web Server Appender-->
+ <appender name="SERVER_LOG"
+ class="org.apache.log4j.DailyRollingFileAppender">
+ <param name="File" value="../log/server.log" />
+ <param name="Append" value="true" />
+ <param name="DatePattern" value="'.'yyyy-MM-dd" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern" value="%d %-5p [%c{1}] %m%n" />
+ </layout>
+ </appender>
+
+ <!-- Write to stdout -->
+ <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
+ <param name="Target" value="System.out" />
+ <param name="Threshold" value="DEBUG" />
+ <layout class="org.apache.log4j.PatternLayout">
+ <param name="ConversionPattern"
+ value="%d{ABSOLUTE} %-5p [%c{1}] %m%n" />
+ </layout>
+ </appender>
+
+ <!-- Category for QMan module -->
+ <category name="org.apache.qpid.management">
+ <priority value="INFO" />
+ <appender-ref ref="QMAN_LOG" />
+ </category>
+
+ <!-- Category for Jetty module : if you are using the JMX distribution you don't need this category-->
+ <category name="org.mortbay">
+ <priority value="INFO" />
+ <appender-ref ref="SERVER_LOG" />
+ </category>
+
+ <category name="org.apache.qpid.qman.debug.XmlDebugger">
+ <priority value="DEBUG" />
+ <appender-ref ref="MESSAGES_LOG" />
+ </category>
+
+ <root>
+ <priority value="ERROR" />
+ </root>
+
+</log4j:configuration>
\ No newline at end of file
Modified: qpid/trunk/qpid/java/management/client/etc/qman-config.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/etc/qman-config.xml?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/etc/qman-config.xml (original)
+++ qpid/trunk/qpid/java/management/client/etc/qman-config.xml Wed Jan 14 23:26:19 2009
@@ -18,30 +18,34 @@
- under the License.
-
-->
-
-<configuration>
- <brokers>
- <broker>
- <host>localhost</host>
- <port>5672</port>
- <virtual-host>test</virtual-host>
- <user>guest</user>
- <password>guest</password>
- <max-pool-capacity>4</max-pool-capacity>
- <initial-pool-capacity>0</initial-pool-capacity>
- <max-wait-timeout>-1</max-wait-timeout>
- </broker>
-<!--
- <broker>
- <host>myhost</host>
- <port>5672</port>
- <virtual-host>test</virtual-host>
- <user>guest</user>
- <password>guest</password>
- <max-pool-capacity>4</max-pool-capacity>
- <initial-pool-capacity>0</initial-pool-capacity>
- <max-wait-timeout>-1</max-wait-timeout>
- </broker>
+<!--
+Default configuration for QMan is empty;
+that is, there's no broker configured at startup.
+If you want to connect with a running broker when QMan starts up,
+you can do that uncommenting and editing the template reported below.
-->
- </brokers>
+<configuration>
+<!-- <brokers>
+ <broker>
+ <host>localhost</host>
+ <port>5672</port>
+ <virtual-host>test</virtual-host>
+ <user>guest</user>
+ <password>guest</password>
+ <max-pool-capacity>4</max-pool-capacity>
+ <initial-pool-capacity>0</initial-pool-capacity>
+ <max-wait-timeout>-1</max-wait-timeout>
+ </broker>
+ <broker>
+ <host>localhost</host>
+ <port>5672</port>
+ <virtual-host>test</virtual-host>
+ <user>guest</user>
+ <password>guest</password>
+ <max-pool-capacity>4</max-pool-capacity>
+ <initial-pool-capacity>0</initial-pool-capacity>
+ <max-wait-timeout>-1</max-wait-timeout>
+ </broker>
+ </brokers>
+ -->
</configuration>
Added: qpid/trunk/qpid/java/management/client/etc/qman-config.xsd
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/etc/qman-config.xsd?rev=734622&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/client/etc/qman-config.xsd (added)
+++ qpid/trunk/qpid/java/management/client/etc/qman-config.xsd Wed Jan 14 23:26:19 2009
@@ -0,0 +1,63 @@
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you 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.
+ -
+-->
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <xsd:element name="broker">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="host" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="port" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="virtual-host" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="user" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="password" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="max-pool-capacity" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="initial-pool-capacity" minOccurs="1" maxOccurs="1"/>
+ <xsd:element ref="max-wait-timeout" minOccurs="1" maxOccurs="1"/>
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="brokers">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="broker" maxOccurs="unbounded" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="configuration">
+ <xsd:complexType>
+ <xsd:sequence>
+ <xsd:element ref="brokers" maxOccurs="1" />
+ </xsd:sequence>
+ </xsd:complexType>
+ </xsd:element>
+
+ <xsd:element name="host" type="xsd:string"/>
+ <xsd:element name="initial-pool-capacity" type="xsd:integer"/>
+ <xsd:element name="max-pool-capacity" type="xsd:integer"/>
+ <xsd:element name="max-wait-timeout" type="xsd:integer"/>
+ <xsd:element name="password" type="xsd:string"/>
+ <xsd:element name="port" type="xsd:integer"/>
+ <xsd:element name="user" type="xsd:string"/>
+ <xsd:element name="virtual-host"type="xsd:string"/>
+
+</schema>
\ No newline at end of file
Added: qpid/trunk/qpid/java/management/client/src/main/java/muse.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/muse.xml?rev=734622&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/muse.xml (added)
+++ qpid/trunk/qpid/java/management/client/src/main/java/muse.xml Wed Jan 14 23:26:19 2009
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<muse xmlns="http://ws.apache.org/muse/descriptor"
+ xmlns:wsrf-sgw="http://docs.oasis-open.org/wsrf/sgw-2"
+ xmlns:qman="http://amqp.apache.org/qpid/management/qman"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://ws.apache.org/muse/descriptor muse-descriptor.xsd">
+ <custom-serializer>
+ <java-serializable-type>java.lang.Object</java-serializable-type>
+ <java-serializer-class>org.apache.qpid.management.wsdm.muse.serializer.ObjectSerializer</java-serializer-class>
+ </custom-serializer>
+ <custom-serializer>
+ <java-serializable-type>java.util.Map</java-serializable-type>
+ <java-serializer-class>org.apache.qpid.management.wsdm.muse.serializer.MapSerializer</java-serializer-class>
+ </custom-serializer>
+ <custom-serializer>
+ <java-serializable-type>java.util.UUID</java-serializable-type>
+ <java-serializer-class>org.apache.qpid.management.wsdm.muse.serializer.UUIDSerializer</java-serializer-class>
+ </custom-serializer>
+ <router>
+ <java-router-class>org.apache.muse.core.routing.SimpleResourceRouter</java-router-class>
+ <logging>
+ <log-file>log/muse.log</log-file>
+ <log-level>SEVERE</log-level>
+ </logging>
+ <persistence>
+ <java-persistence-class>org.apache.muse.core.routing.RouterFilePersistence</java-persistence-class>
+ <persistence-location>router-entries</persistence-location>
+ </persistence>
+ </router>
+ <resource-type use-router-persistence="true">
+ <!-- Context path of this resource. -->
+ <context-path>adapter</context-path>
+ <wsdl>
+ <wsdl-file>wsdl/QManAdapter.wsdl</wsdl-file>
+ <wsdl-port-type xmlns:qman="http://amqp.apache.org/qpid/management/qman">qman:QManAdapterPortType</wsdl-port-type>
+ </wsdl>
+ <java-id-factory-class>org.apache.muse.core.routing.RandomResourceIdFactory</java-id-factory-class>
+ <java-resource-class>org.apache.muse.ws.resource.impl.SimpleWsResource</java-resource-class>
+ <capability>
+ <capability-uri >http://amqp.apache.org/qpid/management/qman</capability-uri>
+ <java-capability-class>org.apache.qpid.management.wsdm.capabilities.QManAdapterCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata</capability-uri>
+ <java-capability-class>org.apache.muse.ws.metadata.impl.SimpleMetadataExchange</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Get</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.properties.get.impl.SimpleGetCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Query</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.properties.query.impl.SimpleQueryCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/sgw-2/ServiceGroup</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.sg.impl.SimpleServiceGroup</java-capability-class>
+ <!--
+ <persistence>
+ <java-persistence-class>org.apache.muse.ws.resource.sg.impl.ServiceGroupFilePersistence</java-persistence-class>
+ <persistence-location>service-group-entries</persistence-location>
+ </persistence>
+ -->
+ </capability>
+
+ </resource-type>
+ <resource-type>
+ <context-path>QManWsResource</context-path>
+ <wsdl>
+ <!-- Note that this is not a complete WSDL. It is just a base template where resource specific capabilities wll be added. -->
+ <wsdl-file>wsdl/QManWsResource.wsdl</wsdl-file>
+ <wsdl-port-type xmlns:qman="http://amqp.apache.org/qpid/management/qman">qman:QManWsResourcePortType</wsdl-port-type>
+ </wsdl>
+ <java-id-factory-class>org.apache.qpid.management.wsdm.common.ObjectNameIdFactory</java-id-factory-class>
+ <java-resource-class>org.apache.qpid.management.wsdm.muse.resources.QManWsResource</java-resource-class>
+ <capability>
+ <capability-uri>http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata</capability-uri>
+ <java-capability-class>org.apache.qpid.management.wsdm.capabilities.QManMetadataExchangeCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rlw-2/ImmediateResourceTermination</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.lifetime.impl.SimpleImmediateTermination</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rlw-2/ScheduledResourceTermination</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.lifetime.impl.SimpleScheduledTermination</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Get</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.properties.get.impl.SimpleGetCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Query</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.properties.query.impl.SimpleQueryCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Set</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.properties.set.impl.SimpleSetCapability</java-capability-class>
+ </capability>
+ </resource-type>
+ <resource-type>
+ <context-path>ServiceGroupEntry</context-path>
+ <wsdl>
+ <wsdl-file>/wsdl/WS-ServiceGroupEntry-1_2.wsdl</wsdl-file>
+ <wsdl-port-type>wsrf-sgw:ServiceGroupEntryPortType</wsdl-port-type>
+ </wsdl>
+ <java-id-factory-class>org.apache.muse.core.routing.RandomResourceIdFactory</java-id-factory-class>
+ <java-resource-class>org.apache.muse.ws.resource.impl.SimpleWsResource</java-resource-class>
+ <capability>
+ <capability-uri>http://schemas.xmlsoap.org/ws/2004/09/mex/GetMetadata</capability-uri>
+ <java-capability-class>org.apache.muse.ws.metadata.impl.SimpleMetadataExchange</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/rpw-2/Get</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.properties.get.impl.SimpleGetCapability</java-capability-class>
+ </capability>
+ <capability>
+ <capability-uri>http://docs.oasis-open.org/wsrf/sgw-2/ServiceGroupEntry</capability-uri>
+ <java-capability-class>org.apache.muse.ws.resource.sg.impl.SimpleEntry</java-capability-class>
+ </capability>
+ <init-param>
+ <param-name>validate-wsrp-schema</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ </resource-type>
+</muse>
\ No newline at end of file
Added: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/ICommand.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/ICommand.java?rev=734622&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/ICommand.java (added)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/ICommand.java Wed Jan 14 23:26:19 2009
@@ -0,0 +1,32 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.qpid.management;
+
+/**
+ * Command interface.
+ */
+public interface ICommand
+{
+ /**
+ * Executes the action specified by this command.
+ */
+ public void execute() throws Exception;
+}
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Messages.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Messages.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Messages.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Messages.java Wed Jan 14 23:26:19 2009
@@ -28,6 +28,11 @@
*/
public interface Messages
{
+ // MESSAGES
+ String EVENT_SEVERITY_ATTRIBUTE_DESCRIPTION = "Severity level for this event.";
+ String EVENT_TIMESTAMP_ATTRIBUTE_DESCRIPTION = "Current timestamp of this event.";
+ String ACTION_NOT_SUPPORTED="Action %S not supported by resource %s.";
+
// INFO
String QMAN_000001_STARTING_QMAN = "<QMAN-000001> : Starting Q-Man...";
String QMAN_000002_READING_CONFIGURATION = "<QMAN-000002> : Reading Q-Man configuration...";
@@ -53,6 +58,11 @@
String QMAN_000022_NO_BROKER_CONFIGURED = "<QMAN-000022> : Q-Man has no configured broker : in order to connect with a running one use Q-Man Administration interface.";
String QMAN_000023_QMAN_REGISTERED_AS_MBEAN = "<QMAN-000023> : Q-Man service is now available on MBeanServer.";
+ String QMAN_000026_WSDM_ADAPTER_STARTS = "<QMAN-000026> : Initializing WS-DM Adapter Environment...";
+ String QMAN_000027_WSDM_ADAPTER_STARTED = "<QMAN-000027> : WS-DM Adapter ready for incoming requests.";
+ String QMAN_000028_TEST_MODULE_NOT_FOUND = "<QMAN-000028> : Qpid emulator not found. Test notifications are disabled.";
+ String QMAN_000029_DEFAULT_URI = "<QMAN-000029> : Default URI will be set to %s";
+
// DEBUG
String QMAN_200001_INCOMING_MESSAGE_HAS_BEEN_RECEIVED = "<QMAN-200001> : New incoming message has been received. Message content is %s";
String QMAN_200002_OPCODE_HANDLER_ASSOCIATION = "<QMAN-200002> : \"%s\" opcode is associated to handler %s";
@@ -86,6 +96,17 @@
String QMAN_200030_BINDING_REMOVED = "<QMAN-200030> : Binding with %s as routing key has been removed between queue %s and exchange %s.";
String QMAN_200031_COMPOUND_MESSAGE_CONTAINS = "<QMAN-200031> : Incoming compound message contains %s message(s).";
String QMAN_200032_COMMAND_MESSAGE_ROUTING_KEY = "<QMAN-200032> : Command message routing key : %s";
+ String QMAN_200033_CAPABILITY_CLASS_HAS_BEEN_ADDED = "<QMAN-200033> : Capability has been added to this resource. Class is %s while URI is %s.";
+ String QMAN_200034_RMD_NAME = "<QMAN-200034> : Resource Metadata Descriptor name is %s.";
+ String QMAN_200035_RMD_PATH = "<QMAN-200035> : Resource Metadata Descriptor path is %s.";
+ String QMAN_200036_ADDITIONAL_RMD_PROPERTY = "<QMAN-200036> : Additional RMD property : %s";
+ String QMAN_200037_RMD = "<QMAN-200037> : Resource Metadata Descriptor : %s";
+ String QMAN_200038_WSRP = "<QMAN-200038> : WS Resource Properties fragment : %s";
+ String QMAN_200039_DEBUG_JMX_NOTIFICATION = "<QMAN-200039> : %s";
+ String QMAN_200040_WS_ARTIFACTS_CACHED = "<QMAN-200040> : WS Artifacts has been stored on cache with the following id : %s";
+ String QMAN_200041_INCOMING_OBJECT_NAME_AND_DERIVED_KEY = "<QMAN-200041> : Incoming object name : %s, derived search key : %s";
+
+
// WARNING
String QMAN_300001_MESSAGE_DISCARDED = "<QMAN-300001> : No handler has been configured for processing messages with \"%s\" as opcode. Message will be discarded.";
@@ -101,8 +122,6 @@
String QMAN_100005_CLASS_SCHEMA_PROCESSING_FAILURE = "<QMAN-100005> : Q-Man was unable to process the schema response message.";
String QMAN_100006_EVENT_SCHEMA_PROCESSING_FAILURE = "<QMAN-100006> : Q-Man was unable to process the schema response message.";
String QMAN_100007_UNABLE_TO_CONNECT_WITH_BROKER = "<QMAN-100007> : Unable to connect with broker located on %s. This broker will be ignored.";
- String QMAN_100008_MANAGEMENT_MESSAGE_HANDLER_NOT_AVAILABLE = "<QMAN-100008> : Management Message Handler configured for opcode %s is not available and therefore will be discarded.";
- String QMAN_100009_METHOD_REPLY_MESSAGE_HANDLER_NOT_AVAILABLE = "<QMAN-100009> :Method-Reply Message Handler configured for opcode %s is not available and therefore will be discarded.";
String QMAN_100010_METHOD_INVOCATION_RESULT_FAILURE = "<QMAN-100010> : an exception occurred while storing the result of a method invocation. Sequence number was %s";
String QMAN_100011_UNKNOWN_CLASS_KIND = "<QMAN-100011> : Unknwon class kind : %s).";
String QMAN_100012_SCHEMA_MESSAGE_PROCESSING_FAILURE = "<QMAN-100012> : Q-Man was unable to process the schema response message.";
@@ -112,8 +131,12 @@
String QMAN_100016_UNABLE_TO_DECODE_FEATURE_VALUE = "<QMAN-100016> : Unable to decode value for %s::%s::%s";
String QMAN_100017_UNABLE_TO_CONNECT = "<QMAN-100017>: Cannot connect to broker %s on %s";
String QMAN_100018_UNABLE_TO_STARTUP_CORRECTLY = "<QMAN-100018> : Q-Man was unable to startup correctly : see logs for further details.";
-
- // MESSAGES
- String EVENT_SEVERITY_ATTRIBUTE_DESCRIPTION = "Severity level for this event.";
- String EVENT_TIMESTAMP_ATTRIBUTE_DESCRIPTION = "Current timestamp of this event.";
-}
+ String QMAN_100019_REQ_OR_RES_MALFORMED = "<QMAN-100019> : Unexpected exception occurred on WSDM adapter layer : probably request or response was malformed.";
+ String QMAN_100020_ACTION_NOT_SUPPORTED = "<QMAN-100020> : "+ACTION_NOT_SUPPORTED;
+ String QMAN_100021_RMD_BUID_FAILURE = "<QMAN-100021> : Unable to build RDM for resource %s.";
+ String QMAN_100022_ISOLATION_LAYER_SHUTDOWN_FAILURE = "<QMAN-100022> : Unable to shutdown Isolation Layer.";
+ String QMAN_100023_BUILD_WS_ARTIFACTS_FAILURE = "<QMAN-100023> : Unable to build WS artifacts.";
+ String QMAN_100024_CAPABILITY_INSTANTIATION_FAILURE = "<QMAN-100024> : Unable to instantiate generated capability class for %s.";
+ String QMAN_100025_WSRF_FAILURE = "<QMAN-100025> : Resource manager raised an exception while creating capability for %s.";
+ String QMAN_100026_SOAP_ADDRESS_REPLACEMENT_FAILURE = "<QMAN-100026> : Exception occurred while replacing the placeholder soap address with resource actual location.";
+}
\ No newline at end of file
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/Names.java Wed Jan 14 23:26:19 2009
@@ -20,38 +20,85 @@
*/
package org.apache.qpid.management;
+import javax.management.ObjectName;
+import javax.xml.namespace.QName;
+
/**
* Enumeration of literal strings to avoid code duplication.
- *
- * @author Andrea Gazzarini
*/
-public interface Names
+public abstract class Names
{
/** Name of the qpid management exchange. */
- String MANAGEMENT_EXCHANGE = "qpid.management";
- String MANAGEMENT_ROUTING_KEY = "console.#";
+ public static String MANAGEMENT_EXCHANGE = "qpid.management";
+ public static String MANAGEMENT_ROUTING_KEY = "console.#";
- String MANAGEMENT_QUEUE_PREFIX = "management.";
- String METHOD_REPLY_QUEUE_PREFIX = "reply.";
+ public static String MANAGEMENT_QUEUE_PREFIX = "management.";
+ public static String METHOD_REPLY_QUEUE_PREFIX = "reply.";
- String AMQ_DIRECT_QUEUE = "amq.direct";
- String AGENT_ROUTING_KEY_PREFIX = "agent.";
- String AGENT_ROUTING_KEY = AGENT_ROUTING_KEY_PREFIX+"1.0";
+ public static String AMQ_DIRECT_QUEUE = "amq.direct";
+ public static String AGENT_ROUTING_KEY_PREFIX = "agent.";
+ public static String AGENT_ROUTING_KEY = AGENT_ROUTING_KEY_PREFIX+"1.0";
+
+ public static String APPLICATION_NAME ="Q-Man";
// Attributes
- String PACKAGE = "package";
- String CLASS = "class";
- String OBJECT_ID="objectID";
- String BROKER_ID = "brokerID";
- String DOMAIN_NAME = "Q-MAN";
+ public static String PACKAGE = "package";
+ public static String CLASS = "class";
+ public static String EVENT = "event";
+ public static String OBJECT_ID="objectID";
+ public static String BROKER_ID = "brokerID";
+ public static String DOMAIN_NAME = "Q-MAN";
- String ARG_COUNT_PARAM_NAME = "argCount";
- String DEFAULT_PARAM_NAME ="default";
+ public static String ARG_COUNT_PARAM_NAME = "argCount";
+ public static String DEFAULT_PARAM_NAME ="default";
+
+ public static String NUMBER_VALIDATOR = "org.apache.qpid.management.domain.model.QpidProperty$NumberValidator";
+ public static String STRING_VALIDATOR = "org.apache.qpid.management.domain.model.QpidProperty$StringValidator";
+
+ public static String QMAN_CONFIG_OPTION_NAME = "qman-config";
- String NUMBER_VALIDATOR = "org.apache.qpid.management.domain.model.QpidProperty$NumberValidator";
- String STRING_VALIDATOR = "org.apache.qpid.management.domain.model.QpidProperty$StringValidator";
+ public static String ADD_BROKER_OPERATION_NAME = "addBroker";
- String QMAN_CONFIG_OPTION_NAME = "qman-config";
+ public static String NOT_AVAILABLE = "N.A.";
- String ADD_BROKER_OPERATION_NAME = "addBroker";
-}
+ public static ObjectName QMAN_OBJECT_NAME;
+ static
+ {
+ try
+ {
+ QMAN_OBJECT_NAME = new ObjectName(new StringBuilder().append(DOMAIN_NAME).append(':').append("Type=Service").toString());
+ } catch(Exception exception)
+ {
+ throw new ExceptionInInitializerError(exception);
+ }
+ }
+
+ // WSDM Stuff
+ public static String NAMESPACE_URI = "http://amqp.apache.org/qpid/management/qman";
+ public final static String PREFIX = "qman";
+ public final static String QMAN_RESOURCE_NAME = "QManWsResource";
+ public final static String VALIDATE_WSRP_PARAM = "validate-wsrp-schema";
+
+ public static final String WEB_APP_CLASSES_FOLDER = "/WEB-INF/classes";
+ public static final String DEFAULT_ENDPOINT_URI = "http://localhost:8080/qman/adapter";
+
+ public final static QName QMAN_RESOURCE_PORT_TYPE_NAME = new QName(
+ Names.NAMESPACE_URI,
+ "QManWsResourcePortType",
+ Names.PREFIX);
+
+ public final static String NAME_ATTRIBUTE = "name";
+ public final static String MODIFIABILITY = "modifiability";
+ public final static String READ_WRITE = "read-write";
+ public final static String READ_ONLY = "read-only";
+ public final static String MUTABILITY = "mutability";
+ public final static String MUTABLE = "mutable";
+
+ public final static String ENTRY = "entry";
+ public final static String KEY = "key";
+ public final static String VALUE = "value";
+ public final static String TYPE = "type";
+ public final static String XSI_TYPE = "xsi:"+TYPE;
+
+ public final static String ADAPTER_PORT= "qman.port";
+}
\ No newline at end of file
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configuration.java Wed Jan 14 23:26:19 2009
@@ -43,8 +43,6 @@
/**
* Qpid Management bridge configuration.
* Basically iy is a singleton that is holding all the configurtion data loaded at startup.
- *
- * @author Andrea Gazzarini
*/
public final class Configuration
{
@@ -57,8 +55,8 @@
Map<UUID,BrokerConnectionData> _brokerConnectionInfos = new HashMap<UUID, BrokerConnectionData>();
- Map<Character, String> _managementQueueHandlers = new HashMap<Character, String>();
- Map<Character, String> _methodReplyQueueHandlers = new HashMap<Character, String>();
+ Map<Character, IMessageHandler> _managementQueueHandlers = new HashMap<Character, IMessageHandler>();
+ Map<Character, IMessageHandler> _methodReplyQueueHandlers = new HashMap<Character, IMessageHandler>();
private String _managementQueueName;
private String _methodReplyQueueName;
@@ -75,6 +73,11 @@
createHeaderForCommandMessages();
}
+ void clean()
+ {
+ INSTANCE = new Configuration();
+ }
+
/**
* Returns the singleton instance.
*
@@ -193,21 +196,7 @@
*/
public Map<Character, IMessageHandler> getManagementQueueHandlers()
{
- Map<Character, IMessageHandler> result = new HashMap<Character, IMessageHandler>();
-
- for (Entry<Character, String> entry : _managementQueueHandlers.entrySet())
- {
- Character opcode = entry.getKey();
- String className = entry.getValue();
- try
- {
- result.put(opcode, (IMessageHandler)Class.forName(className).newInstance());
- } catch(Exception exception)
- {
- LOGGER.error(exception,Messages.QMAN_100008_MANAGEMENT_MESSAGE_HANDLER_NOT_AVAILABLE,opcode);
- }
- }
- return result;
+ return _managementQueueHandlers;
}
/**
@@ -219,21 +208,7 @@
*/
public Map<Character, IMessageHandler> getMethodReplyQueueHandlers()
{
- Map<Character, IMessageHandler> result = new HashMap<Character, IMessageHandler>();
-
- for (Entry<Character, String> entry : _methodReplyQueueHandlers.entrySet())
- {
- Character opcode = entry.getKey();
- String className = entry.getValue();
- try
- {
- result.put(opcode, (IMessageHandler)Class.forName(className).newInstance());
- } catch(Exception exception)
- {
- LOGGER.error(exception,Messages.QMAN_100009_METHOD_REPLY_MESSAGE_HANDLER_NOT_AVAILABLE,opcode);
- }
- }
- return result;
+ return _methodReplyQueueHandlers;
}
/**
@@ -304,10 +279,10 @@
void addManagementMessageHandlerMapping (MessageHandlerMapping mapping)
{
Character opcode = mapping.getOpcode();
- String handlerClass = mapping.getMessageHandlerClass();
- _managementQueueHandlers.put(opcode, handlerClass);
+ IMessageHandler handler = mapping.getMessageHandler();
+ _managementQueueHandlers.put(opcode, handler);
- LOGGER.info(Messages.QMAN_000007_MANAGEMENT_HANDLER_MAPPING_CONFIGURED, opcode,handlerClass);
+ LOGGER.info(Messages.QMAN_000007_MANAGEMENT_HANDLER_MAPPING_CONFIGURED, opcode,handler.getClass().getName());
}
/**
@@ -320,10 +295,10 @@
void addMethodReplyMessageHandlerMapping (MessageHandlerMapping mapping)
{
Character opcode = mapping.getOpcode();
- String handlerClass = mapping.getMessageHandlerClass();
- _methodReplyQueueHandlers.put(opcode, handlerClass);
+ IMessageHandler handler = mapping.getMessageHandler();
+ _methodReplyQueueHandlers.put(opcode, handler);
- LOGGER.info(Messages.QMAN_000008_METHOD_REPLY_HANDLER_MAPPING_CONFIGURED, opcode,handlerClass);
+ LOGGER.info(Messages.QMAN_000008_METHOD_REPLY_HANDLER_MAPPING_CONFIGURED, opcode,handler.getClass().getName());
}
/**
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/Configurator.java Wed Jan 14 23:26:19 2009
@@ -41,10 +41,6 @@
import org.apache.qpid.management.domain.model.AccessMode;
import org.apache.qpid.management.domain.model.type.AbsTime;
import org.apache.qpid.management.domain.model.type.DeltaTime;
-import org.apache.qpid.management.domain.model.type.Int16;
-import org.apache.qpid.management.domain.model.type.Int32;
-import org.apache.qpid.management.domain.model.type.Int64;
-import org.apache.qpid.management.domain.model.type.Int8;
import org.apache.qpid.management.domain.model.type.ObjectReference;
import org.apache.qpid.management.domain.model.type.Str16;
import org.apache.qpid.management.domain.model.type.Str8;
@@ -61,8 +57,6 @@
/**
* Director used for coordinating the build process of configuration.
* This is the only component which has a read-write permission on Configuration object.
- *
- * @author Andrea Gazzarini
*/
public class Configurator extends DefaultHandler
{
@@ -135,12 +129,15 @@
if (initialConfigurationFile.canRead())
{
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
- reader = new BufferedReader(new InputStreamReader(new FileInputStream(initialConfigFileName)));
+ reader = new BufferedReader(
+ new InputStreamReader(
+ new FileInputStream(initialConfigFileName)));
InputSource source = new InputSource(reader);
parser.parse(source, this);
} else {
- LOGGER.warn(Messages.QMAN_300004_INVALID_CONFIGURATION_FILE, initialConfigFileName);
- throw new ConfigurationException(String.format(Messages.QMAN_300004_INVALID_CONFIGURATION_FILE, initialConfigFileName));
+ LOGGER.warn(
+ Messages.QMAN_300004_INVALID_CONFIGURATION_FILE,
+ initialConfigFileName);
}
}
@@ -233,55 +230,49 @@
configuration.addTypeMapping(new TypeMapping(9,new DeltaTime()));
configuration.addTypeMapping(new TypeMapping(10,new ObjectReference()));
configuration.addTypeMapping(new TypeMapping(11,new org.apache.qpid.management.domain.model.type.Boolean()));
- configuration.addTypeMapping(new TypeMapping(12,new org.apache.qpid.management.domain.model.type.Float(),Names.NUMBER_VALIDATOR));
- configuration.addTypeMapping(new TypeMapping(13,new org.apache.qpid.management.domain.model.type.Double(),Names.NUMBER_VALIDATOR));
configuration.addTypeMapping(new TypeMapping(14,new org.apache.qpid.management.domain.model.type.Uuid()));
configuration.addTypeMapping(new TypeMapping(15,new org.apache.qpid.management.domain.model.type.Map()));
- configuration.addTypeMapping(new TypeMapping(16,new Int8(),Names.NUMBER_VALIDATOR));
- configuration.addTypeMapping(new TypeMapping(17,new Int16(),Names.NUMBER_VALIDATOR));
- configuration.addTypeMapping(new TypeMapping(18,new Int32(),Names.NUMBER_VALIDATOR));
- configuration.addTypeMapping(new TypeMapping(19,new Int64(),Names.NUMBER_VALIDATOR));
}
/**
* Configures the mandatory management message handlers.
*/
- private void addMandatoryMethodReplyMessageHandlers ()
+ void addMandatoryMethodReplyMessageHandlers ()
{
Configuration.getInstance().addMethodReplyMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.OPERATION_INVOCATION_RESPONSE_OPCODE,
- MethodResponseMessageHandler.class.getName()));
+ new MethodResponseMessageHandler()));
Configuration.getInstance().addMethodReplyMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.SCHEMA_RESPONSE_OPCODE,
- SchemaResponseMessageHandler.class.getName()));
+ new SchemaResponseMessageHandler()));
}
/**
* Configures the mandatory management message handlers.
*/
- private void addMandatoryManagementMessageHandlers ()
+ void addMandatoryManagementMessageHandlers ()
{
Configuration.getInstance().addManagementMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.INSTRUMENTATION_CONTENT_RESPONSE_OPCODE,
- InstrumentationMessageHandler.class.getName()));
+ new InstrumentationMessageHandler()));
Configuration.getInstance().addManagementMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.CONFIGURATION_CONTENT_RESPONSE_OPCDE,
- ConfigurationMessageHandler.class.getName()));
+ new ConfigurationMessageHandler()));
Configuration.getInstance().addManagementMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.EVENT_CONTENT_RESPONSE_OPCDE,
- EventContentMessageHandler.class.getName()));
+ new EventContentMessageHandler()));
Configuration.getInstance().addManagementMessageHandlerMapping(
new MessageHandlerMapping(
Protocol.HEARTBEAT_INDICATION_RESPONSE_OPCODE,
- HeartBeatIndicationMessageHandler.class.getName()));
+ new HeartBeatIndicationMessageHandler()));
}
}
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/configuration/MessageHandlerMapping.java Wed Jan 14 23:26:19 2009
@@ -20,32 +20,26 @@
*/
package org.apache.qpid.management.configuration;
+import org.apache.qpid.management.domain.handler.base.IMessageHandler;
+
/**
* Message Handler mapping used for associating an opcode with a message handler.
- *
- * @author Andrea Gazzarini
*/
class MessageHandlerMapping
{
- private Character _opcode;
- private String _handlerClass;
-
- /**
- * Builds an empty message handler mapping.
- */
- MessageHandlerMapping()
- {
- }
-
+ private final Character _opcode;
+ private final IMessageHandler _handler;
+
/**
* Builds a new mapping with the given opcode and handler class.
*
* @param opcode the opcode.
* @param handlerClass the handler class.
*/
- MessageHandlerMapping(Character opcode, String handlerClass) {
+ MessageHandlerMapping(Character opcode, IMessageHandler handler)
+ {
this._opcode = opcode;
- this._handlerClass = handlerClass;
+ this._handler = handler;
}
/**
@@ -59,32 +53,12 @@
}
/**
- * Sets the opcode for this mapping.
- *
- * @param codeAsString the opcode as a string.
- */
- void setOpcode (String codeAsString)
- {
- this._opcode = codeAsString.charAt(0);
- }
-
- /**
* Returns the message handler for this mapping.
*
* @return the message handler for this mapping.
*/
- String getMessageHandlerClass()
- {
- return _handlerClass;
- }
-
- /**
- * Sets the message handler of this mapping.
- *
- * @param handlerClass the handler class as a string.
- */
- void setMessageHandlerClass(String handlerClass)
+ IMessageHandler getMessageHandler()
{
- this._handlerClass = handlerClass;
+ return _handler;
}
}
\ No newline at end of file
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/JmxService.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/JmxService.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/JmxService.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/JmxService.java Wed Jan 14 23:26:19 2009
@@ -31,16 +31,14 @@
import org.apache.qpid.management.Messages;
import org.apache.qpid.management.Names;
-import org.apache.qpid.management.domain.model.QpidClass.QpidManagedObject;
-import org.apache.qpid.management.domain.model.QpidEvent.QpidManagedEvent;
+import org.apache.qpid.management.domain.model.QpidClass.QManManagedObject;
+import org.apache.qpid.management.domain.model.QpidEvent.QManManagedEvent;
import org.apache.qpid.management.domain.model.type.Binary;
import org.apache.qpid.management.domain.services.QMan;
import org.apache.qpid.transport.util.Logger;
/**
* A simple facade used to perform operations on Mbean server.
- *
- * @author Andrea Gazzarini
*/
public class JmxService
{
@@ -67,8 +65,17 @@
}
}
- void registerEventInstance(
- QpidManagedEvent eventInstance,
+ /**
+ * Registers an event instance with MBean server.
+ *
+ * @param eventInstance the mben event instance
+ * @param brokerId the broker identifier.
+ * @param packageName the package name.
+ * @param eventClassName the event class name.
+ * @return the object name used for registration.
+ */
+ ObjectName registerEventInstance(
+ QManManagedEvent eventInstance,
UUID brokerId,
String packageName,
String eventClassName)
@@ -91,6 +98,7 @@
throw new RuntimeException(exception);
}
}
+ return name;
}
/**
@@ -102,9 +110,10 @@
* @param packageName the name of the package containing this instance.
* @param className the name of the owner class of this instance.
* @param objectId the object instance identifier.
+ * @return the object name used for registration.
*/
- void registerObjectInstance(
- QpidManagedObject instance,
+ ObjectName registerObjectInstance(
+ QManManagedObject instance,
UUID brokerId,
String packageName,
String className,
@@ -129,6 +138,7 @@
throw new RuntimeException(exception);
}
}
+ return name;
}
/**
@@ -138,8 +148,9 @@
* @param packageName the name of the package containing this instance.
* @param className the name of the owner class of this instance.
* @param objectId the object instance identifier.
+ * @return obejctName the obejct name used for deregistration.
*/
- void unregisterObjectInstance(
+ ObjectName unregisterObjectInstance(
UUID brokerId,
String packageName,
String className,
@@ -164,6 +175,7 @@
LOGGER.error(exception,Messages.QMAN_100013_MBEAN_REGISTRATION_FAILURE,name);
}
}
+ return name;
}
/**
@@ -182,7 +194,8 @@
}
}
- Set<ObjectName> getEventMBeans()
+ @SuppressWarnings("unchecked")
+ Set<ObjectName> getEventMBeans()
{
return _mxServer.queryNames(createEventSearchName(),null);
}
@@ -190,7 +203,8 @@
/**
* Removes (unregister) all object instances from MBean Server.
*/
- void unregisterObjectInstances()
+ @SuppressWarnings("unchecked")
+ void unregisterObjectInstances()
{
Set<ObjectName> names = _mxServer.queryNames(createObjectInstanceSearchName(),null);
for (ObjectName name : names)
@@ -266,6 +280,26 @@
}
/**
+ * Creates an object name that will be used for searching all registered events.
+ *
+ * @return the object name that will be used for searching all registered events.
+ */
+ ObjectName createClassDefinitionSearchName()
+ {
+ String asString = new StringBuilder()
+ .append(Names.DOMAIN_NAME)
+ .append(":Category=Schema,*")
+ .toString();
+ try
+ {
+ return new ObjectName(asString);
+ } catch (MalformedObjectNameException exception)
+ {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ /**
* Creates an object name that will be used for searching all registered object instances.
*
* @return the object name that will be used for searching all registered object instances.
@@ -284,7 +318,7 @@
} catch (MalformedObjectNameException exception)
{
throw new RuntimeException(exception);
- }
+ }
}
/**
@@ -344,5 +378,55 @@
{
throw new RuntimeException(exception);
}
- }
+ }
+
+ ObjectName createEntityDefinitionName(String packageName, String className, String type)
+ {
+ String asString = new StringBuilder()
+ .append(Names.DOMAIN_NAME)
+ .append(':')
+ .append("Category=Schema,Type=")
+ .append(type)
+ .append(",package=")
+ .append(packageName)
+ .append(",name=")
+ .append(className)
+ .toString();
+ try
+ {
+ return new ObjectName(asString);
+ } catch (MalformedObjectNameException exception)
+ {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ public void registerEntityDefinition(ObjectName name, QpidEntity entity,String packageName, String className)
+ {
+ try
+ {
+ if (!_mxServer.isRegistered(name))
+ _mxServer.registerMBean(entity, name);
+ _mxServer.addNotificationListener(name, createQManName(), null, null);
+ } catch(Exception exception)
+ {
+ throw new RuntimeException(exception);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ public void unregisterClassDefinitions()
+ {
+ Set<ObjectName> names = _mxServer.queryNames(createClassDefinitionSearchName(),null);
+ for (ObjectName name : names)
+ {
+ try
+ {
+ _mxServer.unregisterMBean(name);
+ } catch(Exception ignore)
+ {
+ }
+ }
+
+ }
}
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidArgument.java Wed Jan 14 23:26:19 2009
@@ -24,6 +24,9 @@
import org.apache.qpid.transport.codec.Encoder;
import org.apache.qpid.transport.util.Logger;
+/**
+ * An argument is the formal definition of a parameter belonging to a specific method / operation.
+ */
class QpidArgument extends QpidProperty
{
private final static Logger LOGGER = Logger.get(QpidArgument.class);
@@ -32,27 +35,53 @@
private Direction _direction;
+ /**
+ * Sets the direction of this argument.
+ *
+ * @param the direction of this argument.
+ */
public void setDirection(String code)
{
this._direction = Direction.valueOf(code);
}
+ /**
+ * Returns the direction of this argument.
+ *
+ * @return the direction of this argument.
+ */
public Direction getDirection()
{
return _direction;
}
+ /**
+ * Sets the default value of this argument.
+ *
+ * @param defaultValue the default value of this argument.
+ */
public void setDefaultValue(Object defaultValue)
{
this._defaultValue = defaultValue;
}
+ /**
+ * Returns the default value of this argument.
+ *
+ * @return the default value of this argument.
+ */
public Object getDefaultValue()
{
return _defaultValue;
}
- public boolean isInput(){
+ /**
+ * Returns true if this is an Input argument.
+ *
+ * @return true if this is an Input argument.
+ */
+ public boolean isInput()
+ {
return _direction != Direction.O;
}
@@ -69,14 +98,26 @@
.toString();
}
+ /**
+ * Encodes the given value according to this argument type & definition.
+ *
+ * @param value the value to be encoded.
+ * @param encoder the encoder.
+ */
public void encode(Object value,Encoder encoder)
{
_type.encode(value, encoder);
LOGGER.debug(Messages.QMAN_200013_ARGUMENT_VALUE_ENCODED,value,_name,_type);
}
+ /**
+ * Decodes the value for this argument according to its type & definition.
+ *
+ * @param decoder the decoder
+ * @return the decoded value of this argument.
+ */
public Object decode(org.apache.qpid.transport.codec.Decoder decoder)
{
return _type.decode(decoder);
}
-}
+}
\ No newline at end of file
Modified: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java?rev=734622&r1=734621&r2=734622&view=diff
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java (original)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClass.java Wed Jan 14 23:26:19 2009
@@ -26,6 +26,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
import java.util.Map.Entry;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.SynchronousQueue;
@@ -47,11 +48,14 @@
import javax.management.RuntimeOperationsException;
import org.apache.qpid.management.Messages;
+import org.apache.qpid.management.Names;
import org.apache.qpid.management.domain.handler.impl.IMethodInvocationListener;
import org.apache.qpid.management.domain.handler.impl.InvocationResult;
import org.apache.qpid.management.domain.handler.impl.MethodOrEventDataTransferObject;
import org.apache.qpid.management.domain.model.type.Binary;
import org.apache.qpid.management.domain.services.SequenceNumberGenerator;
+import org.apache.qpid.management.jmx.EntityLifecycleNotification;
+import org.apache.qpid.management.jmx.OperationHasBeenInvokedNotification;
import org.apache.qpid.transport.codec.BBDecoder;
import org.apache.qpid.transport.util.Logger;
@@ -60,16 +64,17 @@
* A type definition for a manageable object.
* This class is also responsible to manage incoming obejct instance data (configuration & instrumentation).
* How can we handle data before schema is injected into this class? simply we must retain that data in raw format.
- * This class has 2 states :
- * 1) first state is when schema is not yet injected. In this case the incoming object data is retained as is (in raw format);
- * 2) second state is when schema is injected. In this case each injection of data will result in an update / create / delete of
+ * This class has 3 states :
+ * 1) first state is when schema is not yet injected. In this case the incoming object data is retained as is (in raw format)
+ * and a schema request is sent;
+ * 2) second state is when schema has been requested but not yet injected. The incoming object data is still retained as is
+ * (in raw format)
+ * 3) third state is when schema is injected. Each injection of data will result in an update / create / delete of
* the corresponding object instance. In addition, the first time the state change, the old retained raw data is cnverted in
* object instance(s).
- *
- * @author Andrea Gazzarini
- */
-class QpidClass extends QpidEntity
-{
+ */
+class QpidClass extends QpidEntity implements QpidClassMBean
+{
/**
* State interface for this class definition.
* Each state is responsible to handle the injection of the data and / or schema.
@@ -130,14 +135,15 @@
{
requestSchema();
_state = _schemaRequestedButNotYetInjected;
- } catch (Exception e)
+ } catch (Exception exception)
{
_logger.error(
+ exception,
Messages.QMAN_100015_UNABLE_TO_SEND_SCHEMA_REQUEST,
_parent.getName(),
_name);
} finally {
- QpidManagedObject instance = getObjectInstance(objectId,false);
+ QManManagedObject instance = getObjectInstance(objectId,false);
instance._rawConfigurationData.add(rawData);
}
}
@@ -162,7 +168,7 @@
_parent.getName(),
_name);
} finally {
- QpidManagedObject instance = getObjectInstance(objectId,false);
+ QManManagedObject instance = getObjectInstance(objectId,false);
instance._rawConfigurationData.add(rawData);
}
}
@@ -194,7 +200,7 @@
*/
public void addConfigurationData (Binary objectId, byte[] rawData)
{
- QpidManagedObject instance = getObjectInstance(objectId,false);
+ QManManagedObject instance = getObjectInstance(objectId,false);
instance._rawConfigurationData.add(rawData);
}
@@ -206,7 +212,7 @@
*/
public void addInstrumentationData (Binary objectId, byte[] rawData)
{
- QpidManagedObject instance = getObjectInstance(objectId,false);
+ QManManagedObject instance = getObjectInstance(objectId,false);
instance._rawInstrumentationData.add(rawData);
}
@@ -231,12 +237,21 @@
buildMethods(methodDefinitions,operationsMetadata);
_metadata = new MBeanInfo(_name,_name,attributesMetadata,null,operationsMetadata,null);
-
+
+ EntityLifecycleNotification notification = new EntityLifecycleNotification(
+ EntityLifecycleNotification.SCHEMA_INJECTED,
+ _parent.getName(),
+ _name,
+ Names.CLASS,
+ _objectName);
+
+ sendNotification(notification);
+
// Converting stored object instances into JMX MBean and removing raw instance data.
- for (Entry<Binary, QpidManagedObject> instanceEntry : _objectInstances.entrySet())
+ for (Entry<Binary, QManManagedObject> instanceEntry : _objectInstances.entrySet())
{
Binary objectId = instanceEntry.getKey();
- QpidManagedObject instance = instanceEntry.getValue();
+ QManManagedObject instance = instanceEntry.getValue();
for (Iterator<byte[]> iterator = instance._rawInstrumentationData.iterator(); iterator.hasNext();)
{
@@ -250,9 +265,10 @@
iterator.remove();
}
- JMX_SERVICE.registerObjectInstance(instance,_parent.getOwnerId(),_parent.getName(),_name,objectId);
+ registerMBean(instance,_parent.getOwnerId(),_parent.getName(),_name,objectId);
}
- _state = _schemaInjected;
+ _state = _schemaInjected;
+
}
};
@@ -269,7 +285,7 @@
*/
public void addConfigurationData (Binary objectId, byte[] rawData)
{
- QpidManagedObject instance = getObjectInstance(objectId,true);
+ QManManagedObject instance = getObjectInstance(objectId,true);
updateInstanceWithConfigurationData(instance, rawData);
}
@@ -281,7 +297,7 @@
*/
public void addInstrumentationData (Binary objectId, byte[] rawData)
{
- QpidManagedObject instance = getObjectInstance(objectId,true);
+ QManManagedObject instance = getObjectInstance(objectId,true);
updateInstanceWithInstrumentationData(instance, rawData);
}
@@ -300,23 +316,21 @@
/**
* MBean used for representing remote broker object instances.
* This is the core component of the QMan domain model
- *
- * @author Andrea Gazzarini
*/
- class QpidManagedObject extends QpidManagedEntity implements MBeanRegistration
+ class QManManagedObject extends QManManagedEntity implements MBeanRegistration
{
private Binary _objectId;
// Arrays used for storing raw data before this mbean is registered to mbean server.
List<byte[]> _rawInstrumentationData = new ArrayList<byte[]>();
List<byte[]> _rawConfigurationData = new ArrayList<byte[]>();
-
+
/**
* Builds a new managed object with the given object identifier.
*
* @param objectId the object identifier.
*/
- QpidManagedObject(Binary objectId)
+ QManManagedObject(Binary objectId)
{
this._objectId = objectId;
}
@@ -351,21 +365,33 @@
*/
public Object invoke (String actionName, Object[] params, String[] signature) throws MBeanException,ReflectionException
{
- // TODO : Overloaded methods
- QpidMethod method = _methods.get(actionName);
- if (method != null)
- {
- try
- {
- method.validate(params);
- return invokeMethod(_objectId, method, params);
- } catch (Exception exception)
- {
- throw new MBeanException(exception);
- }
- } else {
- throw new ReflectionException(new NoSuchMethodException(actionName));
- }
+ OperationHasBeenInvokedNotification notification = null;
+ try
+ {
+ // TODO : Overloaded methods
+ QpidMethod method = _methods.get(actionName);
+ if (method != null)
+ {
+ try
+ {
+ method.validate(params);
+ InvocationResult result = invokeMethod(_objectId, method, params);
+ notification = new OperationHasBeenInvokedNotification(actionName,params,signature,result);
+ return result;
+ } catch (Exception ex)
+ {
+ MBeanException exception = new MBeanException(ex);
+ notification = new OperationHasBeenInvokedNotification(actionName,params,signature,exception);
+ throw exception;
+ }
+ } else {
+ ReflectionException exception = new ReflectionException(new NoSuchMethodException(actionName));
+ notification = new OperationHasBeenInvokedNotification(actionName,params,signature,exception);
+ throw exception;
+ }
+ }finally {
+ sendNotification(notification);
+ }
}
/**
@@ -450,7 +476,7 @@
private BlockingQueue<InvocationResult> _exchangeChannelForMethodInvocations;
private final IMethodInvocationListener _methodInvocationListener;
- Map<Binary, QpidManagedObject> _objectInstances = new HashMap<Binary, QpidManagedObject>();
+ Map<Binary, QManManagedObject> _objectInstances = new HashMap<Binary, QManManagedObject>();
State _state = _schemaNotRequested;;
private final static class Log
@@ -474,7 +500,7 @@
*/
QpidClass(String className, Binary hash, QpidPackage parentPackage)
{
- super(className,hash, parentPackage);
+ super(className,hash, parentPackage,Names.CLASS);
this._methodInvocationListener = _parent.getMethodInvocationListener();
this._exchangeChannelForMethodInvocations = new SynchronousQueue<InvocationResult>();
}
@@ -602,16 +628,16 @@
* @param registration a flag indicating whenever the (new ) instance must be registered with MBean server.
* @return the object instance associated to the given identifier.
*/
- QpidManagedObject getObjectInstance(Binary objectId, boolean registration)
+ QManManagedObject getObjectInstance(Binary objectId, boolean registration)
{
- QpidManagedObject objectInstance = _objectInstances.get(objectId);
+ QManManagedObject objectInstance = _objectInstances.get(objectId);
if (objectInstance == null)
{
- objectInstance = new QpidManagedObject(objectId);
+ objectInstance = new QManManagedObject(objectId);
_objectInstances.put(objectId, objectInstance);
if (registration)
{
- JMX_SERVICE.registerObjectInstance(objectInstance,_parent.getOwnerId(),_parent.getName(),_name,objectId);
+ registerMBean(objectInstance,_parent.getOwnerId(),_parent.getName(),_name,objectId);
}
}
return objectInstance;
@@ -691,7 +717,7 @@
* @param instance the managed object instance.
* @param rawData the incoming configuration data which contains new values for instance properties.
*/
- void updateInstanceWithConfigurationData(QpidManagedObject instance,byte [] rawData)
+ void updateInstanceWithConfigurationData(QManManagedObject instance,byte [] rawData)
{
BBDecoder decoder = new BBDecoder();
decoder.init(ByteBuffer.wrap(rawData));
@@ -714,9 +740,9 @@
* @param instance the managed object instance.
* @param rawData the incoming instrumentation data which contains new values for instance properties.
*/
- void updateInstanceWithInstrumentationData(QpidManagedObject instance,byte [] rawData)
+ void updateInstanceWithInstrumentationData(QManManagedObject instance,byte [] rawData)
{
- BBDecoder decoder = new BBDecoder();
+ BBDecoder decoder = new BBDecoder();
decoder.init(ByteBuffer.wrap(rawData));
for (QpidStatistic statistic : _schemaOrderedStatistics)
@@ -749,10 +775,19 @@
*/
void removeObjectInstance (Binary objectId)
{
- QpidManagedObject toBeRemoved = _objectInstances.remove(objectId);
+ QManManagedObject toBeRemoved = _objectInstances.remove(objectId);
if (toBeRemoved != null)
{
- JMX_SERVICE.unregisterObjectInstance(_parent.getOwnerId(),_parent.getName(),_name,toBeRemoved._objectId);
+ ObjectName objectName = JMX_SERVICE.unregisterObjectInstance(_parent.getOwnerId(),_parent.getName(),_name,toBeRemoved._objectId);
+
+ EntityLifecycleNotification notification = new EntityLifecycleNotification(
+ EntityLifecycleNotification.INSTANCE_REMOVED,
+ _parent.getName(),
+ _name,
+ Names.CLASS,
+ objectName);
+
+ sendNotification(notification);
}
}
@@ -763,6 +798,35 @@
{
_objectInstances.clear();
JMX_SERVICE.unregisterObjectInstances();
+ JMX_SERVICE.unregisterClassDefinitions();
_service.close();
}
+
+ /**
+ * Compose method used for registering mbean instance.
+ *
+ * @param instance the mbean instance.
+ * @param brokerId the broker identifier.
+ * @param packageName the package name.
+ * @param className the class name.
+ * @param objectId the object identifier.
+ */
+ private void registerMBean(
+ QManManagedObject instance,
+ UUID brokerId,
+ String packageName,
+ String className,
+ Binary objectId)
+ {
+ ObjectName objectName = JMX_SERVICE.registerObjectInstance(instance,_parent.getOwnerId(),_parent.getName(),_name,objectId);
+
+ EntityLifecycleNotification notification = new EntityLifecycleNotification(
+ EntityLifecycleNotification.INSTANCE_ADDED,
+ packageName,
+ className,
+ Names.CLASS,
+ objectName);
+
+ sendNotification(notification);
+ }
}
Added: qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClassMBean.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClassMBean.java?rev=734622&view=auto
==============================================================================
--- qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClassMBean.java (added)
+++ qpid/trunk/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/model/QpidClassMBean.java Wed Jan 14 23:26:19 2009
@@ -0,0 +1,41 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.qpid.management.domain.model;
+
+/**
+ * Management interface for Qpid entity class..
+ */
+public interface QpidClassMBean
+{
+ /**
+ * Retruns the name of the class.
+ *
+ * @return the name of the class.
+ */
+ String getName();
+
+ /**
+ * Returns the name of the package.
+ *
+ * @return the name of the package.
+ */
+ String getPackageName();
+}
\ No newline at end of file