[jboss-cvs] JBossAS SVN: r81455 - in projects/jboss-man/trunk: 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 17:53:07 EST 2008
Author: scott.stark at jboss.org
Date: 2008-11-21 17:53:06 -0500 (Fri, 21 Nov 2008)
New Revision: 81455
Modified:
projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java
projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java
projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
Log:
JBMAN-42, handle setting of null primitive values
Modified: projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java
===================================================================
--- projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java 2008-11-21 21:16:49 UTC (rev 81454)
+++ projects/jboss-man/trunk/managed/src/main/java/org/jboss/managed/plugins/factory/AbstractInstanceClassFactory.java 2008-11-21 22:53:06 UTC (rev 81455)
@@ -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;
@@ -385,6 +386,10 @@
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/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java
===================================================================
--- projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java 2008-11-21 21:16:49 UTC (rev 81454)
+++ projects/jboss-man/trunk/managed/src/test/java/org/jboss/test/managed/factory/test/SimpleManagedObjectFactoryUnitTestCase.java 2008-11-21 22:53:06 UTC (rev 81455)
@@ -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/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
===================================================================
--- projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java 2008-11-21 21:16:49 UTC (rev 81454)
+++ projects/jboss-man/trunk/metatype/src/main/java/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java 2008-11-21 22:53:06 UTC (rev 81455)
@@ -275,6 +275,29 @@
return oa;
}
+ @SuppressWarnings("deprecation")
+ public static Object mapNullToPrimitive(TypeInfo type)
+ {
+ Object zero = null;
+ if(type.getType() == byte.class)
+ zero = new Byte((byte)0);
+ else if(type.getType() == boolean.class)
+ zero = Boolean.FALSE;
+ else if(type.getType() == char.class)
+ zero = new Character('0');
+ else if(type.getType() == short.class)
+ zero = new Short((short)0);
+ else if(type.getType() == int.class)
+ zero = new Integer(0);
+ else if(type.getType() == long.class)
+ zero = new Long(0);
+ else if(type.getType() == float.class)
+ zero = new Float(0);
+ else if(type.getType() == double.class)
+ zero = new Double(0);
+ return zero;
+ }
+
/**
* Transform a primitive array into an Object[]. Converts
* a primitive array like char[] to Object[].
More information about the jboss-cvs-commits
mailing list