[jboss-cvs] JBossAS SVN: r65119 - trunk/system-jmx/src/main/org/jboss/system/deployers/managed.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Sep 5 15:50:03 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-09-05 15:50:03 -0400 (Wed, 05 Sep 2007)
New Revision: 65119

Modified:
   trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java
Log:
JBAS-4672, unwrap the ServiceValueMetaData

Modified: trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java
===================================================================
--- trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java	2007-09-05 19:48:32 UTC (rev 65118)
+++ trunk/system-jmx/src/main/org/jboss/system/deployers/managed/ServiceMetaDataICF.java	2007-09-05 19:50:03 UTC (rev 65119)
@@ -28,12 +28,15 @@
 
 import org.jboss.beans.info.spi.BeanInfo;
 import org.jboss.beans.info.spi.PropertyInfo;
+import org.jboss.logging.Logger;
 import org.jboss.managed.api.ManagedProperty;
 import org.jboss.managed.spi.factory.InstanceClassFactory;
 import org.jboss.metatype.api.values.MetaValue;
 import org.jboss.metatype.api.values.MetaValueFactory;
 import org.jboss.system.metadata.ServiceAttributeMetaData;
+import org.jboss.system.metadata.ServiceDependencyValueMetaData;
 import org.jboss.system.metadata.ServiceMetaData;
+import org.jboss.system.metadata.ServiceTextValueMetaData;
 
 /**
  * The InstanceClassFactory implementation for ServiceMetaData.
@@ -44,6 +47,8 @@
 public class ServiceMetaDataICF
    implements InstanceClassFactory
 {
+   private static final Logger log = Logger.getLogger(ServiceMetaDataICF.class);
+
    private MBeanServer mbeanServer;
    /** The meta value factory */
    private MetaValueFactory metaValueFactory = MetaValueFactory.getInstance(); 
@@ -84,11 +89,24 @@
       Object value = null;
       for (ServiceAttributeMetaData amd : md.getAttributes())
       {
-         if (amd.getName().equals(name))
+         // The compare is case-insensitve due to the attribute/javabean case mismatch
+         if (amd.getName().equalsIgnoreCase(name))
          {
             value = amd.getValue();
          }
       }
+      // Unwrap the ServiceValueMetaData types
+      if (value instanceof ServiceTextValueMetaData)
+      {
+         ServiceTextValueMetaData text = (ServiceTextValueMetaData) value;
+         value = text.getText();
+      }
+      else if (value instanceof ServiceDependencyValueMetaData)
+      {
+         ServiceDependencyValueMetaData depends = (ServiceDependencyValueMetaData) value;
+         value = depends.getDependency();
+      }
+      // TODO: unwrap other ServiceValueMetaData types
 
       PropertyInfo propertyInfo = beanInfo.getProperty(name);
       if (propertyInfo == null)
@@ -97,8 +115,18 @@
                + " for " + instance.getClass().getName());
       }
 
-      return metaValueFactory.create(value, propertyInfo.getType());
+      MetaValue mvalue;
+      try
+      {
+         mvalue = metaValueFactory.create(value, propertyInfo.getType());
+      }
+      catch(Exception e)
+      {
+         log.debug("Failed to get property value for bean: "+beanInfo.getName()
+               +", property: "+propertyInfo.getName(), e);
+         mvalue = metaValueFactory.create(null, propertyInfo.getType());
+      }
+      return mvalue;
    }
 
-
 }




More information about the jboss-cvs-commits mailing list