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

com.googlecode.gwt.test.internal.handlers.DeferredGenerateWithCreateHandler 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.exceptions.GwtTestConfigurationException;
import com.googlecode.gwt.test.internal.GwtConfig;
import com.googlecode.gwt.test.internal.ModuleData;
import com.googlecode.gwt.test.utils.GwtReflectionUtils;

import java.util.HashSet;
import java.util.Set;

public class DeferredGenerateWithCreateHandler implements GwtCreateHandler {

    private Set> customGeneratedClasses;

    public Object create(Class classLiteral) throws Exception {
        if (customGeneratedClasses == null) {
            customGeneratedClasses = initCustomGeneratedClasses();
        }

        for (Class clazz : customGeneratedClasses) {
            if (clazz.isAssignableFrom(classLiteral)) {
                throw new GwtTestConfigurationException(
                        "A custom Generator should be used to instanciate '"
                                + classLiteral.getName()
                                + "', but gwt-test-utils does not support GWT compiler API, so you have to add our own GwtCreateHandler with 'GwtTest.addGwtCreateHandler(..)' method or to declare your tested object with @Mock");
            }
        }

        return null;
    }

    private Set> initCustomGeneratedClasses() {
        Set> result = new HashSet>();
        String moduleName = GwtConfig.get().getTestedModuleName();
        for (String className : ModuleData.get(moduleName).getCustomGeneratedClasses()) {
            try {
                result.add(GwtReflectionUtils.getClass(className));
            } catch (ClassNotFoundException e) {
                throw new GwtTestConfigurationException(
                        "Cannot find class configured to be instanced with a custom 'generate-with' Generator : '"
                                + className + "'");
            }
        }

        return result;
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy