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

com.googlecode.gwt.test.internal.handlers.DefaultGwtCreateHandler Maven / Gradle / Ivy

There is a newer version: 0.63
Show newest version
package com.googlecode.gwt.test.internal.handlers;

import com.googlecode.gwt.test.GwtCreateHandler;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;

import java.lang.reflect.Constructor;
import java.lang.reflect.Modifier;

class DefaultGwtCreateHandler implements GwtCreateHandler {

    @SuppressWarnings("unchecked")
    public Object create(Class classLiteral) throws Exception {
        if (classLiteral.isAnnotation() || classLiteral.isArray() || classLiteral.isEnum()
                || classLiteral.isInterface() || Modifier.isAbstract(classLiteral.getModifiers())) {
            return null;
        }

        try {
            // try to call public default constructor
            return classLiteral.newInstance();
        } catch (Exception e) {
            // search for a not-public default constructor to invoke
            try {
                Constructor cons = (Constructor) classLiteral.getDeclaredConstructor();
                return GwtReflectionUtils.instantiateClass(cons);
            } catch (NoSuchMethodException e2) {
                return null;
            }
        }
    }

}