[jboss-cvs] JBossAS SVN: r86613 - in projects/jboss-man/branches/Branch_2_1: managed/src/test/java/org/jboss/test/managed/factory/test and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Apr 1 16:49:36 EDT 2009


Author: scott.stark at jboss.org
Date: 2009-04-01 16:49:36 -0400 (Wed, 01 Apr 2009)
New Revision: 86613

Modified:
   projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java
   projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/PropertyMetaMapperUnitTestCase.java
   projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/values/PropertiesMetaValue.java
   projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
Log:
JBMAN-63, additional handling of Properties to ObjectName


Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java	2009-04-01 20:44:43 UTC (rev 86612)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/support/ObjectNameBean.java	2009-04-01 20:49:36 UTC (rev 86613)
@@ -44,6 +44,7 @@
    private ObjectName nameAsComposite;
    private ObjectName nameAsCompositeFixedKeys;
    private ObjectName nameAsProperties;
+   private ObjectName nameAsDefault;
 
    @ManagementProperty()
    @MetaMapping(StringObjectNameMetaMapper.class)
@@ -86,5 +87,17 @@
    public void setNameAsCompositeFixedKeys(ObjectName nameAsCompositeFixedKeys)
    {
       this.nameAsCompositeFixedKeys = nameAsCompositeFixedKeys;
-   }   
+   }
+   
+   @ManagementProperty()
+   public ObjectName getNameAsDefault()
+   {
+      return nameAsDefault;
+   }
+   public void setNameAsDefault(ObjectName nameAsDefault)
+   {
+      this.nameAsDefault = nameAsDefault;
+   }
+
+   
 }

Modified: projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/PropertyMetaMapperUnitTestCase.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/PropertyMetaMapperUnitTestCase.java	2009-04-01 20:44:43 UTC (rev 86612)
+++ projects/jboss-man/branches/Branch_2_1/managed/src/test/java/org/jboss/test/managed/factory/test/PropertyMetaMapperUnitTestCase.java	2009-04-01 20:49:36 UTC (rev 86613)
@@ -32,6 +32,7 @@
 import org.jboss.metatype.api.types.MetaType;
 import org.jboss.metatype.api.types.PropertiesMetaType;
 import org.jboss.metatype.api.types.SimpleMetaType;
+import org.jboss.metatype.api.values.CompositeValueSupport;
 import org.jboss.metatype.api.values.MapCompositeValueSupport;
 import org.jboss.metatype.api.values.MetaValue;
 import org.jboss.metatype.api.values.PropertiesMetaValue;
@@ -64,6 +65,7 @@
       bean.setNameAsComposite(new ObjectName("nameAsComposite:key1=value1,key2=value2"));
       bean.setNameAsCompositeFixedKeys(new ObjectName("nameAsCompositeFixedKeys:key1=value1,key2=value2"));
       bean.setNameAsProperties(new ObjectName("nameAsProperties:key1=value1,key2=value2"));
+      bean.setNameAsProperties(new ObjectName("nameAsDefault:key1=value1,key2=value2"));
    }
 
    public void testNameAsString()
@@ -132,6 +134,7 @@
       assertTrue(nameAsProperties.getTransientAttachment(MetaMapper.class) != null);
       MetaType nameAsPropertiesType = nameAsProperties.getMetaType();
       assertTrue(nameAsPropertiesType instanceof PropertiesMetaType);
+      log.info("nameAsPropertiesType: "+nameAsPropertiesType);
       PropertiesMetaValue props = new PropertiesMetaValue();
       props.put("domain", "nameAsProperties-update");
       props.put("key1", "value1");
@@ -141,4 +144,36 @@
       ObjectName nameAsPropertiesON = bean.getNameAsProperties();
       assertEquals("nameAsProperties-update:key1=value1,key2=value2,key3=value3", nameAsPropertiesON.getCanonicalName());
    }
+   
+   /**
+    * Tests that the default handling of ObjectName has a CompositeMetaType
+    * with a domain SimpleMetaType.STRING and keyPropertyList PropertiesMetaType
+    */
+   public void testNameAsDefault()
+   {
+      ManagedObject managedObject = super.initManagedObject(bean);
+
+      // A PropertiesMetaType for ObjectName
+      ManagedProperty nameAsDefault = managedObject.getProperty("nameAsDefault");
+      assertTrue(nameAsDefault.getTransientAttachment(MetaMapper.class) == null);
+      MetaType nameAsDefaultType = nameAsDefault.getMetaType();
+      log.info("nameAsDefaultType: "+nameAsDefaultType);
+      assertTrue(nameAsDefaultType instanceof CompositeMetaType);
+      CompositeMetaType nameAsDefaultCMT = (CompositeMetaType) nameAsDefaultType;
+      assertTrue(nameAsDefaultCMT.keySet().contains("domain"));
+      assertTrue(nameAsDefaultCMT.keySet().contains("keyPropertyList"));
+      assertEquals(SimpleMetaType.STRING, nameAsDefaultCMT.getType("domain"));
+      assertEquals(PropertiesMetaType.INSTANCE, nameAsDefaultCMT.getType("keyPropertyList"));
+      PropertiesMetaValue props = new PropertiesMetaValue();
+      props.put("key1", "value1");
+      props.put("key2", "value2");
+      props.put("key3", "value3");
+      String[] itemNames = {"domain", "keyPropertyList"};
+      MetaValue[] itemValues = {SimpleValueSupport.wrap("nameAsDefault-update"),
+            new PropertiesMetaValue(props)};
+      CompositeValueSupport update = new CompositeValueSupport(nameAsDefaultCMT, itemNames, itemValues);
+      nameAsDefault.setValue(update);
+      ObjectName nameAsDefaultON = bean.getNameAsDefault();
+      assertEquals("nameAsDefault-update:key1=value1,key2=value2,key3=value3", nameAsDefaultON.getCanonicalName());
+   }
 }

Modified: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/values/PropertiesMetaValue.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/values/PropertiesMetaValue.java	2009-04-01 20:44:43 UTC (rev 86612)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/values/PropertiesMetaValue.java	2009-04-01 20:49:36 UTC (rev 86613)
@@ -29,7 +29,7 @@
 /**
  * A mapping from the jdk Properties to a MetaValue
  * @author Scott.Stark at jboss.org
- * @version $Revision:$
+ * @version $Revision$
  */
 public class PropertiesMetaValue extends Properties
    implements MetaValue
@@ -78,7 +78,7 @@
     */
    public PropertiesMetaValue(Properties props, PropertiesMetaType type)
    {
-      super(props);
+      super.putAll(props);
       this.type = type;
    }
 

Modified: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java	2009-04-01 20:44:43 UTC (rev 86612)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java	2009-04-01 20:49:36 UTC (rev 86613)
@@ -43,6 +43,7 @@
 import java.util.WeakHashMap;
 import java.util.Map.Entry;
 
+import javax.management.MalformedObjectNameException;
 import javax.management.ObjectName;
 
 import org.jboss.beans.info.spi.BeanInfo;
@@ -627,6 +628,11 @@
          }
          return array;
       }
+      else if (metaType.isProperties())
+      {
+         PropertiesMetaValue propsValue = (PropertiesMetaValue) metaValue;
+         return unwrapProperties(propsValue, type);
+      }
       else if (metaType.isComposite())
       {
          CompositeValue compositeValue = (CompositeValue)metaValue;
@@ -643,7 +649,7 @@
          return unwrapTable(tableValue, type);
       }
 
-      throw new IllegalArgumentException("Unsupported meta value: " + metaValue);
+      throw new IllegalArgumentException("Unsupported meta value: " + metaValue.getMetaType());
    }
 
    /**
@@ -721,6 +727,28 @@
       return newElement;
    }
 
+   protected Object unwrapProperties(PropertiesMetaValue propsValue, TypeInfo type)
+   {
+      Class<?> clazz = type.getType();
+      // Handle unwrapping to ObjectName
+      if(clazz.isAssignableFrom(ObjectName.class))
+      {
+         String domainUnwrap = (String) propsValue.remove("domain");
+         ObjectName name;
+         try
+         {
+            name = new ObjectName(domainUnwrap, propsValue);
+         }
+         catch (Exception e)
+         {
+            throw new IllegalStateException("Failed to unwrap Properties to ObjectName", e);
+         }
+         return name;
+      }
+      // Just return the value as a java.util.Properties
+      return propsValue;
+   }
+
    /**
     * Unwrap composite.
     *




More information about the jboss-cvs-commits mailing list