[jboss-cvs] JBossAS SVN: r66233 - in projects/microcontainer/trunk/metatype/src: main/org/jboss/metatype/plugins/types and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Oct 18 08:44:31 EDT 2007


Author: alesj
Date: 2007-10-18 08:44:31 -0400 (Thu, 18 Oct 2007)
New Revision: 66233

Modified:
   projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/api/types/ArrayMetaType.java
   projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java
   projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
   projects/microcontainer/trunk/metatype/src/tests/org/jboss/test/metatype/values/factory/test/UnwrapValueUnitTestCase.java
Log:
Primitive support in unwrap.

Modified: projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/api/types/ArrayMetaType.java
===================================================================
--- projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/api/types/ArrayMetaType.java	2007-10-18 10:38:13 UTC (rev 66232)
+++ projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/api/types/ArrayMetaType.java	2007-10-18 12:44:31 UTC (rev 66233)
@@ -28,6 +28,7 @@
 /**
  * ArrayMetaType.
  *
+ * @param <T> exact type
  * @author <a href="adrian at jboss.com">Adrian Brock</a>
  * @version $Revision: 1.1 $
  */
@@ -41,6 +42,7 @@
 
    /** The element type for the array */
    private MetaType elementType;
+
    /** Is elementType a primative array */
    private boolean primitiveArray;
 
@@ -66,7 +68,13 @@
        { Double.class.getName(),    double.class.getName(),  "D", SimpleMetaType.DOUBLE }
    };
 
-   static boolean isPrimitiveEncoding(final String primitiveKey)
+   /**
+    * Is primitive key.
+    *
+    * @param primitiveKey the key to check
+    * @return true if key is primitive
+    */
+   public static boolean isPrimitiveEncoding(final String primitiveKey)
    {
       for (Object[] typeDescr : PRIMITIVE_ARRAY_TYPES)
       {
@@ -77,7 +85,14 @@
       }
       return false;
    }
-   static SimpleMetaType<?> getPrimitiveMetaType(String primitiveTypeName)
+
+   /**
+    * Get primitive meta type.
+    *
+    * @param primitiveTypeName primitive type name
+    * @return primitive meta type or null if param is not primitive
+    */
+   public static SimpleMetaType<?> getPrimitiveMetaType(String primitiveTypeName)
    {
       for (Object[] typeDescr : PRIMITIVE_ARRAY_TYPES)
       {
@@ -86,12 +101,14 @@
       }
       return null;
    }
+
    /**
     * Get the char encoding string for the type name.
+    *
     * @param typeName - the primitive wrapper type name
     * @return char encoding string.
     */
-   static String getPrimativeEncoding(String typeName)
+   public static String getPrimitiveEncoding(String typeName)
    {
       for (Object[] typeDescr : PRIMITIVE_ARRAY_TYPES)
       {
@@ -100,12 +117,14 @@
       }
       return null;
    }
+
    /**
     * Get the char encoding string for the type name.
+    *
     * @param typeName - the primitive wrapper type name
     * @return primitive type name string.
     */
-   static String getPrimativeName(String typeName)
+   public static String getPrimitiveName(String typeName)
    {
       for (Object[] typeDescr : PRIMITIVE_ARRAY_TYPES)
       {
@@ -115,11 +134,23 @@
       return null;
    }
 
+   /**
+    * Get array meta type.
+    *
+    * @param elementType the element meta type
+    * @return array meta type
+    */
    public static <E extends Serializable> ArrayMetaType<E[]> getArrayType(MetaType<E> elementType)
    {
-      ArrayMetaType<E[]> arrayType = new ArrayMetaType<E[]>(1, elementType);
-      return arrayType;
+      return new ArrayMetaType<E[]>(1, elementType);
    }
+
+   /**
+    * Get primitive array meta type.
+    *
+    * @param arrayClass array class
+    * @return array meta type
+    */
    public static <T extends Serializable> ArrayMetaType<T> getPrimitiveArrayType(Class<T> arrayClass)
    {
       if (!arrayClass.isArray())
@@ -157,10 +188,10 @@
     * 
     * @param dimension the dimension
     * @param elementType the element type
-    * @param isPrimative is this a primitive type
+    * @param isPrimitive is this a primitive type
     * @return the class name
     */
-   private static String genName(int dimension, MetaType elementType, boolean isPrimative)
+   private static String genName(int dimension, MetaType elementType, boolean isPrimitive)
    {
       if (dimension < 1)
          throw new IllegalArgumentException("negative dimension");
@@ -171,9 +202,9 @@
       StringBuilder buffer = new StringBuilder();
       for (int i=0; i < dimension; i++)
          buffer.append('[');
-      if (isPrimative)
+      if (isPrimitive)
       {
-         buffer.append(getPrimativeEncoding(elementType.getClassName()));
+         buffer.append(getPrimitiveEncoding(elementType.getClassName()));
       }
       else
       {
@@ -189,10 +220,10 @@
     * 
     * @param dimension the dimension
     * @param elementType the element type
-    * @param isPrimative is this a primitive type
+    * @param isPrimitive is this a primitive type
     * @return the type name
     */
-   private static String genType(int dimension, MetaType elementType, boolean isPrimative)
+   private static String genType(int dimension, MetaType elementType, boolean isPrimitive)
    {
       if (dimension < 1)
          throw new IllegalArgumentException("negative dimension");
@@ -203,9 +234,9 @@
       StringBuilder buffer = new StringBuilder();
       for (int i=0; i < dimension; i++)
          buffer.append('[');
-      if (isPrimative)
+      if (isPrimitive)
       {
-         buffer.append(getPrimativeEncoding(elementType.getClassName()));
+         buffer.append(getPrimitiveEncoding(elementType.getClassName()));
       }
       else
       {
@@ -221,16 +252,16 @@
     * 
     * @param dimension the dimension
     * @param elementType the element type
-    * @param isPrimative is this a primitive type
+    * @param isPrimitive is this a primitive type
     * @return the description
     */
-   private static String genDesc(int dimension, MetaType elementType, boolean isPrimative)
+   private static String genDesc(int dimension, MetaType elementType, boolean isPrimitive)
    {
       StringBuilder buffer = new StringBuilder();
       buffer.append(new Integer(dimension));
       buffer.append("-dimension array of ");
-      if (isPrimative)
-         buffer.append(getPrimativeName(elementType.getTypeName()));
+      if (isPrimitive)
+         buffer.append(getPrimitiveName(elementType.getTypeName()));
       else
          buffer.append(elementType.getTypeName());
       return buffer.toString();
@@ -252,16 +283,27 @@
       this.elementType = elementType;
       this.primitiveArray = false;
    }
+
    /**
     * Construct an ArrayMetaType.
-    * @param elementType
-    * @param primitiveArray
+    *
+    * @param elementType the element type
+    * @param primitiveArray is primitive array
     */
    public ArrayMetaType(SimpleMetaType<?> elementType, boolean primitiveArray)
    {
       this(1, elementType, primitiveArray);
    }
-   public ArrayMetaType(int dimension, SimpleMetaType<?> elementType, boolean primitiveArray)
+
+   /**
+    * Construct an ArrayMetaType.
+    *
+    * @param dimension the number of dimensions in the array
+    * @param elementType the open type of the array elements
+    * @param primitiveArray is primitive array
+    * @throws IllegalArgumentException for a null argument or non-negative dimension or when meta type is an ArrayMetaType
+    */
+   public ArrayMetaType(int dimension, MetaType<?> elementType, boolean primitiveArray)
    {
       super(genName(dimension, elementType, primitiveArray),
             genType(dimension, elementType, primitiveArray),
@@ -291,6 +333,11 @@
       return elementType;
    }
 
+   /**
+    * Is primitive array.
+    *
+    * @return true for primitive array
+    */
    public boolean isPrimitiveArray()
    {
       return primitiveArray;

Modified: projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java
===================================================================
--- projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java	2007-10-18 10:38:13 UTC (rev 66232)
+++ projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/types/DefaultMetaTypeFactory.java	2007-10-18 12:44:31 UTC (rev 66233)
@@ -255,7 +255,7 @@
          componentType = ((ArrayInfo) componentType).getComponentType();
       }
       MetaType componentMetaType = resolve(componentType);
-      return new ArrayMetaType(dimension, componentMetaType);
+      return new ArrayMetaType(dimension, componentMetaType, componentType.isPrimitive());
    }
    
    /**

Modified: projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java
===================================================================
--- projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java	2007-10-18 10:38:13 UTC (rev 66232)
+++ projects/microcontainer/trunk/metatype/src/main/org/jboss/metatype/plugins/values/DefaultMetaValueFactory.java	2007-10-18 12:44:31 UTC (rev 66233)
@@ -65,6 +65,7 @@
 import org.jboss.reflect.spi.ArrayInfo;
 import org.jboss.reflect.spi.ClassInfo;
 import org.jboss.reflect.spi.TypeInfo;
+import org.jboss.reflect.spi.TypeInfoFactory;
 
 /**
  * DefaultMetaValueFactory.
@@ -446,6 +447,13 @@
       return internalUnwrap(metaValue, type);
    }
 
+   /**
+    * Unwrap value from meta value.
+    *
+    * @param metaValue the meta value
+    * @param type expected type info
+    * @return unwrapped value
+    */
    protected Object internalUnwrap(MetaValue metaValue, TypeInfo type)
    {
       if (metaValue == null)
@@ -589,11 +597,15 @@
 
       try
       {
+         TypeInfoFactory tif = configuration.getTypeInfoFactory();
          if (metaType.isArray())
          {
             ArrayMetaType arrayMetaType = (ArrayMetaType)metaType;
             MetaType elementMetaType = arrayMetaType.getElementType();
-            TypeInfo elementTypeInfo = configuration.getClassInfo(elementMetaType.getTypeName(), cl);
+            String elementTypeName = elementMetaType.getTypeName();
+            if (arrayMetaType.isPrimitiveArray())
+               elementTypeName = ArrayMetaType.getPrimitiveName(elementTypeName);
+            TypeInfo elementTypeInfo = tif.getTypeInfo(elementTypeName, cl);
             int dimension = arrayMetaType.getDimension() - 1; // minus 1, since we already use first in next line
             TypeInfo typeInfo = elementTypeInfo.getArrayType();
             while(dimension > 0)
@@ -603,7 +615,7 @@
             }
             return typeInfo;
          }
-         return configuration.getClassInfo(metaType.getTypeName(), cl);
+         return tif.getTypeInfo(metaType.getTypeName(), cl);
       }
       catch (ClassNotFoundException e)
       {

Modified: projects/microcontainer/trunk/metatype/src/tests/org/jboss/test/metatype/values/factory/test/UnwrapValueUnitTestCase.java
===================================================================
--- projects/microcontainer/trunk/metatype/src/tests/org/jboss/test/metatype/values/factory/test/UnwrapValueUnitTestCase.java	2007-10-18 10:38:13 UTC (rev 66232)
+++ projects/microcontainer/trunk/metatype/src/tests/org/jboss/test/metatype/values/factory/test/UnwrapValueUnitTestCase.java	2007-10-18 12:44:31 UTC (rev 66233)
@@ -109,12 +109,7 @@
       {
          public boolean assertArray(final Object original, final Object unwrapped)
          {
-            short[] so = (short[])original;
-            Short[] SO = (Short[])unwrapped;
-            for (int i = 0; i < so.length; i++)
-               if (so[i] != SO[i])
-                  return false;
-            return true;
+            return Arrays.equals((short[])original, (short[])unwrapped);
          }
       });
 




More information about the jboss-cvs-commits mailing list