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

org.nakedobjects.metamodel.commons.lang.JavaClassUtils Maven / Gradle / Ivy

The newest version!
package org.nakedobjects.metamodel.commons.lang;

import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


public final class JavaClassUtils {

    private static final String JAVA_CLASS_PREFIX = "java.";

    private static Map> builtInClasses = new HashMap>();

    static {
        put(void.class);
        put(boolean.class);
        put(char.class);
        put(byte.class);
        put(short.class);
        put(int.class);
        put(long.class);
        put(float.class);
        put(double.class);
    }


	private static void put(Class cls) {
		builtInClasses.put(cls.getName(), cls);
	}

	
    private JavaClassUtils() {}

    
	public static Class getBuiltIn(String name) {
		return builtInClasses.get(name);
	}
    
    public static String[] getInterfaces(final Class type) {
        final Class[] interfaces = type.getInterfaces();
        final Class[] nakedInterfaces = new Class[interfaces.length];
        int validInterfaces = 0;
        for (int i = 0; i < interfaces.length; i++) {
            nakedInterfaces[validInterfaces++] = interfaces[i];
        }

        final String[] interfaceNames = new String[validInterfaces];
        for (int i = 0; i < validInterfaces; i++) {
            interfaceNames[i] = nakedInterfaces[i].getName();
        }

        return interfaceNames;
    }

    public static String getSuperclass(final Class type) {
        final Class superType = type.getSuperclass();

        if (superType == null) {
            return null;
        }
        return superType.getName();
    }

    public static boolean isAbstract(final Class type) {
        return Modifier.isAbstract(type.getModifiers());
    }

    public static boolean isFinal(final Class type) {
        return Modifier.isFinal(type.getModifiers());
    }

    public static boolean isPublic(final Class type) {
        return Modifier.isPublic(type.getModifiers());
    }

    public static boolean isJavaClass(final Class type) {
        return type.getName().startsWith(JAVA_CLASS_PREFIX) || type.getName().startsWith("sun.");
    }

    public static boolean isStatic(final Method method) {
        return Modifier.isStatic(method.getModifiers());
    }
    
    public static boolean isPublic(final Method method) {
        return Modifier.isPublic(method.getModifiers());
    }
    
    public static List> toClasses(List objectList) {
	    List> classList = new ArrayList>();
	    for (Object service : objectList) {
	    classList.add(service.getClass());
	    }
	    return classList;
    }

    

}