[jboss-cvs] JBossAS SVN: r72880 - projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Apr 29 19:28:39 EDT 2008
Author: alesj
Date: 2008-04-29 19:28:39 -0400 (Tue, 29 Apr 2008)
New Revision: 72880
Modified:
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java
projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java
Log:
Javassist Signatures.
TODO on tests.
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java 2008-04-29 23:02:22 UTC (rev 72879)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/ConstructorSignature.java 2008-04-29 23:28:39 UTC (rev 72880)
@@ -23,6 +23,8 @@
import java.lang.reflect.Constructor;
+import javassist.CtConstructor;
+import javassist.NotFoundException;
import org.jboss.reflect.spi.ConstructorInfo;
/**
@@ -65,6 +67,17 @@
/**
* Create a new Signature.
+ *
+ * @param constructor the constructor
+ * @throws NotFoundException for any errors
+ */
+ public ConstructorSignature(CtConstructor constructor) throws NotFoundException
+ {
+ super(convertParameters(constructor.getParameterTypes()));
+ }
+
+ /**
+ * Create a new Signature.
*
* @param constructor the constructor
*/
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java 2008-04-29 23:02:22 UTC (rev 72879)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/FieldSignature.java 2008-04-29 23:28:39 UTC (rev 72880)
@@ -23,6 +23,7 @@
import java.lang.reflect.Field;
+import javassist.CtField;
import org.jboss.reflect.spi.FieldInfo;
/**
@@ -55,6 +56,16 @@
/**
* Create a new Signature.
+ *
+ * @param field the field
+ */
+ public FieldSignature(CtField field)
+ {
+ super(field.getName());
+ }
+
+ /**
+ * Create a new Signature.
*
* @param field the field
*/
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java 2008-04-29 23:02:22 UTC (rev 72879)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodParametersSignature.java 2008-04-29 23:28:39 UTC (rev 72880)
@@ -23,6 +23,8 @@
import java.lang.reflect.Method;
+import javassist.CtMethod;
+import javassist.NotFoundException;
import org.jboss.reflect.spi.MethodInfo;
/**
@@ -80,6 +82,20 @@
/**
* Create a new Signature.
*
+ * @param method the method
+ * @param param the parameter number
+ * @throws NotFoundException for any error
+ */
+ public MethodParametersSignature(CtMethod method, int param) throws NotFoundException
+ {
+ super(method.getName(), convertParameters(method.getParameterTypes()));
+ this.param = param;
+ checkParam();
+ }
+
+ /**
+ * Create a new Signature.
+ *
* @param method the method info
* @param param the parameter number
*/
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java 2008-04-29 23:02:22 UTC (rev 72879)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/MethodSignature.java 2008-04-29 23:28:39 UTC (rev 72880)
@@ -24,6 +24,8 @@
import java.lang.reflect.Method;
import org.jboss.reflect.spi.MethodInfo;
+import javassist.CtMethod;
+import javassist.NotFoundException;
/**
* Method Signature.
@@ -67,6 +69,17 @@
/**
* Create a new Signature.
+ *
+ * @param method the method
+ * @throws NotFoundException for any error
+ */
+ public MethodSignature(CtMethod method) throws NotFoundException
+ {
+ super(method.getName(), convertParameters(method.getParameterTypes()));
+ }
+
+ /**
+ * Create a new Signature.
*
* @param method the method
*/
Modified: projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java
===================================================================
--- projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java 2008-04-29 23:02:22 UTC (rev 72879)
+++ projects/jboss-mdr/trunk/src/main/org/jboss/metadata/spi/signature/Signature.java 2008-04-29 23:28:39 UTC (rev 72880)
@@ -28,6 +28,13 @@
import java.lang.reflect.Method;
import java.util.Arrays;
+import javassist.CtClass;
+import javassist.CtConstructor;
+import javassist.CtField;
+import javassist.CtMember;
+import javassist.CtMethod;
+import javassist.NotFoundException;
+import javassist.CtPrimitiveType;
import org.jboss.reflect.spi.ConstructorInfo;
import org.jboss.reflect.spi.FieldInfo;
import org.jboss.reflect.spi.MemberInfo;
@@ -94,6 +101,36 @@
}
/**
+ * Get a signature for a member
+ *
+ * @param member the member
+ * @return the result
+ * @throws NotFoundException for any error
+ */
+ public static Signature getSignature(CtMember member) throws NotFoundException
+ {
+ if (member == null)
+ throw new IllegalArgumentException("Null member");
+
+ if (member instanceof CtMethod)
+ {
+ CtMethod method = CtMethod.class.cast(member);
+ return new MethodSignature(method);
+ }
+ if (member instanceof CtField)
+ {
+ CtField field = CtField.class.cast(member);
+ return new FieldSignature(field);
+ }
+ if (member instanceof CtConstructor)
+ {
+ CtConstructor constructor = CtConstructor.class.cast(member);
+ return new ConstructorSignature(constructor);
+ }
+ throw new IllegalArgumentException("Unknown member: " + member);
+ }
+
+ /**
* Get a signature for a member info
*
* @param member the member
@@ -139,6 +176,76 @@
return paramTypes;
}
+ public static String[] convertParameters(CtClass[] classes)
+ {
+ if (classes == null || classes.length == 0)
+ return NO_PARAMETERS;
+
+ String[] paramTypes = new String[classes.length];
+ for (int i = 0; i < classes.length; ++i)
+ paramTypes[i] = convertName(classes[i]);
+ return paramTypes;
+ }
+
+ /**
+ * Convert ct class to full classname.
+ *
+ * @param clazz the ct class
+ * @return class name
+ */
+ protected static String convertName(CtClass clazz)
+ {
+ if (clazz == null)
+ throw new IllegalArgumentException("Null CtClass");
+
+ CtClass temp = clazz;
+ if (temp.isArray())
+ {
+ StringBuilder buffer = new StringBuilder();
+ try
+ {
+ while (temp.isArray())
+ {
+ buffer.append('[');
+ temp = temp.getComponentType();
+ }
+ if (temp.isPrimitive())
+ {
+ CtPrimitiveType primitive = (CtPrimitiveType) temp;
+ buffer.append(Character.toString(primitive.getDescriptor()));
+ }
+ else
+ {
+ buffer.append('L');
+ buffer.append(temp.getName());
+ buffer.append(';');
+ }
+ return buffer.toString();
+ }
+ catch (NotFoundException e)
+ {
+ throw raiseClassNotFound(clazz.getName(), e);
+ }
+ }
+ return clazz.getName();
+ }
+
+ /**
+ * Raise NCDFE exception.
+ *
+ * @param name the classname
+ * @param e javassist exception
+ * @return NCDFE instance
+ * @throws NoClassDefFoundError transform e param into NCDFE
+ */
+ protected static NoClassDefFoundError raiseClassNotFound(String name, NotFoundException e) throws NoClassDefFoundError
+ {
+ NoClassDefFoundError ex = new NoClassDefFoundError("Unable to find class " + name);
+ if (e.getCause() != null)
+ ex.initCause(e.getCause()); // Hide the javassist error
+ throw ex;
+ }
+
@SuppressWarnings("deprecation")
public static Class<?>[] convertParameterTypes(TypeInfo[] typeInfos)
{
@@ -150,7 +257,7 @@
paramTypes[i] = typeInfos[i].getType();
return paramTypes;
}
-
+
/**
* Convert classes to string
*
@@ -345,7 +452,7 @@
for (int i = 0; i < this.parameters.length; ++i)
{
if (this.parameters[i] == null)
- throw new IllegalArgumentException("Null parameter");
+ throw new IllegalArgumentException("Null parameter, index: " + i);
}
}
More information about the jboss-cvs-commits
mailing list