[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