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<Object> cons = (Constructor<Object>) classLiteral.getDeclaredConstructor(); return GwtReflectionUtils.instantiateClass(cons); } catch (NoSuchMethodException e2) { return null; } } } }