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

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

Introduction

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

Prototype

public NameFactory() 

Source Link

Document

Creates a new NameFactory that doesn't know about any existing names.

Usage

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

License:Apache License

/**
 * @param sourceWriter//from w  w w .  j  a va2 s. co  m
 */
private void generateControllerOverideExposedMethods(SourcePrinter sourceWriter) {
    List<JMethod> methods = new ArrayList<JMethod>();
    JMethod[] controllerMethods = controllerClass.getOverridableMethods();
    for (JMethod jMethod : controllerMethods) {
        if (isControllerMethodSignatureValid(jMethod)) {
            methods.add(jMethod);
        }
    }

    Set<String> processed = new HashSet<String>();

    for (JMethod method : methods) {
        String methodSignature = method.getReadableDeclaration(true, true, true, true, true);
        if (!processed.contains(methodSignature)) {
            processed.add(methodSignature);

            generateProxyExposedMethodSignature(sourceWriter, new NameFactory(), method);
            sourceWriter.println("{");

            logDebugMessage(sourceWriter, "\"Calling client method: Controller[" + controllerName + "], Method["
                    + method.getName() + "]\"");

            JType returnType = method.getReturnType().getErasedType();
            boolean hasReturn = returnType != JPrimitiveType.VOID;

            Validate annot = method.getAnnotation(Validate.class);
            boolean mustValidade = annot != null;
            if (mustValidade) {
                sourceWriter.println("try{");
                String validateMethod = annot.value();
                if (validateMethod == null || validateMethod.length() == 0) {
                    String methodName = method.getName();
                    methodName = Character.toUpperCase(methodName.charAt(0)) + methodName.substring(1);
                    validateMethod = "validate" + methodName;
                }
                generateMethodvalidationCall(sourceWriter, method, validateMethod);
                sourceWriter.println("}catch (Throwable e1){");
                sourceWriter.println(
                        "Crux.getValidationErrorHandler().handleValidationError(e1.getLocalizedMessage());");
                logDebugMessage(sourceWriter,
                        "\"Client method not called due to a Validation error: Controller[" + controllerName
                                + "], Method[" + method.getName() + "]\"");
                if (hasReturn) {
                    sourceWriter.println("return null;");
                } else {
                    sourceWriter.println("return;");
                }
                sourceWriter.println("}");
            }

            if (hasReturn) {
                sourceWriter.print(returnType.getQualifiedSourceName() + " ret = ");
            }

            generateExposedMethodCall(sourceWriter, method);

            logDebugMessage(sourceWriter, "\"Client method executed: Controller[" + controllerName
                    + "], Method[" + method.getName() + "]\"");
            if (hasReturn) {
                sourceWriter.println("return ret;");
            }

            sourceWriter.println("}");
        }
    }
}

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

License:Apache License

/**
 * Constructor//from   w ww  .j a  va  2s .  co  m
 * @param logger
 * @param context
 */
public RegisteredControllersProxyCreator(TreeLogger logger, GeneratorContext context, View view, String module,
        String iocContainerClassName, String device) {
    super(logger, context, context.getTypeOracle().findType(RegisteredControllers.class.getCanonicalName()),
            false);
    this.view = view;
    this.module = module;
    this.iocContainerClassName = iocContainerClassName;
    this.device = Device.valueOf(device);
    this.nameFactory = new NameFactory();
}

From source file:org.cruxframework.crux.core.rebind.datasource.RegisteredDataSourcesProxyCreator.java

License:Apache License

public RegisteredDataSourcesProxyCreator(TreeLogger logger, GeneratorContext context, View view,
        String iocContainerClassName, String device) {
    super(logger, context, context.getTypeOracle().findType(RegisteredDataSources.class.getCanonicalName()),
            false);/*from  w w  w . j  a  va2  s  . co  m*/
    this.view = view;
    this.iocContainerClassName = iocContainerClassName;
    this.device = Device.valueOf(device);
    this.nameFactory = new NameFactory();
}

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;/*from ww w .  j  av  a  2s .  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("}");
}