
org.restler.spring.mvc.asm.ClassUtils Maven / Gradle / Ivy
package org.restler.spring.mvc.asm;
import org.restler.client.RestlerException;
import java.lang.reflect.Array;
import java.util.HashMap;
import java.util.Map;
public class ClassUtils {
private static final Map> primitiveTypesMap = new HashMap<>(16);
static {
primitiveTypesMap.put("Z", boolean.class);
primitiveTypesMap.put("B", byte.class);
primitiveTypesMap.put("C", char.class);
primitiveTypesMap.put("D", double.class);
primitiveTypesMap.put("F", float.class);
primitiveTypesMap.put("I", int.class);
primitiveTypesMap.put("S", short.class);
primitiveTypesMap.put("V", void.class);
primitiveTypesMap.put("boolean", boolean.class);
primitiveTypesMap.put("byte", byte.class);
primitiveTypesMap.put("char", char.class);
primitiveTypesMap.put("double", double.class);
primitiveTypesMap.put("float", float.class);
primitiveTypesMap.put("int", int.class);
primitiveTypesMap.put("short", short.class);
primitiveTypesMap.put("void", void.class);
}
public static Class> resolveClassName(String className, ClassLoader classLoader) {
className = className.replace('/', '.');
try {
Class> primitiveType = primitiveTypesMap.get(className);
if(primitiveType != null) {
return primitiveType;
}
if(className.startsWith("L")) {
return Class.forName(className.substring(1), true, classLoader);
} else if(className.startsWith("[")) {
return Array.newInstance(resolveClassName(className.substring(1), classLoader), 0).getClass();
}
throw new RestlerException("Can't resolve className " + className);
} catch (ClassNotFoundException e) {
throw new RestlerException("Can't found class " + className, e);
}
}
public static boolean isPrimitiveType(String name) {
return primitiveTypesMap.get(name) != null;
}
public static String getClassFileName(Class> clazz) {
String name = clazz.getName();
return name.substring(name.lastIndexOf('.')+1) + ".class";
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy