[jboss-cvs] JBossAS SVN: r85720 - in projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype: api/values and 2 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Mar 11 03:15:52 EDT 2009
Author: scott.stark at jboss.org
Date: 2009-03-11 03:15:52 -0400 (Wed, 11 Mar 2009)
New Revision: 85720
Modified:
projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/AbstractMetaType.java
projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java
projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/PropertiesMetaType.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/types/DefaultMetaTypeFactory.java
projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
Log:
JBMAN-63, update handling of ObjectName
Modified: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/AbstractMetaType.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/AbstractMetaType.java 2009-03-11 06:48:19 UTC (rev 85719)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/AbstractMetaType.java 2009-03-11 07:15:52 UTC (rev 85720)
@@ -163,6 +163,11 @@
return false;
}
+ public boolean isProperties()
+ {
+ return false;
+ }
+
public abstract boolean isValue(Object obj);
/**
Modified: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java 2009-03-11 06:48:19 UTC (rev 85719)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/MetaType.java 2009-03-11 07:15:52 UTC (rev 85720)
@@ -183,6 +183,13 @@
boolean isTable();
/**
+ * Return whether the type is a PropertiesMetaType type.
+ * @see PropertiesMetaType
+ * @return true if type is a PropertiesMetaType
+ */
+ boolean isProperties();
+
+ /**
* Whether the passed value is one of those described by this meta type.
*
* @param obj the object to test
Modified: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/PropertiesMetaType.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/PropertiesMetaType.java 2009-03-11 06:48:19 UTC (rev 85719)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/PropertiesMetaType.java 2009-03-11 07:15:52 UTC (rev 85720)
@@ -71,7 +71,13 @@
{
return propertyNameDescriptions.get(name);
}
+
@Override
+ public boolean isProperties()
+ {
+ return true;
+ }
+ @Override
public boolean isValue(Object obj)
{
return obj instanceof PropertiesMetaValue;
Property changes on: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/types/PropertiesMetaType.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
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-03-11 06:48:19 UTC (rev 85719)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/values/PropertiesMetaValue.java 2009-03-11 07:15:52 UTC (rev 85720)
@@ -35,7 +35,7 @@
implements MetaValue
{
private static final long serialVersionUID = 1;
- private PropertiesMetaType type;
+ private PropertiesMetaType type = PropertiesMetaType.INSTANCE;
/**
* Build a PropertiesMetaValue from a Properties by copying all key/value
Property changes on: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/api/values/PropertiesMetaValue.java
___________________________________________________________________
Name: svn:keywords
+ Id Revision
Modified: projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java
===================================================================
--- projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java 2009-03-11 06:48:19 UTC (rev 85719)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java 2009-03-11 07:15:52 UTC (rev 85720)
@@ -33,6 +33,8 @@
import java.util.Set;
import java.util.WeakHashMap;
+import javax.management.ObjectName;
+
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.info.spi.PropertyInfo;
import org.jboss.config.plugins.property.PropertyConfiguration;
@@ -110,6 +112,7 @@
{
// Special types
setBuilder(Class.class, ClassMetaTypeBuilder.INSTANCE);
+ setBuilder(ObjectName.class, ObjectNameTypeBuilder.INSTANCE);
}
@Override
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-03-11 06:48:19 UTC (rev 85719)
+++ projects/jboss-man/branches/Branch_2_1/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java 2009-03-11 07:15:52 UTC (rev 85720)
@@ -32,15 +32,19 @@
import java.security.PrivilegedAction;
import java.util.Collection;
import java.util.HashMap;
+import java.util.Hashtable;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Properties;
import java.util.Set;
import java.util.SortedSet;
import java.util.Stack;
import java.util.WeakHashMap;
import java.util.Map.Entry;
+import javax.management.ObjectName;
+
import org.jboss.beans.info.spi.BeanInfo;
import org.jboss.beans.info.spi.PropertyInfo;
import org.jboss.config.plugins.property.PropertyConfiguration;
@@ -53,6 +57,7 @@
import org.jboss.metatype.api.types.MapCompositeMetaType;
import org.jboss.metatype.api.types.MetaType;
import org.jboss.metatype.api.types.MetaTypeFactory;
+import org.jboss.metatype.api.types.PropertiesMetaType;
import org.jboss.metatype.api.types.SimpleMetaType;
import org.jboss.metatype.api.types.TableMetaType;
import org.jboss.metatype.api.values.ArrayValue;
@@ -69,6 +74,7 @@
import org.jboss.metatype.api.values.MapCompositeValueSupport;
import org.jboss.metatype.api.values.MetaValue;
import org.jboss.metatype.api.values.MetaValueFactory;
+import org.jboss.metatype.api.values.PropertiesMetaValue;
import org.jboss.metatype.api.values.SimpleValue;
import org.jboss.metatype.api.values.SimpleValueSupport;
import org.jboss.metatype.api.values.TableValue;
@@ -737,9 +743,9 @@
{
BeanInfo beanInfo = configuration.getBeanInfo(typeName, cl);
ClassInfo classInfo = beanInfo.getClassInfo();
+ Class<?> clazz = classInfo.getType();
if (classInfo.isInterface())
{
- Class<?> clazz = classInfo.getType();
// Handle map specially
if (clazz.isAssignableFrom(Map.class))
return unwrapCompositeMap(compositeValue);
@@ -748,6 +754,19 @@
Class<?>[] interfaces = new Class[]{clazz};
return Proxy.newProxyInstance(clazz.getClassLoader(), interfaces, handler);
}
+ else if(clazz.isAssignableFrom(ObjectName.class))
+ {
+ // TODO: this should be handled more generically
+ MetaValue domain = compositeValue.get("domain");
+ String domainUnwrap = (String) unwrap(domain, String.class);
+ MetaValue keys = compositeValue.get("keyPropertyList");
+ Hashtable keysUnwrap = null;
+ if(keys instanceof PropertiesMetaValue)
+ keysUnwrap = (PropertiesMetaValue) keys;
+ ObjectName name = new ObjectName(domainUnwrap, keysUnwrap);
+ return name;
+ }
+
Object bean = createNewInstance(beanInfo);
for (String name : compositeMetaType.itemSet())
{
@@ -879,6 +898,37 @@
}
/**
+ * Create a PropertiesMetaValue
+ * @param metaType
+ * @param value
+ * @param mapping
+ * @return
+ */
+ protected MetaValue createPropertiesValue(PropertiesMetaType metaType,
+ Object value, Map<Object, MetaValue> mapping)
+ {
+ if (value == null)
+ return null;
+ if((value instanceof Hashtable) == false)
+ throw new IllegalArgumentException("PropertiesMetaType requires a java.lang.Properties value, value.class: "+value.getClass());
+
+ Hashtable pvalue = (Hashtable) value;
+ PropertiesMetaValue pmv = new PropertiesMetaValue();
+ for(Object key : pvalue.keySet())
+ {
+ if ((key instanceof String) == false)
+ throw new IllegalArgumentException("key("+key+") is not a String");
+ String skey = (String) key;
+ Object ovalue = pvalue.get(skey);
+ if ((key instanceof String) == false)
+ throw new IllegalArgumentException("value for key("+key+") is not a String, value.class: "+ovalue.getClass());
+ String svalue = (String) ovalue;
+ pmv.setProperty(skey, svalue);
+ }
+ return pmv;
+ }
+
+ /**
* Create new instance.
*
* @param beanInfo the bean info
@@ -1053,6 +1103,8 @@
result = createGenericValue((GenericMetaType) metaType, value, mapping);
else if (metaType.isCollection())
result = createCollectionValue((CollectionMetaType) metaType, value, mapping);
+ else if (metaType.isProperties())
+ result = createPropertiesValue((PropertiesMetaType) metaType, value, mapping);
else
throw new IllegalStateException("Unknown metaType: " + metaType);
}
More information about the jboss-cvs-commits
mailing list