Search in sources :

Example 11 with JClassType

use of com.google.gwt.core.ext.typeinfo.JClassType in project che by eclipse.

the class ExtensionRegistryGenerator method generate.

/** {@inheritDoc} */
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
    TypeOracle typeOracle = context.getTypeOracle();
    JClassType extensionManager = typeOracle.findType(typeName);
    if (extensionManager == null) {
        logger.log(TreeLogger.ERROR, "Can't find interface type '" + typeName + "'", null);
        throw new UnableToCompleteException();
    }
    if (extensionManager.isInterface() == null) {
        logger.log(TreeLogger.ERROR, extensionManager.getQualifiedSourceName() + " is not an interface", null);
        throw new UnableToCompleteException();
    }
    List<JClassType> extensions = new ArrayList<>();
    for (JClassType type : typeOracle.getTypes()) {
        if (type.isAnnotationPresent(Extension.class)) {
            extensions.add(type);
        }
    }
    String packageName = extensionManager.getPackage().getName();
    String className = extensionManager.getSimpleSourceName() + "Impl";
    generateClass(logger, context, packageName, className, extensions);
    return packageName + "." + className;
}
Also used : JClassType(com.google.gwt.core.ext.typeinfo.JClassType) TypeOracle(com.google.gwt.core.ext.typeinfo.TypeOracle) UnableToCompleteException(com.google.gwt.core.ext.UnableToCompleteException) ArrayList(java.util.ArrayList)

Example 12 with JClassType

use of com.google.gwt.core.ext.typeinfo.JClassType in project gwt-test-utils by gwt-test-utils.

the class GwtFactory method createOverlayRewriter.

private OverlayTypesRewriter createOverlayRewriter(CompilationState compilationState) {
    TypeOracle typeOracle = compilationState.getTypeOracle();
    JClassType jsoType = typeOracle.findType(JsValueGlue.JSO_CLASS);
    // If we couldn't find the JSO class, we don't need to do any rewrites.
    return jsoType != null ? new OverlayTypesRewriter(compilationState, jsoType) : null;
}
Also used : JClassType(com.google.gwt.core.ext.typeinfo.JClassType) TypeOracle(com.google.gwt.core.ext.typeinfo.TypeOracle) OverlayTypesRewriter(com.googlecode.gwt.test.internal.rewrite.OverlayTypesRewriter)

Example 13 with JClassType

use of com.google.gwt.core.ext.typeinfo.JClassType in project gwtphonegap by dankurka.

the class PhoneGapLogValueGenerator method generate.

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
    PropertyOracle propertyOracle = context.getPropertyOracle();
    ConfigurationProperty property = null;
    int value = 100;
    try {
        property = propertyOracle.getConfigurationProperty("phonegap.logging.maxentries");
        List<String> values = property.getValues();
        if (values.size() < 1) {
            logger.log(TreeLogger.WARN, "can not resolve phonegap.logging.maxentries variable - defaulting to 100");
        } else {
            String stringValue = values.get(0);
            try {
                value = Integer.parseInt(stringValue);
            } catch (Exception e) {
                logger.log(TreeLogger.WARN, "can not prase phonegap.logging.maxentries variable - value: '" + stringValue + "' - defaulting to 100");
            }
        }
    } catch (BadPropertyValueException e) {
        logger.log(TreeLogger.WARN, "can not resolve phonegap.logging.maxentries variable - defaulting to 100", e);
    }
    JClassType classType = null;
    try {
        classType = context.getTypeOracle().getType(typeName);
    } catch (NotFoundException e) {
        logger.log(TreeLogger.ERROR, "can not find type: '" + typeName + "'", e);
        throw new UnableToCompleteException();
    }
    String packageName = classType.getPackage().getName();
    String simpleName = classType.getSimpleSourceName() + "_" + value;
    String fullName = packageName + "." + simpleName;
    ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, simpleName);
    composer.addImplementedInterface(typeName);
    composer.addImport(typeName);
    PrintWriter printWriter = context.tryCreate(logger, packageName, simpleName);
    if (printWriter == null) {
        return fullName;
    }
    SourceWriter writer = composer.createSourceWriter(context, printWriter);
    writer.println("public int getMaxEntries() {");
    writer.println("return " + value + ";");
    writer.println("}");
    writer.commit(logger);
    return fullName;
}
Also used : ConfigurationProperty(com.google.gwt.core.ext.ConfigurationProperty) ClassSourceFileComposerFactory(com.google.gwt.user.rebind.ClassSourceFileComposerFactory) NotFoundException(com.google.gwt.core.ext.typeinfo.NotFoundException) SourceWriter(com.google.gwt.user.rebind.SourceWriter) UnableToCompleteException(com.google.gwt.core.ext.UnableToCompleteException) BadPropertyValueException(com.google.gwt.core.ext.BadPropertyValueException) NotFoundException(com.google.gwt.core.ext.typeinfo.NotFoundException) JClassType(com.google.gwt.core.ext.typeinfo.JClassType) UnableToCompleteException(com.google.gwt.core.ext.UnableToCompleteException) BadPropertyValueException(com.google.gwt.core.ext.BadPropertyValueException) PropertyOracle(com.google.gwt.core.ext.PropertyOracle) PrintWriter(java.io.PrintWriter)

Example 14 with JClassType

use of com.google.gwt.core.ext.typeinfo.JClassType in project playn by threerings.

the class AutoClientBundleGenerator method generate.

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName) throws UnableToCompleteException {
    TypeOracle typeOracle = context.getTypeOracle();
    JClassType userType;
    try {
        userType = typeOracle.getType(typeName);
    } catch (NotFoundException e) {
        logger.log(TreeLogger.ERROR, "Unable to find metadata for type: " + typeName, e);
        throw new UnableToCompleteException();
    }
    String packageName = userType.getPackage().getName();
    String className = userType.getName();
    className = className.replace('.', '_');
    if (userType.isInterface() == null) {
        logger.log(TreeLogger.ERROR, userType.getQualifiedSourceName() + " is not an interface", null);
        throw new UnableToCompleteException();
    }
    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName, className + "Impl");
    composerFactory.addImplementedInterface(userType.getQualifiedSourceName());
    composerFactory.addImport(ClientBundleWithLookup.class.getName());
    composerFactory.addImport(DataResource.class.getName());
    composerFactory.addImport(GWT.class.getName());
    composerFactory.addImport(ImageResource.class.getName());
    composerFactory.addImport(ResourcePrototype.class.getName());
    composerFactory.addImport(TextResource.class.getName());
    File warDirectory = getWarDirectory(logger);
    assert warDirectory.isDirectory();
    File classesDirectory = new File(warDirectory, WEB_INF_CLASSES);
    assert classesDirectory.isDirectory();
    File resourcesDirectory = new File(classesDirectory, packageName.replace('.', '/'));
    assert resourcesDirectory.isDirectory();
    String baseClassesPath = classesDirectory.getPath();
    logger.log(TreeLogger.DEBUG, "baseClassesPath: " + baseClassesPath);
    Set<Resource> resources = preferMp3(getResources(context, userType, fileFilter));
    Set<String> methodNames = new HashSet<String>();
    PrintWriter pw = context.tryCreate(logger, packageName, className + "Impl");
    if (pw != null) {
        SourceWriter sw = composerFactory.createSourceWriter(context, pw);
        // write out jump methods
        sw.println("public ResourcePrototype[] getResources() {");
        sw.indent();
        sw.println("return MyBundle.INSTANCE.getResources();");
        sw.outdent();
        sw.println("}");
        sw.println("public ResourcePrototype getResource(String name) {");
        sw.indent();
        sw.println("return MyBundle.INSTANCE.getResource(name);");
        sw.outdent();
        sw.println("}");
        // write out static ClientBundle interface
        sw.println("static interface MyBundle extends ClientBundleWithLookup {");
        sw.indent();
        sw.println("MyBundle INSTANCE = GWT.create(MyBundle.class);");
        for (Resource resource : resources) {
            String relativePath = resource.getPath();
            String filename = resource.getPath().substring(resource.getPath().lastIndexOf('/') + 1);
            String contentType = getContentType(logger, resource);
            String methodName = stripExtension(filename);
            if (!isValidMethodName(methodName)) {
                logger.log(TreeLogger.WARN, "Skipping invalid method name (" + methodName + ") due to: " + relativePath);
                continue;
            }
            if (!methodNames.add(methodName)) {
                logger.log(TreeLogger.WARN, "Skipping duplicate method name due to: " + relativePath);
                continue;
            }
            logger.log(TreeLogger.DEBUG, "Generating method for: " + relativePath);
            Class<? extends ResourcePrototype> returnType = getResourcePrototype(contentType);
            // generate method
            sw.println();
            if (returnType == DataResource.class) {
                if (contentType.startsWith("audio/")) {
                    // Prevent the use of data URLs, which Flash won't play
                    sw.println("@DataResource.DoNotEmbed");
                } else {
                    // Specify an explicit MIME type, for use in the data URL
                    sw.println("@DataResource.MimeType(\"" + contentType + "\")");
                }
            }
            sw.println("@Source(\"" + relativePath + "\")");
            sw.println(returnType.getName() + " " + methodName + "();");
        }
        sw.outdent();
        sw.println("}");
        sw.commit(logger);
    }
    return composerFactory.getCreatedClassName();
}
Also used : TextResource(com.google.gwt.resources.client.TextResource) ClassSourceFileComposerFactory(com.google.gwt.user.rebind.ClassSourceFileComposerFactory) GWT(com.google.gwt.core.client.GWT) ClientBundleWithLookup(com.google.gwt.resources.client.ClientBundleWithLookup) ImageResource(com.google.gwt.resources.client.ImageResource) Resource(com.google.gwt.dev.resource.Resource) TextResource(com.google.gwt.resources.client.TextResource) DataResource(com.google.gwt.resources.client.DataResource) NotFoundException(com.google.gwt.core.ext.typeinfo.NotFoundException) DataResource(com.google.gwt.resources.client.DataResource) SourceWriter(com.google.gwt.user.rebind.SourceWriter) ResourcePrototype(com.google.gwt.resources.client.ResourcePrototype) JClassType(com.google.gwt.core.ext.typeinfo.JClassType) ImageResource(com.google.gwt.resources.client.ImageResource) TypeOracle(com.google.gwt.core.ext.typeinfo.TypeOracle) UnableToCompleteException(com.google.gwt.core.ext.UnableToCompleteException) File(java.io.File) HashSet(java.util.HashSet) PrintWriter(java.io.PrintWriter)

Aggregations

JClassType (com.google.gwt.core.ext.typeinfo.JClassType)14 UnableToCompleteException (com.google.gwt.core.ext.UnableToCompleteException)7 TypeOracle (com.google.gwt.core.ext.typeinfo.TypeOracle)6 ClassSourceFileComposerFactory (com.google.gwt.user.rebind.ClassSourceFileComposerFactory)4 SourceWriter (com.google.gwt.user.rebind.SourceWriter)4 PrintWriter (java.io.PrintWriter)4 GWT (com.google.gwt.core.client.GWT)3 ArrayList (java.util.ArrayList)3 JField (com.google.gwt.core.ext.typeinfo.JField)2 JType (com.google.gwt.core.ext.typeinfo.JType)2 NotFoundException (com.google.gwt.core.ext.typeinfo.NotFoundException)2 Extension (org.eclipse.che.ide.api.extension.Extension)2 BadPropertyValueException (com.google.gwt.core.ext.BadPropertyValueException)1 ConfigurationProperty (com.google.gwt.core.ext.ConfigurationProperty)1 PropertyOracle (com.google.gwt.core.ext.PropertyOracle)1 JConstructor (com.google.gwt.core.ext.typeinfo.JConstructor)1 JMethod (com.google.gwt.core.ext.typeinfo.JMethod)1 Resource (com.google.gwt.dev.resource.Resource)1 ClientBundleWithLookup (com.google.gwt.resources.client.ClientBundleWithLookup)1 DataResource (com.google.gwt.resources.client.DataResource)1