package org.jboss.proxy.compiler;
import org.apache.bcel.Constants;
import org.apache.bcel.generic.BasicType;
import org.apache.bcel.generic.ObjectType;
import org.apache.bcel.generic.Type;
import org.jboss.util.UnreachableStatementException;
public abstract class Utility
extends org.apache.bcel.classfile.Utility
{
public static Type getType(Class clazz) {
if (clazz.isPrimitive()) {
if (clazz.equals(Boolean.TYPE) ) {
return Type.BOOLEAN;
}
else if (clazz.equals(Byte.TYPE) ) {
return Type.BYTE;
}
else if (clazz.equals(Character.TYPE) ) {
return Type.CHAR;
}
else if (clazz.equals(Double.TYPE) ) {
return Type.DOUBLE;
}
else if (clazz.equals(Float.TYPE) ) {
return Type.FLOAT;
}
else if (clazz.equals(Integer.TYPE) ) {
return Type.INT;
}
else if (clazz.equals(Long.TYPE) ) {
return Type.LONG;
}
else if (clazz.equals(Short.TYPE) ) {
return Type.SHORT;
}
else if (clazz.equals(Void.TYPE) ) {
return Type.VOID;
}
throw new UnreachableStatementException();
}
String name = clazz.getName();
if (clazz.isArray()) {
return Type.getType(name);
}
return new ObjectType(name);
}
public static Type[] getTypes(Class[] classes) {
Type[] types = new Type[classes.length];
for (int i = 0; i < classes.length; i++) {
types[i] = getType(classes[i]);
}
return types;
}
public static String getObjectEquivalentClassName(BasicType t) {
switch (t.getType()) {
case Constants.T_INT:
return "java.lang.Integer";
case Constants.T_SHORT:
return "java.lang.Short";
case Constants.T_BOOLEAN:
return "java.lang.Boolean";
case Constants.T_CHAR:
return "java.lang.Character";
case Constants.T_BYTE:
return "java.lang.Byte";
case Constants.T_FLOAT:
return "java.lang.Float";
case Constants.T_DOUBLE:
return "java.lang.Double";
case Constants.T_LONG:
return "java.lang.Long";
default:
throw new IllegalArgumentException("Unexpected Type: " + t);
}
}
}