[jboss-cvs] JBossAS SVN: r100058 - in branches/Branch_Hornet_Temporary_2: component-matrix and 7 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Jan 28 11:31:19 EST 2010


Author: ataylor
Date: 2010-01-28 11:31:18 -0500 (Thu, 28 Jan 2010)
New Revision: 100058

Added:
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueComponent.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueDiscoveryComponent.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerComponent.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerDiscoveryComponent.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerComponent.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerDiscoveryComponent.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/util/
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/util/MBeanUtil.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/META-INF/
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/META-INF/rhq-plugin.xml
Removed:
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMO.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMODefinition.java
   branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/hornetq-definitions-jboss-beans.xml
Modified:
   branches/Branch_Hornet_Temporary_2/build/build.xml
   branches/Branch_Hornet_Temporary_2/component-matrix/pom.xml
   branches/Branch_Hornet_Temporary_2/hornetq-int/pom.xml
Log:
added hornetq jopr plugin first pass

Modified: branches/Branch_Hornet_Temporary_2/build/build.xml
===================================================================
--- branches/Branch_Hornet_Temporary_2/build/build.xml	2010-01-28 16:15:28 UTC (rev 100057)
+++ branches/Branch_Hornet_Temporary_2/build/build.xml	2010-01-28 16:31:18 UTC (rev 100058)
@@ -1768,47 +1768,6 @@
 
     <mkdir dir="${install.common.lib}"/>
 
- 	
-  	
-    <copy file="${org.hornetq:hornetq-jboss-as-integration:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-    <copy file="${org.hornetq:hornetq-bootstrap:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-  	<copy file="${org.hornetq:hornetq-core-client:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
- 	<copy file="${org.hornetq:hornetq-core:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
- 	<copy file="${org.hornetq:hornetq-logging:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
- 	<copy file="${org.hornetq:hornetq-ra:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
- 	<copy file="${org.hornetq:hornetq-transports:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
- 	<copy file="${org.jboss.jbossas:jboss-as-hornetq-int:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
-    <copy file="${org.hornetq:hornetq-jms-client:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
- 	<copy file="${org.hornetq:hornetq-jms:jar}" todir="${install.common.lib}">
-        <mapper refid="remove-versions" />
-    </copy>
-
-
   	<!--
          Default configuration
     -->
@@ -1849,22 +1808,19 @@
     	  <mapper type="flatten"/>
     </unzip>
 
-  	
-    <mkdir dir="${install.common.lib}"/>
-
     <!-- The hibernate-int module output -->
     <copy file="${hornetq.module.output}/jboss-as-hornetq-int.jar"
             todir="${install.common.lib}/" filtering="no" />
-
-    <copy todir="${install.server}/all/deployers" filtering="no">
-      <fileset dir="${hornetq.module.output}/resources">
-        <include name="hornetq-definitions-jboss-beans.xml"/>
+     
+     <copy todir="${install.server}/all/deploy/admin-console.war/plugins" filtering="no">
+      <fileset dir="${hornetq.module.output}">
+        <include name="jboss-as-hornetq-plugin.jar"/>
       </fileset>
     </copy>
 
   </target>
 
-  <target name="module-hornetq-int-all" depends="module-hibernate-int">
+  <target name="module-hornetq-int-all" depends="module-hornetq-int">
     <!-- Copy the generated javadocs -->
     <mkdir dir="${install.api}/${hornetq.module.name}"/>
     <copy todir="${install.api}/${hornetq.module.name}" filtering="no">
@@ -2005,6 +1961,13 @@
       <fileset refid="jboss.web:jsp-api:jar"/>
       <fileset refid="jboss.web:servlet-api:jar"/>
       <fileset refid="org.jboss.weld:weld-api:jar"/>
+      <fileset refid="org.hornetq:hornetq-jboss-as-integration:jar"/>
+      <fileset refid="org.hornetq:hornetq-bootstrap:jar"/>
+      <fileset refid="org.hornetq:hornetq-core:jar"/>
+      <fileset refid="org.hornetq:hornetq-logging:jar"/>
+      <fileset refid="org.hornetq:hornetq-transports:jar"/>
+      <fileset refid="org.jboss.jbossas:jboss-as-hornetq-int:jar"/>
+      <fileset refid="org.hornetq:hornetq-jms:jar"/>
       <mapper refid="remove-versions" />
     </copy>
 
@@ -2090,7 +2053,7 @@
       <fileset refid="org.jboss.aop:jboss-aop-deployers:jar"/>
       <fileset refid="gnu-getopt:getopt:jar"/>
       <mapper refid="remove-versions" />
-    </copy>
+     </copy>
     <!-- 
         -  Note: this is copied separately because the name (jboss-xml-binding) is 
         -  hardcoded in the wsconsume scripts.  Once this is changed
@@ -2190,6 +2153,8 @@
       <fileset refid="org.codehaus.jettison:jettison:jar"/>
       <fileset refid="org.jboss.netty:netty:jar"/>
       <fileset refid="org.jboss.weld:weld-api:jar"/>
+      <fileset refid="org.hornetq:hornetq-core-client:jar"/>
+      <fileset refid="org.hornetq:hornetq-jms-client:jar"/>
       <mapper refid="remove-versions" />
     </copy>
     <!-- 

Modified: branches/Branch_Hornet_Temporary_2/component-matrix/pom.xml
===================================================================
--- branches/Branch_Hornet_Temporary_2/component-matrix/pom.xml	2010-01-28 16:15:28 UTC (rev 100057)
+++ branches/Branch_Hornet_Temporary_2/component-matrix/pom.xml	2010-01-28 16:31:18 UTC (rev 100058)
@@ -583,7 +583,6 @@
         <artifactId>hornetq-transports</artifactId>
         <version>${version.hornetq}</version> 
       </dependency>
-      
       <dependency>
         <groupId>org.jboss.aspects</groupId>
         <artifactId>jboss-current-invocation-aspects</artifactId>
@@ -2884,6 +2883,10 @@
                         <exclude>org.jboss.microcontainer:jboss-kernel</exclude>
 			                  <exclude>org.jboss.microcontainer:jboss-spring-int</exclude>
                       </excludes>
+                       <includes>
+                         <include>javax.xml.bind:jaxb-api:jar:2.1</include>
+                         <include>javax.xml.stream:stax-api:jar:1.0-2</include>
+                       </includes>
                     </bannedDependencies>
                   </rules>
                 </configuration>

Modified: branches/Branch_Hornet_Temporary_2/hornetq-int/pom.xml
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/pom.xml	2010-01-28 16:15:28 UTC (rev 100057)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/pom.xml	2010-01-28 16:31:18 UTC (rev 100058)
@@ -23,6 +23,16 @@
       </resource>
     </resources>
     <plugins>
+       <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <excludes>
+             <exclude>org/jboss/jms/jopr/**</exclude>
+             <exclude>**/rhq-plugin.xml</exclude>
+          </excludes>
+        </configuration>
+      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-antrun-plugin</artifactId>
@@ -31,7 +41,7 @@
             <id>create-output</id>
             <goals>
               <goal>run</goal>
-            </goals>
+            </goals> 
             <phase>package</phase>
              <configuration>
               <tasks>
@@ -42,7 +52,14 @@
                     <include name="**"/>
                   </fileset>
                 </copy>
-
+                <jar jarfile="target/jboss-as-hornetq-plugin.jar">
+                  <fileset dir="${project.build.outputDirectory}">
+                    <include name="org/jboss/jms/jopr/**"/>
+                  </fileset>
+                   <fileset dir="target/resources">
+                    <include name="META-INF/**"/>
+                  </fileset>
+                </jar>
              </tasks>
             </configuration>
           </execution>
@@ -114,6 +131,18 @@
       <artifactId>jbosssx-client</artifactId>
     </dependency>
     <dependency>
+      <groupId>org.rhq</groupId>
+      <artifactId>rhq-core-domain</artifactId>
+       <version>1.4.0.B01</version>
+       <scope>compile</scope>
+     </dependency>
+     <dependency>
+      <groupId>org.rhq</groupId>
+      <artifactId>rhq-core-plugin-api</artifactId>
+      <version>1.4.0.B01</version>
+      <scope>compile</scope>
+     </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <scope>test</scope>

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueComponent.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueComponent.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueComponent.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,133 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr;
+
+import org.jboss.jms.jopr.util.MBeanUtil;
+import org.jboss.util.property.PropertyMap;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertyList;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.core.domain.configuration.definition.ConfigurationTemplate;
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.measurement.MeasurementReport;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.domain.operation.OperationDefinition;
+import org.rhq.core.domain.resource.ResourceType;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+
+import javax.management.ObjectName;
+import java.util.*;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 27, 2010
+ */
+public class HornetQJMSQueueComponent implements ResourceComponent, MeasurementFacet, OperationFacet
+{
+   private MBeanUtil util;
+
+   private ObjectName objectName;
+
+   private ResourceContext resourceContext;
+
+   public void getValues(MeasurementReport measurementReport, Set<MeasurementScheduleRequest> measurementScheduleRequests) throws Exception
+   {
+
+   }
+
+   public OperationResult invokeOperation(String oper, Configuration configuration) throws InterruptedException, Exception
+   {
+      Collection<PropertySimple> props = configuration.getSimpleProperties().values();
+      Object o = util.invoke(objectName, oper, props);
+      if(o == null)
+      {
+         return null;
+      }
+      else
+      {
+         OperationResult operationResult = new OperationResult();
+         Configuration c = operationResult.getComplexResults();
+         OperationDefinition operationDefinition = getOperationDefinition(oper);
+         PropertyList property = new PropertyList("result");
+         Map[] map = (Map[]) o;
+         for (Map map1 : map)
+         {
+            org.rhq.core.domain.configuration.PropertyMap p1 = new org.rhq.core.domain.configuration.PropertyMap("element");
+            property.add(p1);
+            for (Object o1 : map1.keySet())
+            {
+               p1.put(new PropertySimple((String) o1, map1.get(o1)));
+            }
+         }
+         c.put(property);
+         return operationResult;
+      }
+   }
+
+   public void start(ResourceContext resourceContext) throws InvalidPluginConfigurationException, Exception
+   {
+      util = new MBeanUtil();
+      objectName = new ObjectName("org.hornetq:module=JMS,type=Queue,name=" + resourceContext.getResourceKey().split(":")[1]);
+      this.resourceContext = resourceContext;
+   }
+
+   public void stop()
+   {
+      //To change body of implemented methods use File | Settings | File Templates.
+   }
+
+   public AvailabilityType getAvailability()
+   {
+      return null;  //To change body of implemented methods use File | Settings | File Templates.
+   }
+
+   private OperationDefinition getOperationDefinition(String operationName) {
+        ResourceType resourceType = resourceContext.getResourceType();
+        OperationDefinition operationDefinition = getOperationDefinition(resourceType, operationName);
+        if (operationDefinition == null)
+            throw new IllegalStateException("Operation named '" + operationName
+                + "' is not defined for Resource type '" + resourceType.getName() + "' in the '"
+                + resourceType.getPlugin() + "' plugin's descriptor.");
+        return operationDefinition;
+    }
+
+   public static Configuration getDefaultPluginConfiguration(ResourceType resourceType)
+    {
+        ConfigurationDefinition pluginConfigurationDefinition = resourceType.getPluginConfigurationDefinition();
+        if (pluginConfigurationDefinition != null)
+        {
+            ConfigurationTemplate template = pluginConfigurationDefinition.getDefaultTemplate();
+            if (template != null)
+                return template.getConfiguration().deepCopy();
+        }
+        return new Configuration(); // there is no default plugin config defined - return an empty one
+    }
+
+   public static OperationDefinition getOperationDefinition(ResourceType resourceType, String operationName)
+    {
+        Set<OperationDefinition> operationDefinitions = resourceType.getOperationDefinitions();
+        for (OperationDefinition operationDefinition : operationDefinitions)
+        {
+            if (operationDefinition.getName().equals(operationName))
+                return operationDefinition;
+        }
+        return null;
+    }
+}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueDiscoveryComponent.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueDiscoveryComponent.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSQueueDiscoveryComponent.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr;
+
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectInstance;
+import javax.management.ObjectName;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 27, 2010
+ */
+public class HornetQJMSQueueDiscoveryComponent implements ResourceDiscoveryComponent<HornetQJMSQueueComponent>
+{
+   public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<HornetQJMSQueueComponent> ctx) throws InvalidPluginConfigurationException, Exception
+   {
+      ObjectName name = new ObjectName("org.hornetq:module=JMS,type=Queue,name=*");
+      MBeanServer beanServer = org.jboss.mx.util.MBeanServerLocator.locate();
+      Set<ObjectInstance> objectInstances = beanServer.queryMBeans(name, null);
+      Set<DiscoveredResourceDetails> set = new HashSet<DiscoveredResourceDetails>();
+      for (ObjectInstance instance : objectInstances)
+      {
+         instance.getObjectName().getCanonicalName();
+         DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+               ctx.getResourceType(), // Resource type
+               "HornetQJMSQueue:" + instance.getObjectName().getKeyProperty("name"), // Resource key
+               instance.getObjectName().getKeyProperty("name"), // Resource name
+               null, // Resource version
+               "HornetQ JMS Queue", // Description
+               ctx.getDefaultPluginConfiguration(), // Plugin config
+               null // Process info from a process scan
+         );
+         set.add(detail);
+      }
+      return set;
+   }
+}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerComponent.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerComponent.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerComponent.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr;
+
+import org.jboss.jms.jopr.util.MBeanUtil;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertySimple;
+import org.rhq.core.domain.measurement.AvailabilityType;
+import org.rhq.core.domain.measurement.MeasurementReport;
+import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
+import org.rhq.core.pluginapi.inventory.*;
+import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+
+import javax.management.ObjectName;
+import java.util.Collection;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 26, 2010
+ */
+public class HornetQJMSServerComponent implements ResourceComponent, MeasurementFacet, OperationFacet
+{
+   private MBeanUtil util;
+
+   private ObjectName objectName;
+
+   public void getValues(MeasurementReport measurementReport, Set<MeasurementScheduleRequest> measurementScheduleRequests) throws Exception
+   {
+      //To change body of implemented methods use File | Settings | File Templates.
+   }
+
+   public OperationResult invokeOperation(String oper, Configuration configuration) throws InterruptedException, Exception
+   {
+      Collection<PropertySimple> props = configuration.getSimpleProperties().values();
+      Object o = util.invoke(objectName, oper, props);
+      if(o == null)
+      {
+         return null;  //To change body of implemented methods use File | Settings | File Templates.
+      }
+      else
+      {
+         return new OperationResult(o.toString());
+      }
+   }
+
+   public void start(ResourceContext resourceContext) throws InvalidPluginConfigurationException, Exception
+   {
+      util = new MBeanUtil();
+      objectName = new ObjectName("org.hornetq:module=JMS,type=Server");
+   }
+
+   public void stop()
+   {
+      //To change body of implemented methods use File | Settings | File Templates.
+   }
+
+   public AvailabilityType getAvailability()
+   {
+      return null;  //To change body of implemented methods use File | Settings | File Templates.
+   }
+}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerDiscoveryComponent.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerDiscoveryComponent.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQJMSServerDiscoveryComponent.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr;
+
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 26, 2010
+ */
+public class HornetQJMSServerDiscoveryComponent implements ResourceDiscoveryComponent<HornetQJMSServerComponent>
+{
+   public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<HornetQJMSServerComponent> ctx) throws InvalidPluginConfigurationException, Exception
+   {
+      Set<DiscoveredResourceDetails> set = new HashSet<DiscoveredResourceDetails>();
+      DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+               ctx.getResourceType(), // Resource type
+               "HornetQJMSServerManager", // Resource key
+               "HornetQ JMS Server Manager", // Resource name
+               null, // Resource version
+               "HornetQ Local Server", // Description
+               ctx.getDefaultPluginConfiguration(), // Plugin config
+               null // Process info from a process scan
+         );
+      set.add(detail);
+      return set;
+   }
+}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerComponent.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerComponent.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerComponent.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr;
+
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.domain.measurement.*;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceComponent;
+import org.rhq.core.pluginapi.inventory.ResourceContext;
+import org.rhq.core.pluginapi.measurement.MeasurementFacet;
+import org.rhq.core.pluginapi.operation.OperationFacet;
+import org.rhq.core.pluginapi.operation.OperationResult;
+
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 26, 2010
+ */
+public class HornetQServerComponent implements ResourceComponent, MeasurementFacet, OperationFacet
+{
+   private String[] queueNames;
+
+   private ResourceContext resourceContext;
+
+   public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> measurementScheduleRequests) throws Exception
+   {
+      for (MeasurementScheduleRequest request : measurementScheduleRequests)
+      {
+         if(DataType.TRAIT.equals(request.getDataType()))
+         {
+            if(request.getName().equals("hornetqversion"))
+            {
+               report.addData(new MeasurementDataTrait(request, resourceContext.getVersion()));
+            }
+         }
+      }
+   }
+
+   public void start(ResourceContext resourceContext) throws InvalidPluginConfigurationException, Exception
+   {
+      this.resourceContext = resourceContext;
+   }
+
+   public void stop()
+   {
+      //To change body of implemented methods use File | Settings | File Templates.
+   }
+
+   public AvailabilityType getAvailability()
+   {
+     return AvailabilityType.UP;
+   }
+   
+   public OperationResult invokeOperation(String s, Configuration configuration) throws InterruptedException, Exception
+   {
+      return null;  //To change body of implemented methods use File | Settings | File Templates.
+   }
+
+   public void setQueueNames(String[] queueNames)
+   {
+      this.queueNames = queueNames;
+   }
+}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerDiscoveryComponent.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerDiscoveryComponent.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/HornetQServerDiscoveryComponent.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr;
+
+import org.jboss.deployers.spi.management.ManagementView;
+import org.jboss.profileservice.spi.ProfileService;
+import org.rhq.core.domain.configuration.Configuration;
+import org.rhq.core.pluginapi.inventory.DiscoveredResourceDetails;
+import org.rhq.core.pluginapi.inventory.InvalidPluginConfigurationException;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryComponent;
+import org.rhq.core.pluginapi.inventory.ResourceDiscoveryContext;
+
+import javax.management.MBeanAttributeInfo;
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import javax.naming.InitialContext;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 26, 2010
+ */
+public class HornetQServerDiscoveryComponent implements ResourceDiscoveryComponent<HornetQServerComponent>
+{
+   public Set<DiscoveredResourceDetails> discoverResources(ResourceDiscoveryContext<HornetQServerComponent> ctx) throws InvalidPluginConfigurationException, Exception
+   {
+      ObjectName name = new ObjectName("org.hornetq:module=JMS,type=Server");
+      MBeanServer beanServer = org.jboss.mx.util.MBeanServerLocator.locate();
+      MBeanInfo info = beanServer.getMBeanInfo(name);
+      String version = (String) beanServer.getAttribute(name, "Version");
+      String[] queueNames = (String[]) beanServer.getAttribute(name, "QueueNames");
+      MBeanAttributeInfo[] attributeInfos = info.getAttributes();
+      //ctx.getParentResourceComponent().setQueueNames(queueNames);
+      Set<DiscoveredResourceDetails> set = new HashSet<DiscoveredResourceDetails>();
+      Configuration c = new Configuration();
+      DiscoveredResourceDetails detail = new DiscoveredResourceDetails(
+               ctx.getResourceType(), // Resource type
+               "HornetQServer", // Resource key
+               "HornetQ Local Server", // Resource name
+               version, // Resource version
+               "HornetQ Local Server", // Description
+               c, // Plugin config
+               null // Process info from a process scan
+         );
+      set.add(detail);
+      return set;
+   }
+}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/util/MBeanUtil.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/util/MBeanUtil.java	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/jopr/util/MBeanUtil.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2009 Red Hat, Inc.
+ * Red Hat 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.jboss.jms.jopr.util;
+
+import org.jboss.mx.util.MBeanServerLocator;
+import org.rhq.core.domain.configuration.Property;
+import org.rhq.core.domain.configuration.PropertySimple;
+
+import javax.management.MBeanInfo;
+import javax.management.MBeanServer;
+import javax.management.ObjectName;
+import java.util.Collection;
+
+/**
+ * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
+ *         Created Jan 26, 2010
+ */
+public class MBeanUtil
+{
+   private boolean initialized = false;
+
+   private MBeanServer beanServer;
+
+   private ObjectName jmsServerManager;
+
+   private void init() throws Exception
+   {
+      beanServer = MBeanServerLocator.locate();
+      jmsServerManager = new ObjectName("org.hornetq:module=JMS,type=Server");
+   }
+
+   public Object invoke(ObjectName objectName, String oper, Collection<PropertySimple> props) throws Exception
+   {
+      if(!initialized)
+      {
+         init();
+      }
+      Object[] params = new Object[props.size()];
+      String[] signature = new String[props.size()];
+      populateParams(props, params, signature);
+      return beanServer.invoke(objectName, oper, params, signature);
+   }
+
+   private static void populateParams(Collection<PropertySimple> props, Object[] params, String[] signature)
+   {
+      int pos = 0;
+      for (PropertySimple prop : props)
+      {
+         String[] val = prop.getName().split(":");
+         if(val.length == 1)
+         {
+            params[pos] = prop.getStringValue();
+            signature[pos] = "java.lang.String";
+         }
+         else
+         {
+            if(val[0].equals("Boolean"))
+            {
+               params[pos] = prop.getBooleanValue();
+               signature[pos] = "java.lang.Boolean";
+            }
+            else if(val[0].equals("String"))
+            {
+               params[pos] = prop.getStringValue();
+               signature[pos] = "java.lang.String";
+            }
+         }
+         pos++;
+      }
+   }
+}

Deleted: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMO.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMO.java	2010-01-28 16:15:28 UTC (rev 100057)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMO.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -1,22 +0,0 @@
-package org.jboss.jms.server.destination;
-
-import org.jboss.managed.api.annotation.*;
-
-import java.io.Serializable;
-/**
- * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
- *         Created Jan 25, 2010
- */
-
- at ManagementObject(
-      componentType = @ManagementComponent(type = "JMSDestination", subtype = "HornetQQueue"),
-      properties = ManagementProperties.EXPLICIT,
-      isRuntime = true)
-public class QueueMO  implements Serializable
-{
-   @ManagementProperty(use={ViewUse.CONFIGURATION},
-            description="The destination name",
-            includeInTemplate=true, mandatory=true, readOnly=true)
-      public String getName() { return null; }
-   
-}

Deleted: branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMODefinition.java
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMODefinition.java	2010-01-28 16:15:28 UTC (rev 100057)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/main/java/org/jboss/jms/server/destination/QueueMODefinition.java	2010-01-28 16:31:18 UTC (rev 100058)
@@ -1,59 +0,0 @@
-package org.jboss.jms.server.destination;
-
-import org.hornetq.jms.client.HornetQQueue;
-import org.hornetq.jms.management.impl.JMSQueueControlImpl;
-import org.jboss.logging.Logger;
-import org.jboss.managed.api.ManagedObject;
-import org.jboss.managed.api.factory.ManagedObjectDefinition;
-import org.jboss.managed.api.factory.ManagedObjectFactory;
-import org.jboss.managed.spi.factory.ManagedObjectBuilder;
-import org.jboss.metadata.spi.MetaData;
-
-/**
- * @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
- *         Created Jan 25, 2010
- */
-public class QueueMODefinition extends ManagedObjectDefinition
-{
-   private static Logger log = Logger.getLogger(QueueMODefinition.class);
-
-   public QueueMODefinition(ManagedObjectFactory factory)
-   {
-      super(JMSQueueControlImpl.class, new QueueMOBuilder(factory));
-   }
-
-   private static class QueueMOBuilder implements ManagedObjectBuilder
-   {
-      private ManagedObjectFactory factory;
-
-      private QueueMOBuilder(ManagedObjectFactory factory)
-      {
-         this.factory = factory;
-      }
-      /**
-       * Create a ManagedObject from QueueService to QueueServiceMO.
-       *
-       * @param clazz - the mbean class to create the ManagedObject for
-       * @param metaData - the MDR MetaData view
-       */
-      public ManagedObject buildManagedObject(Class<?> clazz, MetaData metaData)
-      {
-         ManagedObjectFactory mof = getMOFactory();
-         log.info("***********************************************************************************************Creating QueueMO template for: " + clazz);
-         return mof.createManagedObject(QueueMO.class, metaData);
-      }
-
-      /**
-       * Get MO factory.
-       *
-       * @return the MO factory
-       */
-      protected ManagedObjectFactory getMOFactory()
-      {
-         if (factory == null)
-            factory = ManagedObjectFactory.getInstance();
-
-         return factory;
-      }
-   }
-}

Added: branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/META-INF/rhq-plugin.xml
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/META-INF/rhq-plugin.xml	                        (rev 0)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/META-INF/rhq-plugin.xml	2010-01-28 16:31:18 UTC (rev 100058)
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<plugin name="HornetQ"
+        displayName="HornetQPlugin"
+        description="Supports management and monitoring of HornetQ Servers"
+        package="org.jboss.jms.jopr"
+        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+        xmlns="urn:xmlns:rhq-plugin"
+        xmlns:c="urn:xmlns:rhq-configuration">
+
+   <depends plugin="JMX" useClasses="true"/>
+
+      <server name="HornetQ Server"
+            discovery="HornetQServerDiscoveryComponent"
+            class="HornetQServerComponent">
+         <subcategories>
+            <subcategory name="JMS"
+                         description="JMS Management"/>
+            <subcategory name="Core"
+                description="Core Management">
+            </subcategory>
+        </subcategories>
+         <metric property="hornetqversion"
+                 displayName="HornetQ Version"
+                 description="the HornetQ Version"
+                 dataType="trait" displayType="summary"/>
+         <service name="HornetQ JMS Server"
+            discovery="HornetQJMSServerDiscoveryComponent"
+            subCategory="JMS"
+            class="HornetQJMSServerComponent"
+            singleton="true">
+            <operation name="createQueue" displayName="Create a JMS Queue" description="Create a JMS Queue.">
+               <parameters>
+		            <c:simple-property required="true" name="queueName" displayName="queue name"/>
+                  <c:simple-property required="true" name="String:jndiBinding" displayName="jndi binding"/>
+		        </parameters>
+               <results><c:simple-property name="operationResult" description="The Outcome of creating the queue."/></results>
+            </operation>
+            <operation name="destroyQueue" displayName="Destroy a JMS Queue" description="Destroy a JMS Queue.">
+               <parameters>
+		            <c:simple-property required="true" name="queueName" displayName="queue name"/>
+		        </parameters>
+               <results><c:simple-property name="operationResult" description="The Outcome of destroying the queue."/></results>
+            </operation>
+            <operation name="createTopic" displayName="Create a JMS Topic" description="Create a JMS Topic.">
+               <parameters>
+		            <c:simple-property required="true" name="topicName" displayName="topic name"/>
+                  <c:simple-property required="true" name="jndiBinding" displayName="jndi binding"/>
+		        </parameters>
+               <results><c:simple-property name="operationResult" description="The Outcome of creating the topic."/></results>
+            </operation>
+            <operation name="destroyTopic" displayName="Destroy a JMS Topic" description="Destroy a JMS Topic.">
+               <parameters>
+		            <c:simple-property required="true" name="topicName" displayName="topic name"/>
+		        </parameters>
+               <results><c:simple-property name="operationResult" description="The Outcome of destroying the topic."/></results>
+            </operation>
+         </service>
+
+         <service name="Queues"
+                  discovery="HornetQJMSQueueDiscoveryComponent"
+                  subCategory="JMS"
+                  class="HornetQJMSQueueComponent">
+            <operation name="listMessages" displayName="list all the messages" description="list all the messages.">
+               <parameters>
+		            <c:simple-property required="false" name="selector" displayName="the selector"/>
+		        </parameters>
+               <results>
+	                <c:list-property name="result">
+	                    <c:map-property required="false" name="element">
+	                       <c:simple-property type="string" name="JMSMessageID"/>
+	                       <c:simple-property type="long" required="false" name="JMSTimestamp"/>
+                          <c:simple-property type="long" required="false" name="JMSExpiration"/>
+                          <c:simple-property type="string" required="false" name="JMSDeliveryMode"/>
+                          <c:simple-property type="string" name="JMSMessageID"/>
+	                    </c:map-property>
+	                </c:list-property>
+               </results>
+            </operation>
+         </service>
+      </server>
+
+</plugin>
\ No newline at end of file

Deleted: branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/hornetq-definitions-jboss-beans.xml
===================================================================
--- branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/hornetq-definitions-jboss-beans.xml	2010-01-28 16:15:28 UTC (rev 100057)
+++ branches/Branch_Hornet_Temporary_2/hornetq-int/src/resources/hornetq-definitions-jboss-beans.xml	2010-01-28 16:31:18 UTC (rev 100058)
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-	Mappings for jms destinations to managed objects
-	$Id:$
--->
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
-  <!-- MODefinition for the QueueService class -->
-  <bean name="QueueMODefinition" class="org.jboss.jms.server.destination.QueueMODefinition">
-    <constructor>
-      <parameter><inject bean="ManagedObjectFactory" /></parameter>
-    </constructor>
-  </bean>
-
-</deployment>
\ No newline at end of file




More information about the jboss-cvs-commits mailing list