[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