[jboss-cvs] JBossAS SVN: r110945 - projects/jboss-jca/trunk/rhq/src/main/java/org/jboss/jca/rhq/ra.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Mar 18 00:10:20 EDT 2011


Author: gaol
Date: 2011-03-18 00:10:19 -0400 (Fri, 18 Mar 2011)
New Revision: 110945

Modified:
   projects/jboss-jca/trunk/rhq/src/main/java/org/jboss/jca/rhq/ra/AoResourceComponent.java
Log:
[JBJCA-521] gets interface-class-name of AoResourceComponent

Modified: projects/jboss-jca/trunk/rhq/src/main/java/org/jboss/jca/rhq/ra/AoResourceComponent.java
===================================================================
--- projects/jboss-jca/trunk/rhq/src/main/java/org/jboss/jca/rhq/ra/AoResourceComponent.java	2011-03-17 20:31:49 UTC (rev 110944)
+++ projects/jboss-jca/trunk/rhq/src/main/java/org/jboss/jca/rhq/ra/AoResourceComponent.java	2011-03-18 04:10:19 UTC (rev 110945)
@@ -29,8 +29,12 @@
 import org.jboss.jca.rhq.core.ManagementRepositoryManager;
 import org.jboss.jca.rhq.util.ManagementRepositoryHelper;
 
+import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
+import javax.resource.Referenceable;
+import javax.resource.spi.AdministeredObject;
 import javax.resource.spi.ResourceAdapterAssociation;
 
 import org.jboss.logging.Logger;
@@ -101,6 +105,9 @@
       config.put(intfClsNameProp);
       
       // interface-class-name
+      String aoIntfClsName = getAdminObjectInterfaceClassName(obj.getClass());
+      PropertySimple aoIntfClsNameProp = new PropertySimple("interface-class-name", aoIntfClsName);
+      config.put(aoIntfClsNameProp);
       
       // use-ra-association
       boolean useRaAsso = ResourceAdapterAssociation.class.isAssignableFrom(obj.getClass());
@@ -115,6 +122,60 @@
       return config;
    }
    
+   /**
+    * Gets AdminObject interfaces class name string.
+    * 
+    * @param aoCls AdminObject class
+    * @return string represents all interfaces class names, connected by ', '.
+    */
+   private String getAdminObjectInterfaceClassName(Class<? extends Object> aoCls)
+   {
+      List<Class<?>> intfClsList = new ArrayList<Class<?>>();
+      AdministeredObject aoAnnotation = aoCls.getAnnotation(AdministeredObject.class);
+      if (aoAnnotation != null)
+      {
+         Class<?>[] intfCls = aoAnnotation.adminObjectInterfaces();
+         if (null != intfCls)
+         {
+            for (Class<?> cls : intfCls)
+            {
+               intfClsList.add(cls);
+            }
+         }
+      }
+      Class<?>[] intfs = aoCls.getInterfaces();
+      for (Class<?> intf : intfs)
+      {
+         if (intf.equals(Serializable.class) || intf.equals(Referenceable.class))
+         {
+            continue;
+         }
+         else if (intf.getName().startsWith("javax.resource.spi"))
+         {
+            continue;
+         }
+         else if (intf.getName().startsWith("javax.naming"))
+         {
+            continue;
+         }
+         if (!intfClsList.contains(intf))
+         {
+            intfClsList.add(intf);
+         }
+      }
+      StringBuilder sb = new StringBuilder();
+      for (int i = 0; i< intfClsList.size(); i ++)
+      {
+         Class<?> cls = intfClsList.get(i);
+         sb.append(cls.getName());
+         if (i < intfClsList.size() - 1)
+         {
+            sb.append(", ");
+         }
+      }
+      return sb.toString();
+   }
+
    @Override
    public void updateResourceConfiguration(ConfigurationUpdateReport updateResourceConfiguration)
    {



More information about the jboss-cvs-commits mailing list