[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