All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.restler.spring.mvc.asm.ClassUtils Maven / Gradle / Ivy

There is a newer version: 0.5.1
Show newest version
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