[jboss-cvs] JBossAS SVN: r81458 - in projects/jboss-man/branches/Branch_2_0: managed/src/test/java/org/jboss/test/managed/factory/test and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 21 22:02:37 EST 2008
Author: scott.stark at jboss.org
Date: 2008-11-21 22:02:37 -0500 (Fri, 21 Nov 2008)
New Revision: 81458
Modified:
projects/jboss-man/branches/Branch_2_0/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java
projects/jboss-man/branches/Branch_2_0/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java
projects/jboss-man/branches/Branch_2_0/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
Log:
JBMAN-42, handle setting of null primitive values
Modified: projects/jboss-man/branches/Branch_2_0/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java
===================================================================
--- projects/jboss-man/branches/Branch_2_0/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java 2008-11-22 00:34:18 UTC (rev 81457)
+++ projects/jboss-man/branches/Branch_2_0/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java 2008-11-22 03:02:37 UTC (rev 81458)
@@ -51,6 +51,7 @@
import org.jboss.metatype.api.values.GenericValueSupport;
import org.jboss.metatype.api.values.MetaValue;
import org.jboss.metatype.api.values.MetaValueFactory;
+import org.jboss.metatype.plugins.values.DefaultMetaValueFactory;
import org.jboss.reflect.spi.TypeInfo;
import org.jboss.util.NotImplementedException;
@@ -218,8 +219,7 @@
MetaType propertyType = property.getMetaType();
if (AbstractManagedObjectFactory.MANAGED_OBJECT_META_TYPE == propertyType)
{
- GenericValue gvs = getManagedObjectValue(beanInfo, property, metaData, value);
- return gvs;
+ return getManagedObjectValue(beanInfo, property, metaData, value);
}
else if (propertyType.isArray())
{
@@ -379,12 +379,16 @@
String name = getPropertyName(property);
PropertyInfo propertyInfo = beanInfo.getProperty(name);
- Object unwrapValue = metaValueFactory.unwrap(value, propertyInfo.getType());
- return unwrapValue;
+ return metaValueFactory.unwrap(value, propertyInfo.getType());
}
+
protected void setValue(BeanInfo beanInfo, PropertyInfo propertyInfo, Object object, Object unwrapValue)
throws Throwable
{
+ if(unwrapValue == null && propertyInfo.getType().isPrimitive())
+ {
+ unwrapValue = DefaultMetaValueFactory.mapNullToPrimitive(propertyInfo.getType());
+ }
propertyInfo.set(object, unwrapValue);
}
Modified: projects/jboss-man/branches/Branch_2_0/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java
===================================================================
--- projects/jboss-man/branches/Branch_2_0/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java 2008-11-22 00:34:18 UTC (rev 81457)
+++ projects/jboss-man/branches/Branch_2_0/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java 2008-11-22 03:02:37 UTC (rev 81458)
@@ -28,6 +28,9 @@
import junit.framework.Test;
import org.jboss.managed.api.ManagedObject;
+import org.jboss.managed.api.ManagedProperty;
+import org.jboss.metatype.api.types.SimpleMetaType;
+import org.jboss.metatype.api.values.SimpleValueSupport;
import org.jboss.test.managed.factory.AbstractManagedObjectFactoryTest;
import org.jboss.test.managed.factory.support.Simple;
@@ -148,4 +151,47 @@
checkPropertyDefaults(managedObject, "shortValue", Short.class, new Short((short) 2));
checkPropertyDefaults(managedObject, "stringValue", String.class, "Hello");
}
+
+ /**
+ * JBMAN-42 testing of setting primitive fields from a null
+ */
+ public void testSimplePrimitiveNullValues()
+ {
+ // Setup with non-zero values
+ Simple simple = new Simple();
+ simple.setBooleanvalue(true);
+ simple.setBytevalue((byte) 1);
+ simple.setCharactervalue('a');
+ simple.setDoublevalue(1);
+ simple.setFloatvalue(1);
+ simple.setIntegervalue(1);
+ simple.setLongvalue(1);
+ simple.setShortvalue((short) 1);
+
+ ManagedObject managedObject = initManagedObject(simple);
+ ManagedProperty booleanvalue = managedObject.getProperty("booleanvalue");
+ booleanvalue.setValue(new SimpleValueSupport(SimpleMetaType.BOOLEAN, null));
+ assertEquals("booleanvalue", false, simple.isBooleanvalue());
+ ManagedProperty bytevalue = managedObject.getProperty("bytevalue");
+ bytevalue.setValue(new SimpleValueSupport(SimpleMetaType.BYTE, null));
+ assertEquals("bytevalue", 0, simple.getBytevalue());
+ ManagedProperty charactervalue = managedObject.getProperty("charactervalue");
+ charactervalue.setValue(new SimpleValueSupport(SimpleMetaType.CHARACTER, null));
+ assertEquals("charactervalue", '0', simple.getCharactervalue());
+ ManagedProperty doublevalue = managedObject.getProperty("doublevalue");
+ doublevalue.setValue(new SimpleValueSupport(SimpleMetaType.DOUBLE, null));
+ assertEquals("doublevalue", 0d, simple.getDoublevalue());
+ ManagedProperty floatvalue = managedObject.getProperty("floatvalue");
+ floatvalue.setValue(new SimpleValueSupport(SimpleMetaType.FLOAT, null));
+ assertEquals("floatvalue", 0f, simple.getFloatvalue());
+ ManagedProperty integervalue = managedObject.getProperty("integervalue");
+ integervalue.setValue(new SimpleValueSupport(SimpleMetaType.INTEGER, null));
+ assertEquals("integervalue", 0, simple.getIntegervalue());
+ ManagedProperty longvalue = managedObject.getProperty("longvalue");
+ longvalue.setValue(new SimpleValueSupport(SimpleMetaType.LONG, null));
+ assertEquals("longvalue", 0, simple.getLongvalue());
+ ManagedProperty shortvalue = managedObject.getProperty("shortvalue");
+ shortvalue.setValue(new SimpleValueSupport(SimpleMetaType.SHORT, null));
+ assertEquals("shortvalue", 0, simple.getShortvalue());
+ }
}
Modified: projects/jboss-man/branches/Branch_2_0/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
===================================================================
--- projects/jboss-man/branches/Branch_2_0/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java 2008-11-22 00:34:18 UTC (rev 81457)
+++ projects/jboss-man/branches/Branch_2_0/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java 2008-11-22 03:02:37 UTC (rev 81458)
@@ -45,7 +45,6 @@
import org.jboss.beans.info.spi.PropertyInfo;
import org.jboss.config.plugins.property.PropertyConfiguration;
import org.jboss.config.spi.Configuration;
-import org.jboss.logging.Logger;
import org.jboss.metatype.api.types.ArrayMetaType;
import org.jboss.metatype.api.types.CollectionMetaType;
import org.jboss.metatype.api.types.CompositeMetaType;
@@ -95,6 +94,22 @@
/** The metatype factory */
private MetaTypeFactory metaTypeFactory = MetaTypeFactory.getInstance();
+ /** The primitive default value map */
+ private static final Map<Class<?>, Object> primitiveDefaultValueMap;
+
+ static
+ {
+ primitiveDefaultValueMap = new HashMap<Class<?>, Object>();
+ primitiveDefaultValueMap.put(byte.class, (byte)0);
+ primitiveDefaultValueMap.put(boolean.class, false);
+ primitiveDefaultValueMap.put(char.class, '0');
+ primitiveDefaultValueMap.put(short.class, (short)0);
+ primitiveDefaultValueMap.put(int.class, 0);
+ primitiveDefaultValueMap.put(long.class, 0l);
+ primitiveDefaultValueMap.put(float.class, (float)0);
+ primitiveDefaultValueMap.put(double.class, (double)0);
+ }
+
/** The configuration */
private static Configuration configuration;
@@ -272,11 +287,22 @@
{
oa = (Object[]) value;
}
-
return oa;
}
/**
+ * Map null to primitive.
+ *
+ * @param type the type info
+ * @return default value
+ */
+ @SuppressWarnings("deprecation")
+ public static Object mapNullToPrimitive(TypeInfo type)
+ {
+ return primitiveDefaultValueMap.get(type.getType());
+ }
+
+ /**
* Transform a primitive array into an Object[]. Converts
* a primitive array like char[] to Object[].
*
More information about the jboss-cvs-commits
mailing list