Example usage for com.google.gwt.dev.cfg ModuleDefLoader loadFromClassPath

List of usage examples for com.google.gwt.dev.cfg ModuleDefLoader loadFromClassPath

Introduction

In this page you can find the example usage for com.google.gwt.dev.cfg ModuleDefLoader loadFromClassPath.

Prototype

public static ModuleDef loadFromClassPath(TreeLogger logger, String moduleName, boolean refresh)
        throws UnableToCompleteException 

Source Link

Document

Loads a new module from the class path.

Usage

From source file:com.google.gdt.eclipse.designer.hosted.tdz.HostedModeSupport.java

License:Open Source License

/**
 * Load a module./*from  ww w .  jav  a  2  s. co  m*/
 * 
 * @param moduleName
 *            a Name of the module to load.
 * @param outDir
 * @return the loaded module.
 */
private ModuleDef loadModule(String moduleName) throws Exception {
    //boolean assumeFresh = !alreadySeenModules.contains(moduleName);
    ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(getLogger(), moduleName, true/*!assumeFresh*/);
    //alreadySeenModules.add(moduleName);
    assert moduleDef != null : "Required module state is absent";
    return moduleDef;
}

From source file:gwt.ns.webworker.rebind.WorkerFactoryGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {

    TypeOracle typeOracle = context.getTypeOracle();

    // find type, subinterface of WorkerFactory
    JClassType sourceType = typeOracle.findType(typeName);
    if (sourceType == null) {
        logger.log(TreeLogger.ERROR, "Could not find type " + typeName);
        throw new UnableToCompleteException();
    }//  w  w w.  j  a v a 2s  .  c o m

    // name of class to be
    String genName = sourceType.getSimpleSourceName() + "Impl" + getSourceSuffix();
    String pkgName = sourceType.getPackage().getName();
    String fullName = pkgName + "." + genName;

    PrintWriter out = context.tryCreate(logger, pkgName, genName);

    // finished if already generated
    if (out != null) {
        // retrieve name of Worker module from annotation
        WorkerModuleDef workerDef = sourceType.getAnnotation(WorkerModuleDef.class);
        if (workerDef == null) {
            logger.log(TreeLogger.ERROR, "WorkerFactory declaration must be " + "annotated with module name.");
            throw new UnableToCompleteException();
        }
        String moduleName = workerDef.value();

        // better way? should be cached after first load (in this process)
        ModuleDef modDef;
        try {
            modDef = ModuleDefLoader.loadFromClassPath(logger, moduleName, true);
        } catch (UnableToCompleteException e) {
            logger.log(TreeLogger.ERROR, "An attempt to load the Worker module annotated, \"" + moduleName
                    + "\", failed. See preceeding error.");
            throw e;
        }

        // basic module validity check: one entry point extending valid
        // Worker entry point class.
        // checked here so as to fail as soon as possible

        // only one entrypoint is supported for now
        String[] entryPoints = modDef.getEntryPointTypeNames();
        if (entryPoints.length < 1) {
            logger.log(TreeLogger.ERROR,
                    "Worker defined in " + moduleName + " must have an entry point specified.");
            throw new UnableToCompleteException();
        } else if (entryPoints.length > 1) {
            logger.log(TreeLogger.ERROR, "Only a single entry point is currently supported. " + moduleName
                    + " appears to define more than one:");
            for (String enPoint : entryPoints)
                logger.log(TreeLogger.ERROR, "EntryPoint: " + enPoint);
            throw new UnableToCompleteException();
        }

        // check to make sure entrypoint is worker compatible
        JClassType workerEntryType = typeOracle.findType(entryPoints[0]);
        JClassType superEntryType = typeOracle.findType(WorkerEntryPoint.class.getCanonicalName());
        if (!workerEntryType.isAssignableTo(superEntryType)) {
            logger.log(TreeLogger.ERROR, "Worker EntryPoint " + workerEntryType.getName()
                    + " must be assignable to " + superEntryType.getName());
            throw new UnableToCompleteException();
        }

        // generate WebWorker factory
        generateWorkerFactory(logger, context, sourceType, genName, out, modDef, workerEntryType);
    }

    return fullName;
}

From source file:org.cruxframework.crux.tools.codeserver.CodeServer.java

License:Apache License

protected void processUserAgent() {
    if (userAgent == null) {
        PrintWriterTreeLogger logger = new PrintWriterTreeLogger();
        logger.setMaxDetail(TreeLogger.Type.INFO);
        CompilerContext emptyCompilerContext = new CompilerContext.Builder().build();
        try {//from   www .  java  2  s.c  o m
            String moduleFullName = Modules.getInstance().getModule(moduleName).getFullName();
            ModuleDef moduleDef = ModuleDefLoader.loadFromClassPath(logger, emptyCompilerContext,
                    moduleFullName);
            BindingProperty userAgentProperty = (BindingProperty) moduleDef.getProperties().find("user.agent");
            userAgent = userAgentProperty.getFirstAllowedValue();
            if (userAgent == null) {
                throw new ConsoleParametersProcessingException(MSG_CAN_NOT_DETERMINE_THE_USER_AGENT);
            } else {
                CodeServer.logger.info("User Agent not provided. Using first valid value found on module "
                        + moduleFullName + ".gwt.xml.");
            }
        } catch (UnableToCompleteException e) {
            throw new ConsoleParametersProcessingException(e.getCause());
        }
    }
}