Example usage for com.google.gwt.core.ext.typeinfo JMethod getReadableDeclaration

List of usage examples for com.google.gwt.core.ext.typeinfo JMethod getReadableDeclaration

Introduction

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

Prototype

String getReadableDeclaration(boolean noAccess, boolean noNative, boolean noStatic, boolean noFinal,
            boolean noAbstract);

Source Link

Usage

From source file:com.colinalworth.gwt.websockets.rebind.ServerCreator.java

License:Apache License

/**
 * Writes out the method to use to invoke a server call. Mostly derived from RPC's way of building proxy methods
 *
 * @param logger/*w ww.ja  v  a2 s  . com*/
 * @param context
 * @param sw
 * @param m
 */
private void printServerMethodBody(TreeLogger logger, GeneratorContext context, SourceWriter sw, JMethod m) {
    sw.println("%1$s {", m.getReadableDeclaration(false, true, true, true, true));
    sw.indent();

    sw.print("__sendMessage(\"%1$s\"", m.getName());
    StringBuilder sb = new StringBuilder();
    String callback = "null";
    JParameter[] parameters = m.getParameters();
    for (int i = 0; i < parameters.length; i++) {
        JParameter param = parameters[i];
        if (i + 1 == parameters.length && param.getType().isInterface() != null
                && param.getType().isInterface().getQualifiedSourceName().equals(Callback.class.getName())) {
            callback = param.getName();
        } else {
            sb.append(",\n").append(param.getName());
        }
    }
    sw.print(",");
    sw.println(callback);
    sw.print(sb.toString());
    sw.println(");");

    sw.outdent();
    sw.println("}");
}

From source file:com.eleven.rebind.SkinBundleGenerator.java

License:Apache License

private void generateImageMethod(final SkinBundleBuilder compositeImage, final SourceWriter sw,
        final JMethod method, final String imgResName) {

    String decl = method.getReadableDeclaration(false, true, true, true, true);

    {//from   ww  w .ja v a 2 s. co  m
        sw.indent();

        // Create a singleton that this method can return. There is no need
        // to
        // create a new instance every time this method is called, since
        // ClippedImagePrototype is immutable

        SkinBundleBuilder.ImageRect imageRect = compositeImage.getMapping(imgResName);
        String singletonName = method.getName() + "_SINGLETON";

        sw.print("private static final ClippedImagePrototype ");
        sw.print(singletonName);
        sw.print(" = new ClippedImagePrototype(IMAGE_BUNDLE_URL, ");
        sw.print(Integer.toString(imageRect.getLeft()));
        sw.print(", ");
        sw.print(Integer.toString(imageRect.getTop()));
        sw.print(", ");
        sw.print(Integer.toString(imageRect.getWidth()));
        sw.print(", ");
        sw.print(Integer.toString(imageRect.getHeight()));
        sw.println(");");

        sw.print(decl);
        sw.println(" {");
        sw.indent();
        sw.print("return ");
        sw.print(singletonName);
        sw.println(";");
        sw.outdent();

        sw.println("}");
        sw.outdent();
    }
}

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

License:Apache License

private void printFactoryMethod(SourceWriter out, JMethod methodToImplement, JClassType mockControlInterface,
        String classToCreate) {//from w ww.j a  v a2  s  .  c  o  m
    out.println("%s {", methodToImplement.getReadableDeclaration(false, false, false, false, true));
    out.indent();
    if (isNiceMock(methodToImplement, mockControlInterface)) {
        out.print("return this.setToNice(new %s(", classToCreate);
        printMatchingParameters(out, methodToImplement);
        out.println(").__mockInit(this));");
    } else {
        out.print("return new %s(", classToCreate);
        printMatchingParameters(out, methodToImplement);
        out.println(").__mockInit(this);");
    }
    out.outdent();
    out.println("}");
}

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

License:Apache License

/**
 * Generates and prints the actual mock versions of the methods.
 *//* w w  w .j  a  va  2 s.c om*/
private void printMockMethods(SourceWriter sourceWriter, List<JMethod> methodsToMock, String newClassName) {
    int methodNo = 0;
    for (JMethod method : methodsToMock) {
        sourceWriter.println("%s {", method.getReadableDeclaration(false, true, false, false, true));
        sourceWriter.indent();
        printMockMethodBody(sourceWriter, method, methodNo++, newClassName);
        sourceWriter.outdent();
        sourceWriter.println("}");
        sourceWriter.println();
    }
}

From source file:com.google.speedtracer.generators.BuildInfoGenerator.java

License:Apache License

private String emitImplClass(TreeLogger logger, GeneratorContext context, JClassType typeClass,
        JMethod revisionMethod, JMethod timeMethod) {
    final int revision = getBuildRevision();
    final String subclassName = typeClass.getSimpleSourceName() + "_r" + revision;
    final String packageName = typeClass.getPackage().getName();
    final ClassSourceFileComposerFactory f = new ClassSourceFileComposerFactory(packageName, subclassName);
    f.addImplementedInterface(typeClass.getQualifiedSourceName());
    final PrintWriter pw = context.tryCreate(logger, packageName, subclassName);
    if (pw != null) {
        final SourceWriter sw = f.createSourceWriter(context, pw);

        sw.print(revisionMethod.getReadableDeclaration(false, true, true, true, true));
        sw.println("{ return " + revision + "; }");

        sw.print(timeMethod.getReadableDeclaration(false, true, true, true, true));
        sw.println("{ return new java.util.Date(" + System.currentTimeMillis() + "L); }");
        sw.commit(logger);//from ww  w  .  j a  va2s.c o  m
    }
    return f.getCreatedClassName();
}

From source file:com.google.web.bindery.requestfactory.gwt.rebind.RequestFactoryGenerator.java

License:Apache License

private void writeContextImplementations() {
    for (ContextMethod method : model.getMethods()) {
        PrintWriter pw = context.tryCreate(logger, method.getPackageName(), method.getSimpleSourceName());
        if (pw == null) {
            // Already generated
            continue;
        }//from  ww w  .j a  v a 2s . c  o m

        ClassSourceFileComposerFactory factory = new ClassSourceFileComposerFactory(method.getPackageName(),
                method.getSimpleSourceName());
        factory.setSuperclass(AbstractRequestContext.class.getCanonicalName());
        factory.addImplementedInterface(method.getImplementedInterfaceQualifiedSourceName());
        SourceWriter sw = factory.createSourceWriter(context, pw);

        // Constructor that accepts the parent RequestFactory
        sw.println("public %s(%s requestFactory) {super(requestFactory, %s.%s);}", method.getSimpleSourceName(),
                AbstractRequestFactory.class.getCanonicalName(), Dialect.class.getCanonicalName(),
                method.getDialect().name());

        Set<EntityProxyModel> models = findReferencedEntities(method);
        Set<JEnumType> extraEnumTypes = findExtraEnums(method);
        writeAutoBeanFactory(sw, models, extraEnumTypes);

        // Write each Request method
        for (RequestMethod request : method.getRequestMethods()) {
            JMethod jmethod = request.getDeclarationMethod();
            String operation = request.getOperation();

            // foo, bar, baz
            StringBuilder parameterArray = new StringBuilder();
            // final Foo foo, final Bar bar, final Baz baz
            StringBuilder parameterDeclaration = new StringBuilder();
            // <P extends Blah>
            StringBuilder typeParameterDeclaration = new StringBuilder();

            if (request.isInstance()) {
                // Leave a spot for the using() method to fill in later
                parameterArray.append(",null");
            }
            for (JTypeParameter param : jmethod.getTypeParameters()) {
                typeParameterDeclaration.append(",").append(param.getQualifiedSourceName());
            }
            for (JParameter param : jmethod.getParameters()) {
                parameterArray.append(",").append(param.getName());
                parameterDeclaration.append(",final ")
                        .append(param.getType().getParameterizedQualifiedSourceName()).append(" ")
                        .append(param.getName());
            }
            if (parameterArray.length() > 0) {
                parameterArray.deleteCharAt(0);
            }
            if (parameterDeclaration.length() > 0) {
                parameterDeclaration.deleteCharAt(0);
            }
            if (typeParameterDeclaration.length() > 0) {
                typeParameterDeclaration.deleteCharAt(0).insert(0, "<").append(">");
            }

            // public Request<Foo> doFoo(final Foo foo) {
            sw.println("public %s %s %s(%s) {", typeParameterDeclaration,
                    jmethod.getReturnType().getParameterizedQualifiedSourceName(), jmethod.getName(),
                    parameterDeclaration);
            sw.indent();
            // The implements clause covers InstanceRequest
            // class X extends AbstractRequest<Return> implements Request<Return> {
            sw.println("class X extends %s<%s> implements %s {", AbstractRequest.class.getCanonicalName(),
                    request.getDataType().getParameterizedQualifiedSourceName(),
                    jmethod.getReturnType().getParameterizedQualifiedSourceName());
            sw.indent();

            // public X() { super(FooRequestContext.this); }
            sw.println("public X() { super(%s.this);}", method.getSimpleSourceName());

            // This could also be gotten rid of by having only Request /
            // InstanceRequest
            sw.println("@Override public X with(String... paths) {super.with(paths); return this;}");

            // makeRequestData()
            sw.println("@Override protected %s makeRequestData() {", RequestData.class.getCanonicalName());
            String elementType = request.isCollectionType()
                    ? request.getCollectionElementType().getQualifiedSourceName() + ".class"
                    : "null";
            String returnTypeBaseQualifiedName = ModelUtils.ensureBaseType(request.getDataType())
                    .getQualifiedSourceName();
            // return new RequestData("ABC123", {parameters}, propertyRefs,
            // List.class, FooProxy.class);
            sw.indentln("return new %s(\"%s\", new Object[] {%s}, propertyRefs, %s.class, %s);",
                    RequestData.class.getCanonicalName(), operation, parameterArray,
                    returnTypeBaseQualifiedName, elementType);
            sw.println("}");

            /*
             * Only support extra properties in JSON-RPC payloads. Could add this to
             * standard requests to provide out-of-band data.
             */
            if (method.getDialect().equals(Dialect.JSON_RPC)) {
                for (JMethod setter : request.getExtraSetters()) {
                    PropertyName propertyNameAnnotation = setter.getAnnotation(PropertyName.class);
                    String propertyName = propertyNameAnnotation == null ? JBeanMethod.SET.inferName(setter)
                            : propertyNameAnnotation.value();
                    String maybeReturn = JBeanMethod.SET_BUILDER.matches(setter) ? "return this;" : "";
                    sw.println("%s { getRequestData().setNamedParameter(\"%s\", %s); %s}",
                            setter.getReadableDeclaration(false, false, false, false, true), propertyName,
                            setter.getParameters()[0].getName(), maybeReturn);
                }
            }

            // end class X{}
            sw.outdent();
            sw.println("}");

            // Instantiate, enqueue, and return
            sw.println("X x = new X();");

            if (request.getApiVersion() != null) {
                sw.println("x.getRequestData().setApiVersion(\"%s\");",
                        Generator.escape(request.getApiVersion()));
            }

            // JSON-RPC payloads send their parameters in a by-name fashion
            if (method.getDialect().equals(Dialect.JSON_RPC)) {
                for (JParameter param : jmethod.getParameters()) {
                    PropertyName annotation = param.getAnnotation(PropertyName.class);
                    String propertyName = annotation == null ? param.getName() : annotation.value();
                    boolean isContent = param.isAnnotationPresent(JsonRpcContent.class);
                    if (isContent) {
                        sw.println("x.getRequestData().setRequestContent(%s);", param.getName());
                    } else {
                        sw.println("x.getRequestData().setNamedParameter(\"%s\", %s);", propertyName,
                                param.getName());
                    }
                }
            }

            // See comment in AbstractRequest.using(EntityProxy)
            if (!request.isInstance()) {
                sw.println("addInvocation(x);");
            }
            sw.println("return x;");
            sw.outdent();
            sw.println("}");
        }

        sw.commit(logger);
    }
}

From source file:com.guit.rebind.binder.GuitBinderGenerator.java

License:Apache License

private void printViewFieldBindings(SourceWriter writer, JClassType presenterType, String viewTypeName,
        HashMap<String, JType> validBindingFieldsType, ArrayList<JField> fields)
        throws UnableToCompleteException {

    Set<String> validBindingFields = validBindingFieldsType.keySet();

    JClassType viewAccesorType = getType(ViewAccesor.class.getCanonicalName());

    ArrayList<JField> superFields = new ArrayList<JField>();
    collectAllFields(presenterType.getSuperclass(), superFields);

    JClassType elementDomType = getType(com.guit.client.dom.Element.class.getCanonicalName());

    for (JField f : fields) {
        if (f.isAnnotationPresent(ViewField.class)) {
            // Check for repetided fields
            if (f.getType().isClassOrInterface().isAssignableTo(elementDomType)) {
                if (superFields.contains(f)) {

                }//  w  ww . j a  va  2  s  .c o  m
            }

            String name = f.getName();
            ViewField viewField = f.getAnnotation(ViewField.class);
            String viewName = viewField.name();
            if (viewName.isEmpty()) {
                viewName = name;
            }
            if (!validBindingFields.contains(viewName)) {
                error("The field '%s' do not exists. Found: %s.%s", viewName,
                        presenterType.getQualifiedSourceName(), name);
            }

            JClassType type = f.getType().isClassOrInterface();
            // if (type.isInterface() == null && !viewField.provided()) {
            // error("A ViewField must be an interface. Found: %s.%s", presenterType
            // .getQualifiedSourceName(), name);
            // }

            if (type.isAssignableTo(viewAccesorType)) {
                writer.println("{");
                writer.indent();
                if (!type.isAnnotationPresent(Implementation.class)) {
                    writer.println(type.getQualifiedSourceName() + " accesor = "
                            + GinOracle.getProvidedInstance(type.getQualifiedSourceName()) + ".get();");
                } else {

                    JClassType implementation = getType(
                            type.getAnnotation(Implementation.class).value().getCanonicalName());

                    // If they are parameterized look for the base type
                    JParameterizedType implementationParameterized = implementation.isParameterized();
                    if (implementationParameterized != null) {
                        implementation = implementationParameterized.getBaseType();
                    }
                    JParameterizedType typeParameterized = type.isParameterized();
                    if (typeParameterized != null) {
                        type = typeParameterized.getBaseType();
                    }

                    // Verify that they are assignable
                    if (!implementation.isAssignableTo(type)) {
                        error("An implementation of a ViewAccesor must implement the ViewAccesor interface. Found: %s",
                                implementation.getQualifiedSourceName());
                    }
                    writer.println(type.getQualifiedSourceName() + " accesor = new "
                            + implementation.getQualifiedSourceName() + "();");
                }

                writer.println("accesor.setTarget(view." + viewName + ");");
                writer.println("presenter." + name + " = accesor;");
                writer.outdent();
                writer.print("}");
                writer.println();
            } else if (type == null
                    || type.isAssignableFrom(validBindingFieldsType.get(viewName).isClassOrInterface())
                    || type.getQualifiedSourceName().startsWith("elemental.")) {
                String qualifiedSourceName = f.getType().getQualifiedSourceName();
                writer.println("presenter." + name + " = (" + qualifiedSourceName + ") view." + viewName + ";");
                writer.println();
            } else {
                // Interface emulation (without exceptions)
                writer.println(
                        "presenter." + name + " = new " + type.getParameterizedQualifiedSourceName() + "() {");
                writer.indent();

                ArrayList<JMethod> methods = new ArrayList<JMethod>();
                findAllMethods(type, methods);
                for (JMethod m : methods) {
                    writer.print(m.getReadableDeclaration(false, true, true, true, true));
                    writer.println("{");
                    writer.indent();

                    // Find the parameters
                    StringBuilder callParameters = new StringBuilder();
                    for (JParameter p : m.getParameters()) {
                        if (callParameters.length() > 0) {
                            callParameters.append(", ");
                        }
                        if (p.isAnnotationPresent(ImplicitCast.class)) {
                            callParameters.append("(");
                            callParameters
                                    .append(p.getAnnotation(ImplicitCast.class).value().getCanonicalName());
                            callParameters.append(") ");
                        }
                        callParameters.append(p.getName());
                    }

                    JType returnType = m.getReturnType();
                    if (!returnType.equals(JPrimitiveType.VOID)) {
                        writer.print("return ");

                        // Implicit cast
                        writer.print("(" + returnType.getParameterizedQualifiedSourceName() + ")");
                    }

                    writer.indent();
                    writer.println(createdClassName + ".this.view." + viewName + "." + m.getName() + "("
                            + callParameters.toString() + ");");
                    writer.outdent();

                    writer.outdent();
                    writer.println("}");
                    writer.println();
                }

                // Get .equals working on emulated interfaces for
                // event.getSource() comparations
                writer.println("@Override");
                writer.println("public boolean equals(Object obj) {");
                writer.indent();
                writer.println("return view." + viewName + ".equals(obj);");
                writer.outdent();
                writer.println("}");
                writer.println();

                writer.outdent();
                writer.println("};");
            }
        }
    }
}

From source file:com.sencha.gxt.core.rebind.BindingPropertyGenerator.java

License:sencha.com license

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {
    TypeOracle oracle = context.getTypeOracle();

    JClassType toGenerate = oracle.findType(typeName).isInterface();
    if (toGenerate == null) {
        logger.log(Type.ERROR, typeName + " is not an interface");
        throw new UnableToCompleteException();
    }// www  .j a  va 2s.  com

    PropertyName annotation = toGenerate.getAnnotation(PropertyName.class);
    if (annotation == null) {
        logger.log(Type.ERROR, "Cannot generate with a @PropertyName anntation on the type");
        throw new UnableToCompleteException();
    }

    String propertyName = annotation.value();
    SelectionProperty property;
    String value;
    try {
        property = context.getPropertyOracle().getSelectionProperty(logger, propertyName);
        value = property.getCurrentValue();
    } catch (BadPropertyValueException e) {
        logger.log(Type.ERROR, "Error occured loading property: ", e);
        throw new UnableToCompleteException();
    }
    String packageName = toGenerate.getPackage().getName();
    String simpleSourceName = toGenerate.getName().replace('.', '_') + "_" + value;
    PrintWriter pw = context.tryCreate(logger, packageName, simpleSourceName);
    if (pw == null) {
        return packageName + "." + simpleSourceName;
    }

    ClassSourceFileComposerFactory factory = new ClassSourceFileComposerFactory(packageName, simpleSourceName);
    factory.addImplementedInterface(typeName);
    SourceWriter sw = factory.createSourceWriter(context, pw);

    for (JMethod method : toGenerate.getMethods()) {
        if (method.getReturnType().isPrimitive() != JPrimitiveType.BOOLEAN && !method.getReturnType().isClass()
                .getQualifiedSourceName().equals(Name.getSourceNameForClass(Boolean.class))) {
            logger.log(Type.ERROR, "Methods must return boolean or Boolean");
            throw new UnableToCompleteException();
        }
        sw.println("%1$s {", method.getReadableDeclaration(false, true, true, true, true));

        PropertyValue val = method.getAnnotation(PropertyValue.class);
        if (val == null) {
            logger.log(Type.ERROR, "Method must have a @PropertyValue annotation");
            throw new UnableToCompleteException();
        }

        if (!property.getPossibleValues().contains(val.value()) && val.warn()) {
            logger.log(Type.WARN,
                    "Value '" + val
                            + "' is not present in the current set of possible values for selection property "
                            + propertyName);
        }
        sw.indentln("return %1$b;", val.value().equals(value));

        sw.println("}");
    }

    sw.commit(logger);

    return factory.getCreatedClassName();
}

From source file:fr.onevu.gwt.uibinder.rebind.UiBinderWriter.java

License:Apache License

private static String formatMethodError(JMethod eventMethod) {
    return "\"" + eventMethod.getReadableDeclaration(true, true, true, true, true) + "\"" + " of "
            + eventMethod.getEnclosingType().getQualifiedSourceName();
}

From source file:fr.onevu.gwt.uibinder.rebind.UiBinderWriter.java

License:Apache License

private void writeRendererEventMethods(IndentedWriter w, JMethod[] eventMethods, String rootField)
        throws UnableToCompleteException {
    for (JMethod jMethod : eventMethods) {
        JClassType eventTargetType = jMethod.getParameterTypes()[0].isClassOrInterface();
        String eventTargetSimpleName = eventTargetType.getSimpleSourceName();
        String dispatcherClassName = UI_RENDERER_DISPATCHER_PREFIX + eventTargetSimpleName;
        JMethod[] uiHandlerMethods = findUiHandlerMethods(eventTargetType);

        // public void onBrowserEvent(Foo f, NativeEvent event, Element parent, A
        // a, B b ...) {
        w.write("@Override");
        w.write("public %s {", jMethod.getReadableDeclaration(true, true, true, true, true));

        if (uiHandlerMethods.length != 0) {
            w.indent();/*from  w  w w  .  ja v a  2s.c o m*/
            // if (singletonUiRendererDispatcherForFoo == null) {
            w.write("if (singleton%s == null) {", dispatcherClassName);
            w.indent();
            // singletonUiRendererDispatcherForFoo = new
            // UiRendererDispatcherForFoo();
            w.write("singleton%s = new %s();", dispatcherClassName, dispatcherClassName);

            w.outdent();
            w.write("}");

            // singletonUiRendererDispatcherForFoo.fire(o, event, parent, a, b);
            StringBuffer sb = new StringBuffer();
            JParameter[] parameters = jMethod.getParameters();
            for (int i = 0; i < parameters.length; i++) {
                JParameter callParam = parameters[i];
                if (i != 0) {
                    sb.append(", ");
                }
                sb.append(callParam.getName());
            }
            w.write("singleton%s.fire(%s);", dispatcherClassName, sb.toString());
            w.outdent();
        }

        w.write("}");
        w.newline();

        if (uiHandlerMethods.length != 0) {
            // private static UiRendererDispatcherForFoo
            // singletonUiRendererDispatcherForFoo;
            w.write("private static %s singleton%s;", dispatcherClassName, dispatcherClassName);

            writeRendererDispatcher(w, dispatcherClassName, eventTargetType, rootField, uiHandlerMethods,
                    jMethod);
        }
    }
}