[jboss-cvs] JBossAS SVN: r59375 - in projects/microcontainer/trunk/container/src/main/org/jboss: metadata/spi/signature reflect/plugins
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Jan 5 11:48:01 EST 2007
Author: kabir.khan at jboss.com
Date: 2007-01-05 11:47:58 -0500 (Fri, 05 Jan 2007)
New Revision: 59375
Modified:
projects/microcontainer/trunk/container/src/main/org/jboss/metadata/spi/signature/Signature.java
projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java
Log:
Fix signatures for primitive arrays
Modified: projects/microcontainer/trunk/container/src/main/org/jboss/metadata/spi/signature/Signature.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/metadata/spi/signature/Signature.java 2007-01-05 12:21:33 UTC (rev 59374)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/metadata/spi/signature/Signature.java 2007-01-05 16:47:58 UTC (rev 59375)
@@ -56,6 +56,7 @@
/** The primitive types indexed by names */
private static final Map<String, Class> primitiveTypes = new HashMap<String, Class>();
+ private static final Map<String, String> primitiveArrayTypes = new HashMap<String, String>();
static
{
primitiveTypes.put(Byte.TYPE.getName(), Byte.TYPE);
@@ -66,6 +67,15 @@
primitiveTypes.put(Integer.TYPE.getName(), Integer.TYPE);
primitiveTypes.put(Long.TYPE.getName(), Long.TYPE);
primitiveTypes.put(Short.TYPE.getName(), Short.TYPE);
+
+ primitiveArrayTypes.put(Byte.TYPE.getName(), "B");
+ primitiveArrayTypes.put(Boolean.TYPE.getName(), "Z");
+ primitiveArrayTypes.put(Character.TYPE.getName(), "C");
+ primitiveArrayTypes.put(Double.TYPE.getName(), "D");
+ primitiveArrayTypes.put(Float.TYPE.getName(), "F");
+ primitiveArrayTypes.put(Integer.TYPE.getName(), "I");
+ primitiveArrayTypes.put(Long.TYPE.getName(), "J");
+ primitiveArrayTypes.put(Short.TYPE.getName(), "S");
}
/**
@@ -126,16 +136,31 @@
Class[] result = new Class[parameters.length];
for (int i = 0; i < result.length; ++i)
{
- Class primitive = primitiveTypes.get(parameters[i]);
- if (primitive != null)
+ String param = parameters[i];
+ int index = param.lastIndexOf('[');
+ if (index >= 0)
{
- result[i] = primitive;
- continue;
+ //For arrays we will want to load the class, the ArrayInfoImpl generates names in an invalid format, resolve this here
+ String primitiveCandidate = param.substring(index + 1);
+ String componentType = primitiveArrayTypes.get(primitiveCandidate);
+ if (componentType != null)
+ {
+ param = param.substring(0, index + 1) + componentType;
+ }
}
+ else
+ {
+ Class primitive = primitiveTypes.get(param);
+ if (primitive != null)
+ {
+ result[i] = primitive;
+ continue;
+ }
+ }
try
{
- result[i] = cl.loadClass(parameters[i]);
+ result[i] = cl.loadClass(param);
}
catch (ClassNotFoundException e)
{
Modified: projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java
===================================================================
--- projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java 2007-01-05 12:21:33 UTC (rev 59374)
+++ projects/microcontainer/trunk/container/src/main/org/jboss/reflect/plugins/ArrayInfoImpl.java 2007-01-05 16:47:58 UTC (rev 59375)
@@ -23,6 +23,7 @@
import org.jboss.reflect.spi.AnnotationValue;
import org.jboss.reflect.spi.ArrayInfo;
+import org.jboss.reflect.spi.PrimitiveInfo;
import org.jboss.reflect.spi.TypeInfo;
/**
@@ -65,7 +66,14 @@
builder.append("[");
temp = ((ArrayInfo) temp).getComponentType();
}
- builder.append("L").append(temp.getName()).append(";");
+ if (temp.getClass().equals(PrimitiveInfo.class))
+ {
+ builder.append(temp.getName());
+ }
+ else
+ {
+ builder.append("L").append(temp.getName()).append(";");
+ }
name = builder.toString();
calculateHash();
}
More information about the jboss-cvs-commits
mailing list