Example usage for com.google.gwt.core.ext.typeinfo JPackage getName

List of usage examples for com.google.gwt.core.ext.typeinfo JPackage getName

Introduction

In this page you can find the example usage for com.google.gwt.core.ext.typeinfo JPackage getName.

Prototype

String getName();

Source Link

Document

Returns the name of the package.

Usage

From source file:com.google.code.gwt.database.rebind.SqlProxyCreator.java

License:Apache License

/**
 * Returns a SourceWriter which is prepared to write the class' body.
 * //w  w w .  j  a  va2 s .  c  om
 * @throws UnableToCompleteException
 */
private SourceWriter getSourceWriter() throws UnableToCompleteException {
    JPackage serviceIntfPkg = dataService.getPackage();
    String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName();
    PrintWriter printWriter = context.tryCreate(logger, packageName, getProxySimpleName());

    if (printWriter == null) {
        // Proxy already exists.
        return null;
    }

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            getProxySimpleName());

    for (String imp : IMPORTED_CLASSES) {
        composerFactory.addImport(imp);
    }

    JClassType superType = dataService.getImplementedInterfaces()[0];
    if (GeneratorUtils.isType(superType, DataService.class)) {
        composerFactory.setSuperclass(genUtils.getClassName(BaseDataService.class));
        isBaseType = true;
    } else {
        isBaseType = false;
        // the dataService inherits from a different interface.
        // Create another SqlProxyCreator to take care of that interface:
        SqlProxyCreator superClassCreator = new SqlProxyCreator(logger.branch(TreeLogger.DEBUG,
                "Generating proxy methods for superclass '" + superType.getQualifiedSourceName() + "'..."),
                context, superType);
        String className = superClassCreator.create();
        composerFactory.setSuperclass(genUtils.shortenName(className));
    }
    composerFactory.addImplementedInterface(genUtils.getClassName(dataService));

    composerFactory.setJavaDocCommentForClass("Generated by {@link " + genUtils.getClassName(getClass()) + "}");

    return composerFactory.createSourceWriter(context, printWriter);
}

From source file:com.google.gwt.testing.easygwtmock.rebind.MocksControlGenerator.java

License:Apache License

/**
 * Generates the concrete MocksControl implementation of the {@code typeName} interface and 
 * delegates generation of mock classes to
 * {@link com.google.gwt.testing.easygwtmock.rebind.MocksGenerator}
 *//*w w  w.j  a  v  a2s. c  o  m*/
@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {

    TypeOracle typeOracle = context.getTypeOracle();
    JClassType mockControlInterface = typeOracle.findType(typeName);

    if (mockControlInterface == null) {
        logger.log(TreeLogger.ERROR, "Unable to find metadata for type '" + typeName + "'", null);
        throw new UnableToCompleteException();
    }

    if (mockControlInterface.isInterface() == null) {
        logger.log(TreeLogger.ERROR, mockControlInterface.getQualifiedSourceName() + " is not an interface",
                null);
        throw new UnableToCompleteException();
    }

    JPackage interfacePackage = mockControlInterface.getPackage();
    String packageName = interfacePackage == null ? "" : interfacePackage.getName();
    String newClassName = mockControlInterface.getName().replace(".", "_") + "Impl";
    String fullNewClassName = packageName + "." + newClassName;

    PrintWriter printWriter = context.tryCreate(logger, packageName, newClassName);
    if (printWriter == null) {
        // We generated this before.
        return fullNewClassName;
    }

    ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, newClassName);
    composer.setSuperclass(MocksControlBase.class.getCanonicalName());
    composer.addImplementedInterface(mockControlInterface.getQualifiedSourceName());

    SourceWriter writer = composer.createSourceWriter(context, printWriter);
    writer.println();

    MocksGenerator mocksGenerator = new MocksGenerator(context, logger);
    JClassType markerInterface = typeOracle.findType(MocksControl.class.getCanonicalName());

    Set<String> reservedNames = getMethodNames(composer.getSuperclassName(), logger, typeOracle);

    // Report one error per method in the control interface. They are likely to be independent,
    // so it's a bit nicer for the user.
    boolean failed = false;
    for (JMethod method : mockControlInterface.getOverridableMethods()) {
        if (method.getEnclosingType().equals(markerInterface)) {
            // Method is implemented in MocksControlBase
            continue;
        }

        if (reservedNames.contains(method.getName())) {
            // Method name is already used in base class and method should not be overwritten!
            logger.log(TreeLogger.ERROR,
                    method.getName()
                            + " is a reserved name. Do not use it in the extended MocksControl interface",
                    null);
            failed = true;
            continue;
        }

        JClassType typeToMock = method.getReturnType().isClassOrInterface();

        if (typeToMock == null) {
            logger.log(TreeLogger.ERROR,
                    method.getReturnType().getQualifiedSourceName() + " is not an interface or a class", null);
            failed = true;
            continue;
        }

        if (typeToMock.isInterface() != null) {

            if (method.getParameterTypes().length != 0) {
                String methodName = mockControlInterface.getSimpleSourceName() + "." + method.getName();
                logger.log(TreeLogger.ERROR,
                        "This method should not have parameters because it creates Ua mock of an interface: "
                                + methodName,
                        null);
                failed = true;
                continue;
            }

        } else {

            JConstructor constructorToCall = typeToMock.findConstructor(method.getParameterTypes());
            if (constructorToCall == null) {
                String methodName = mockControlInterface.getSimpleSourceName() + "." + method.getName();
                logger.log(TreeLogger.ERROR, "Cannot find matching constructor to call for " + methodName,
                        null);
                failed = true;
                continue;
            }
        }

        String mockClassName = mocksGenerator.generateMock(typeToMock);

        printFactoryMethod(writer, method, mockControlInterface, mockClassName);
    }

    if (failed) {
        throw new UnableToCompleteException();
    }

    writer.commit(logger);
    return fullNewClassName;
}

From source file:com.google.gwt.testing.easygwtmock.rebind.MocksGenerator.java

License:Apache License

/**
 * Generates a mock class for {@code interfaceToMock}.
 *///from w w w.ja va2  s  .com
String generateMock(JClassType typeToMock) throws UnableToCompleteException {

    JPackage interfacePackage = typeToMock.getPackage();
    String packageName = interfacePackage == null ? "" : interfacePackage.getName();
    String newClassName = typeToMock.getName().replace(".", "_") + "Mock";

    // GenericType<Integer> has to generate a different mock implementation than
    // GenericType<String>, that's what we check and do here
    if (typeToMock.isParameterized() != null) {
        StringBuilder typeList = new StringBuilder();
        for (JClassType genericArg : typeToMock.isParameterized().getTypeArgs()) {
            typeList.append(genericArg.getParameterizedQualifiedSourceName());
        }
        newClassName += Integer.toHexString(typeList.toString().hashCode());
    }

    String fullNewClassName = packageName + "." + newClassName;

    PrintWriter printWriter = this.context.tryCreate(this.logger, packageName, newClassName);
    if (printWriter == null) {
        // We generated this before.
        return fullNewClassName;
    }

    ClassSourceFileComposerFactory composer = new ClassSourceFileComposerFactory(packageName, newClassName);
    composer.addImport(MocksControlBase.class.getCanonicalName());
    composer.addImport(Method.class.getCanonicalName());
    composer.addImport(Call.class.getCanonicalName());
    composer.addImport(UndeclaredThrowableException.class.getCanonicalName());
    if (typeToMock.isInterface() != null) {
        composer.addImplementedInterface(typeToMock.getParameterizedQualifiedSourceName());
    } else {
        composer.setSuperclass(typeToMock.getParameterizedQualifiedSourceName());
    }

    SourceWriter sourceWriter = composer.createSourceWriter(this.context, printWriter);
    sourceWriter.println();

    JMethod[] overridableMethods = typeToMock.getOverridableMethods();

    List<JMethod> methodsToMock = new ArrayList<JMethod>();
    Set<String> needsDefaultImplementation = new HashSet<String>();
    for (JMethod method : overridableMethods) {
        if (isSpecialMethodOfObject(method)) {
            needsDefaultImplementation.add(method.getName());
        } else if (method.getParameterTypes().length == 0 && method.getName().equals("getClass")) {
            // ignore, Bug 5026788 in GWT
        } else {
            methodsToMock.add(method);
        }
    }

    printFields(sourceWriter, methodsToMock);
    printConstructors(sourceWriter, newClassName, typeToMock.getConstructors());
    printMockMethods(sourceWriter, methodsToMock, newClassName);
    printDefaultMethods(sourceWriter, typeToMock, needsDefaultImplementation);

    sourceWriter.commit(this.logger);

    return fullNewClassName;
}

From source file:com.gwtplatform.mvp.rebind.ProxyGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext ctx, String requestedClass)
        throws UnableToCompleteException {
    // Initialize dependencies
    TypeOracle oracle = ctx.getTypeOracle();
    classCollection = new ClassCollection(oracle);
    ginjectorInspector = new GinjectorInspector(classCollection, ctx, logger);
    presenterInspector = new PresenterInspector(oracle, logger, classCollection, ginjectorInspector);
    proxyOutputterFactory = new ProxyOutputterFactory(oracle, logger, classCollection, ginjectorInspector,
            presenterInspector);/*from ww  w .  j av a 2s  .  c om*/

    // Find the requested class
    JClassType proxyInterface = oracle.findType(requestedClass);

    if (proxyInterface == null) {
        logger.log(TreeLogger.ERROR, "Unable to find metadata for type '" + requestedClass + "'", null);

        throw new UnableToCompleteException();
    }

    // If it's not an interface it's a custom user-made proxy class. Don't use generator.
    if (proxyInterface.isInterface() == null) {
        return null;
    }

    ginjectorInspector.init();
    if (!presenterInspector.init(proxyInterface)) {
        return null;
    }

    // Find the package, build the generated class name.
    JPackage interfacePackage = proxyInterface.getPackage();
    String packageName = interfacePackage == null ? "" : interfacePackage.getName();
    String implClassName = presenterInspector.getPresenterClassName() + proxyInterface.getSimpleSourceName()
            + "Impl";
    String generatedClassName = packageName + "." + implClassName;

    // Create the printWriter
    PrintWriter printWriter = ctx.tryCreate(logger, packageName, implClassName);
    if (printWriter == null) {
        // We've already created it, so nothing to do
        return generatedClassName;
    }

    try {
        ProxyOutputter proxyOutputter = proxyOutputterFactory.create(proxyInterface);

        // Start composing the class
        ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
                implClassName);
        proxyOutputter.initComposerFactory(composerFactory);

        // Get a source writer
        SourceWriter writer = composerFactory.createSourceWriter(ctx, printWriter);

        proxyOutputter.writeFields(writer);
        proxyOutputter.writeInnerClasses(writer);
        proxyOutputter.writeConstructor(writer, implClassName, true);
        proxyOutputter.writeMethods(writer);

        writer.commit(logger);

        return generatedClassName;
    } finally {
        printWriter.close();
    }
}

From source file:de.csenk.gwt.ws.rebind.filter.serialization.GWTSerializerGenerator.java

License:Open Source License

/**
 * @param logger/*w  ww.  jav  a2s . co  m*/
 * @param ctx
 * @param serializerInterface
 * @return
 */
private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx, JClassType serializerInterface) {
    JPackage serializerIntfPkg = serializerInterface.getPackage();
    String packageName = serializerIntfPkg == null ? "" : serializerIntfPkg.getName();

    PrintWriter printWriter = ctx.tryCreate(logger, packageName,
            getImplementationSimpleName(serializerInterface));
    if (printWriter == null) {
        return null;
    }

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            getImplementationSimpleName(serializerInterface));

    String[] imports = new String[] { ClientGWTSerializer.class.getCanonicalName(),
            GWT.class.getCanonicalName() };
    for (String imp : imports) {
        composerFactory.addImport(imp);
    }

    composerFactory.setSuperclass(ClientGWTSerializer.class.getSimpleName());
    composerFactory.addImplementedInterface(serializerInterface.getErasedType().getQualifiedSourceName());

    return composerFactory.createSourceWriter(ctx, printWriter);
}

From source file:de.knightsoftnet.validators.rebind.AbstractCreator.java

License:Apache License

protected final String getPackage() {
    final JPackage serviceIntfPkg = this.validatorType.getPackage();
    return serviceIntfPkg == null ? "" : serviceIntfPkg.getName();
}

From source file:io.reinert.requestor.rebind.JsonAutoBeanGenerator.java

License:Apache License

private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx, JClassType intfType) {
    JPackage serviceIntfPkg = intfType.getPackage();
    String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName();
    PrintWriter printWriter = ctx.tryCreate(logger, packageName, getTypeSimpleName());
    if (printWriter == null) {
        return null;
    }//  w w w .j a v a 2s  .c  o m

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            getTypeSimpleName());

    String[] imports = new String[] {
            // java.util
            ArrayList.class.getCanonicalName(), Collection.class.getCanonicalName(),
            List.class.getCanonicalName(), Iterator.class.getCanonicalName(), Set.class.getCanonicalName(),
            // com.google.gwt.core.client
            GWT.class.getCanonicalName(),
            // com.google.web.bindery.autobean.shared
            AutoBean.class.getCanonicalName(), AutoBeanCodex.class.getCanonicalName(),
            AutoBeanFactory.class.getCanonicalName(), AutoBeanUtils.class.getCanonicalName(),
            // io.reinert.requestor.serialization
            DeserializationContext.class.getCanonicalName(), Deserializer.class.getCanonicalName(),
            HasImpl.class.getCanonicalName(), Serdes.class.getCanonicalName(),
            Serializer.class.getCanonicalName(), SerializationContext.class.getCanonicalName(),
            UnableToDeserializeException.class.getName(), UnableToSerializeException.class.getName(),
            // io.reinert.requestor.serialization.json
            JsonObjectSerdes.class.getCanonicalName(), JsonRecordReader.class.getCanonicalName(),
            JsonRecordWriter.class.getCanonicalName(), };

    for (String imp : imports) {
        composerFactory.addImport(imp);
    }

    composerFactory.addImplementedInterface(intfType.getErasedType().getQualifiedSourceName());

    return composerFactory.createSourceWriter(ctx, printWriter);
}

From source file:io.reinert.requestor.rebind.JsonGwtJacksonGenerator.java

License:Apache License

private SourceWriter getSourceWriter(TreeLogger logger, GeneratorContext ctx, JClassType intfType) {
    JPackage serviceIntfPkg = intfType.getPackage();
    String packageName = serviceIntfPkg == null ? "" : serviceIntfPkg.getName();
    PrintWriter printWriter = ctx.tryCreate(logger, packageName, getTypeSimpleName());
    if (printWriter == null) {
        return null;
    }//from www  . j  a  v a  2 s  .  c om

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            getTypeSimpleName());

    String[] imports = new String[] {
            // java
            ArrayList.class.getCanonicalName(), Collection.class.getCanonicalName(),
            HashSet.class.getCanonicalName(), Iterator.class.getCanonicalName(),
            LinkedHashSet.class.getCanonicalName(), LinkedList.class.getCanonicalName(),
            List.class.getCanonicalName(), Set.class.getCanonicalName(), TreeSet.class.getCanonicalName(),
            // com.github.nmorel.gwtjackson
            ObjectMapper.class.getCanonicalName(), ObjectReader.class.getCanonicalName(),
            ObjectWriter.class.getCanonicalName(),
            // com.google.gwt
            GWT.class.getCanonicalName(),
            // io.reinert.requestor
            DeserializationContext.class.getCanonicalName(), Deserializer.class.getCanonicalName(),
            JsonObjectSerdes.class.getCanonicalName(), JsonRecordReader.class.getCanonicalName(),
            JsonRecordWriter.class.getCanonicalName(), UnableToDeserializeException.class.getName(),
            UnableToSerializeException.class.getName(), Serdes.class.getCanonicalName(),
            Serializer.class.getCanonicalName(), SerializationContext.class.getCanonicalName() };

    for (String imp : imports) {
        composerFactory.addImport(imp);
    }

    composerFactory.addImplementedInterface(intfType.getErasedType().getQualifiedSourceName());

    return composerFactory.createSourceWriter(ctx, printWriter);
}

From source file:org.cruxframework.crux.core.rebind.AbstractInterfaceWrapperProxyCreator.java

License:Apache License

/**
 * @return a sourceWriter for the proxy class
 *///from  www. j a  v a 2 s . co  m
@Override
protected SourcePrinter getSourcePrinter() {
    JPackage pkg = baseIntf.getPackage();
    String packageName = pkg == null ? "" : pkg.getName();
    PrintWriter printWriter = context.tryCreate(logger, packageName, getProxySimpleName());

    if (printWriter == null) {
        return null;
    }

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            getProxySimpleName());

    String[] imports = getImports();
    for (String imp : imports) {
        composerFactory.addImport(imp);
    }

    composerFactory.addImplementedInterface(baseIntf.getQualifiedSourceName());

    return new SourcePrinter(composerFactory.createSourceWriter(context, printWriter), logger);
}

From source file:org.cruxframework.crux.core.rebind.controller.ControllerProxyCreator.java

License:Apache License

/**
 * @return a sourceWriter for the proxy class
 *///ww w  . j  a  v a  2  s . c  o  m
protected SourcePrinter getSourcePrinter() {
    JPackage pkg = controllerClass.getPackage();
    String packageName = pkg == null ? "" : pkg.getName();
    PrintWriter printWriter = context.tryCreate(logger, packageName, getProxySimpleName());

    if (printWriter == null) {
        return null;
    }

    ClassSourceFileComposerFactory composerFactory = new ClassSourceFileComposerFactory(packageName,
            getProxySimpleName());

    String[] imports = getImports();
    for (String imp : imports) {
        composerFactory.addImport(imp);
    }

    composerFactory.setSuperclass(controllerClass.getQualifiedSourceName());
    composerFactory.addImplementedInterface(ViewAware.class.getCanonicalName());

    return new SourcePrinter(composerFactory.createSourceWriter(context, printWriter), logger);
}