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