Example usage for com.google.gwt.dev.generator NameFactory addName

List of usage examples for com.google.gwt.dev.generator NameFactory addName

Introduction

In this page you can find the example usage for com.google.gwt.dev.generator NameFactory addName.

Prototype

public void addName(String name) 

Source Link

Document

Reserves a known name.

Usage

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

License:Apache License

/**
 * @param w//  ww  w .j ava  2s .  c o m
 * @param nameFactory
 * @param method
 */
protected void generateMethodParameters(SourcePrinter w, NameFactory nameFactory, JMethod method) {
    boolean needsComma = false;
    JParameter[] params = method.getParameters();
    for (int i = 0; i < params.length; ++i) {
        JParameter param = params[i];

        if (needsComma) {
            w.print(", ");
        } else {
            needsComma = true;
        }

        JType paramType = param.getType();
        paramType = paramType.getErasedType();

        w.print(paramType.getQualifiedSourceName());
        w.print(" ");

        String paramName = param.getName();
        nameFactory.addName(paramName);
        w.print(paramName);
    }
}

From source file:org.rapla.rest.gwtjsonrpc.rebind.ProxyCreator.java

License:Apache License

private void generateProxyMethod(@SuppressWarnings("unused") final TreeLogger logger, final JMethod method,
        final SourceWriter w) {
    final JParameter[] params = method.getParameters();
    final JType callback = method.getReturnType();// params[params.length - 1];
    JType resultType = callback;/* www.  java2 s.c o m*/
    //    final JClassType resultType =
    //        callback.isParameterized().getTypeArgs()[0];
    final String[] serializerFields = new String[params.length];
    String resultField = "";

    w.println();
    for (int i = 0; i < params.length /*- 1*/; i++) {
        final JType pType = params[i].getType();
        if (SerializerCreator.needsTypeParameter(pType)) {
            serializerFields[i] = "serializer_" + instanceField++;
            w.print("private static final ");
            if (pType.isArray() != null)
                w.print(serializerCreator.serializerFor(pType));
            else
                w.print(JsonSerializer.class.getName());
            w.print(" ");
            w.print(serializerFields[i]);
            w.print(" = ");
            serializerCreator.generateSerializerReference(pType, w, false);
            w.println(";");
        }
    }
    JClassType parameterizedResult = null;
    if (resultType.isParameterized() != null) {
        resultField = "serializer_" + instanceField++;
        w.print("private static final ");
        w.print(ResultDeserializer.class.getName());
        w.print(" ");
        w.print(resultField);
        w.print(" = ");
        parameterizedResult = resultType.isParameterized().getTypeArgs()[0];
        serializerCreator.generateSerializerReference(parameterizedResult, w, false);
        w.println(";");
    }

    w.print("public ");
    w.print(method.getReturnType().getQualifiedSourceName());
    w.print(" ");
    w.print(method.getName());
    w.print("(");
    boolean needsComma = false;
    final NameFactory nameFactory = new NameFactory();
    for (int i = 0; i < params.length; i++) {
        final JParameter param = params[i];

        if (needsComma) {
            w.print(", ");
        } else {
            needsComma = true;
        }

        final JType paramType = param.getType().getErasedType();
        w.print(paramType.getQualifiedSourceName());
        w.print(" ");

        nameFactory.addName(param.getName());
        w.print(param.getName());
    }

    w.println(") {");
    w.indent();

    if (returnsCallbackHandle(method)) {
        w.print("return new ");
        w.print(CallbackHandle.class.getName());
        w.print("(");
        if (SerializerCreator.needsTypeParameter(resultType)) {
            w.print(resultField);
        } else {
            deserializerCreator.generateDeserializerReference(resultType, w);
        }
        w.print(", " + "null" // callback.getName()
        );
        w.println(");");
        w.outdent();
        w.println("}");
        return;
    }

    //    final HostPageCache hpc = method.getAnnotation(HostPageCache.class);
    //    if (hpc != null) {
    //      final String objName = nameFactory.createName("cached");
    //      w.print("final JavaScriptObject " + objName + " = ");
    //      w.print(AbstractJsonProxy.class.getName());
    //      w.print(".");
    //      w.print(hpc.once() ? "hostPageCacheGetOnce" : "hostPageCacheGetMany");
    //      w.println("(\"" + hpc.name() + "\");");
    //      w.println("if (" + objName + " != null) {");
    //      w.indent();
    //      w.print(JsonUtil.class.getName());
    //      w.print(".invoke(");
    //      if (SerializerCreator.needsTypeParameter(resultType)) {
    //        w.print(resultField);
    //      } else {
    //        deserializerCreator.generateDeserializerReference(resultType, w);
    //      }
    //     // w.print(", " + callback.getName());
    //      w.print(", " + "null");
    //      w.print(", " + objName);
    //      w.println(");");
    //      w.println("return;");
    //      w.outdent();
    //      w.println("}");
    //    }

    final String reqDataStr;
    if (params.length == 0) {
        reqDataStr = "\"[]\"";
    } else {
        final String reqData = nameFactory.createName("reqData");
        w.println("final StringBuilder " + reqData + " = new StringBuilder();");
        needsComma = false;
        w.println(reqData + ".append('[');");
        for (int i = 0; i < params.length; i++) {
            if (needsComma) {
                w.println(reqData + ".append(\",\");");
            } else {
                needsComma = true;
            }

            final JType pType = params[i].getType();
            final String pName = params[i].getName();
            if (pType == JPrimitiveType.CHAR || SerializerCreator.isBoxedCharacter(pType)) {
                w.println(reqData + ".append(\"\\\"\");");
                w.println(reqData + ".append(" + JsonSerializer.class.getSimpleName() + ".escapeChar(" + pName
                        + "));");
                w.println(reqData + ".append(\"\\\"\");");
            } else if ((SerializerCreator.isJsonPrimitive(pType) || SerializerCreator.isBoxedPrimitive(pType))
                    && !SerializerCreator.isJsonString(pType)) {
                w.println(reqData + ".append(" + pName + ");");
            } else {
                w.println("if (" + pName + " != null) {");
                w.indent();
                if (SerializerCreator.needsTypeParameter(pType)) {
                    w.print(serializerFields[i]);
                } else {
                    serializerCreator.generateSerializerReference(pType, w, false);
                }
                w.println(".printJson(" + reqData + ", " + pName + ");");
                w.outdent();
                w.println("} else {");
                w.indent();
                w.println(reqData + ".append(" + JsonSerializer.class.getName() + ".JS_NULL);");
                w.outdent();
                w.println("}");
            }
        }
        w.println(reqData + ".append(']');");
        reqDataStr = reqData + ".toString()";
    }

    String resultClass = futureResultClassName;
    if (parameterizedResult != null) {
        resultClass += "<" + parameterizedResult.getQualifiedSourceName() + ">";
    }
    w.println(resultClass + " result = new " + resultClass + "();");
    w.print("doInvoke(");
    w.print("\"" + method.getName() + "\"");
    w.print(", " + reqDataStr);
    w.print(", ");
    if (resultType.isParameterized() != null) {
        w.print(resultField);
    } else {
        deserializerCreator.generateDeserializerReference(resultType, w);
    }

    //w.print(", " + callback.getName());
    w.print(", result");

    w.println(");");
    w.println("return result;");

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