Example usage for com.google.gwt.core.ext.typeinfo JField getType

List of usage examples for com.google.gwt.core.ext.typeinfo JField getType

Introduction

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

Prototype

JType getType();

Source Link

Usage

From source file:ch.unifr.pai.twice.comm.serverPush.rebind.RemoteEventSerializerGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {
    // Build a new class, that implements a "paintScreen" method
    JClassType classType;//from   w  w w.  j a  v  a2s  .  c  om

    try {
        classType = context.getTypeOracle().getType(typeName);
        JClassType superClass = classType.getSuperclass();
        JClassType[] generics = superClass.isParameterized().getTypeArgs();
        JClassType eventHandlerClass = generics[0];

        // Here you would retrieve the metadata based on typeName for this
        // Screen
        SourceWriter src = getSourceWriter(classType, context, logger);
        if (src != null) {
            src.println("@Override");
            src.println("public " + String.class.getName() + " getEventType(){");
            src.println("return " + classType.getQualifiedSourceName() + ".class.getName();");
            src.println("}");

            if (superClass.getQualifiedSourceName().equals(RemoteEventWrapper.class.getName())
                    || superClass.getQualifiedSourceName().equals(UndoableRemoteEventWrapper.class.getName())) {
                JClassType eventClass = generics[1];
                src.println("@Override");
                src.println("public void wrap(" + eventClass.getQualifiedSourceName() + " event){");
                for (JMethod method : classType.getMethods()) {
                    String realMethodName = method.getName().replaceAll("_", "().");
                    src.println("setProperty(\"" + method.getName() + "\", " + String.class.getName()
                            + ".valueOf(event." + realMethodName + "()));");
                }
                src.println("}");

                for (JMethod method : classType.getMethods()) {
                    if (method.isAbstract()) {
                        src.println();
                        src.println("@Override");
                        src.println("public " + String.class.getName() + " " + method.getName() + "(){");
                        src.println(
                                JSONValue.class.getName() + " value = json.get(\"" + method.getName() + "\");");
                        src.println(
                                "return value!=null && value.isString()!=null ? value.isString().stringValue() : null;");
                        src.println("}");
                    }
                }

                src.println();
            }

            src.println("@Override");
            src.println("public " + GwtEvent.class.getName() + "." + Type.class.getSimpleName() + "<"
                    + eventHandlerClass.getQualifiedSourceName() + "> getAssociatedType() {");
            src.println("\treturn " + classType.getQualifiedSourceName() + ".TYPE;");
            src.println("}");

            src.println();

            src.println("@Override");
            src.println(
                    "protected void dispatch(" + eventHandlerClass.getQualifiedSourceName() + " handler) {");
            // for (JMethod m : eventHandlerClass.getMethods()) {
            // if(!m.getName().equals("undo")){
            boolean undoable = classType
                    .isAssignableTo(context.getTypeOracle().getType(UndoableRemoteEvent.class.getName()));
            if (undoable) {
                src.println("if(isUndo())");
                src.println("handler.undo(this);");
                src.println("else {");
                src.println("handler.saveState(this);");
            }
            src.println("\t handler.onEvent(this);");
            if (undoable) {
                src.println("}");
            }

            // }
            // }
            src.println("}");
            src.println();
            src.println("@Override");
            src.println("public String serialize(" + TWICESecurityManager.class.getName() + " security) throws "
                    + MessagingException.class.getName() + "{");
            for (JField field : classType.getFields()) {
                if (!field.isStatic() && !field.isTransient()) {
                    src.println("if(" + field.getName() + "!=null){");
                    src.println("setProperty(\"" + field.getName() + "\", String.valueOf(" + field.getName()
                            + "));}");

                }
            }
            src.println("return super.serialize(security);");
            src.println("}");
            src.println();
            src.println("@Override");
            src.println(
                    "public " + RemoteEvent.class.getName() + "<" + eventHandlerClass.getQualifiedSourceName()
                            + "> deserialize(String string, " + TWICESecurityManager.class.getName()
                            + " security) throws " + MessagingException.class.getName() + "{");
            src.println(RemoteEvent.class.getName() + " result = super.deserialize(string, security);");
            for (JField field : classType.getFields()) {
                if (!field.isStatic()) {
                    if (String.class.getName().equals(field.getType().getQualifiedSourceName()))
                        src.println(field.getName() + " = getProperty(\"" + field.getName() + "\");");
                    else {
                        src.println("String " + field.getName() + "Tmp = getProperty(\"" + field.getName()
                                + "\");");
                        src.println(field.getName() + " = " + field.getName() + "Tmp!=null ? "
                                + field.getType().getQualifiedSourceName() + ".valueOf(" + field.getName()
                                + "Tmp) : null;");
                    }
                }
            }
            src.println("return result;");
            src.println("}");
            src.commit(logger);

        }
        return typeName + "Impl";

    } catch (NotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

From source file:ch.unifr.pai.twice.module.rebind.TWICEModuleGenerator.java

License:Apache License

@Override
public String generate(TreeLogger logger, GeneratorContext context, String typeName)
        throws UnableToCompleteException {
    // Build a new class, that implements a "paintScreen" method
    JClassType classType;/* ww w .  ja v  a2  s  .  com*/
    try {
        classType = context.getTypeOracle().getType(typeName);
        JClassType genericClass = getGenericClass(classType);

        SourceWriter src = getSourceWriter(classType, context, logger);
        if (src != null) {
            src.println("@Override");
            src.println("public " + Map.class.getName() + "<" + String.class.getName() + ", "
                    + Object.class.getName() + "> getConfigurableFields("
                    + genericClass.getQualifiedSourceName() + " instance){");
            src.println(Map.class.getName() + "<" + String.class.getName() + ", " + Object.class.getName()
                    + "> result = new " + HashMap.class.getName() + "<" + String.class.getName() + ", "
                    + Object.class.getName() + ">();");
            for (JField f : genericClass.getFields()) {
                Configurable c = f.getAnnotation(Configurable.class);
                if (c != null && !f.isFinal() && !f.isPrivate() && !f.isProtected()) {
                    src.println("result.put(\"" + c.value() + "\", instance." + f.getName() + ");");
                }
            }
            src.println("return result;");
            src.println("}");

            src.println("@Override");
            src.println("public void configure(" + Map.class.getName() + "<" + String.class.getName() + ", "
                    + String.class.getName() + "> properties, " + genericClass.getQualifiedSourceName()
                    + " instance){");
            src.println("for(" + String.class.getName() + " key : properties.keySet()){");
            src.println("String value = properties.get(key);");
            src.println("if(key==null){");
            src.println("}");
            for (JField f : genericClass.getFields()) {
                Configurable c = f.getAnnotation(Configurable.class);
                if (c != null && !f.isFinal() && !f.isPrivate() && !f.isProtected()) {
                    JPrimitiveType t = f.getType().isPrimitive();
                    if (t != null) {
                        src.println("else if(key.equals(\"" + c.value() + "\")){");
                        switch (t) {
                        case INT:
                            src.println("instance." + f.getName() + "=" + Integer.class.getName()
                                    + ".parseInt(value);");
                            break;
                        case BOOLEAN:
                            src.println("instance." + f.getName() + "=" + Boolean.class.getName()
                                    + ".parseBoolean(value);");
                            break;
                        case DOUBLE:
                            src.println("instance." + f.getName() + "=" + Double.class.getName()
                                    + ".parseDouble(value);");
                            break;
                        case FLOAT:
                            src.println("instance." + f.getName() + "=" + Float.class.getName()
                                    + ".parseFloat(value);");
                            break;
                        case LONG:
                            src.println("instance." + f.getName() + "=" + Long.class.getName()
                                    + ".parseLong(value);");
                            break;
                        default:
                            throw new RuntimeException("The primitive type \"" + t.name()
                                    + "\" is not supported for configuration");
                        }
                    } else if (f.getType().getQualifiedSourceName().equals(String.class.getName())) {
                        src.println("instance." + f.getName() + "=value");
                    } else {
                        throw new RuntimeException("The type \"" + f.getType().getQualifiedSourceName()
                                + "\" is not supported for configuration");
                    }
                    src.println("}");
                }
            }
            src.println("}");
            src.println("}");

            src.println("@Override");
            src.println("public " + RunAsyncCallback.class.getName() + " instantiate(final "
                    + AsyncCallback.class.getName() + "<" + genericClass.getQualifiedSourceName()
                    + "> callback){");
            src.println("return new " + RunAsyncCallback.class.getName() + "(){");
            src.println("@Override");
            src.println("public void onSuccess(){");
            src.println(genericClass.getQualifiedSourceName() + " module = " + GWT.class.getName() + ".create("
                    + genericClass.getQualifiedSourceName() + ".class);");
            src.println("//start(module);");
            src.println("callback.onSuccess(module);");
            src.println("}");
            src.println("@Override");
            src.println("public void onFailure(" + Throwable.class.getName() + " reason){");
            src.println("callback.onFailure(reason);");
            src.println("}");
            src.println("};");
            src.println("}");
            src.commit(logger);
        }

        return typeName + "Impl";

    } catch (NotFoundException e) {
        e.printStackTrace();
    }
    return null;
}

From source file:com.artemis.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private void gatherTypes(JType type, List<JType> types) {
    nesting++;/*from   w w w.  jav  a2s. c om*/
    // came here from a type that has no super class
    if (type == null) {
        nesting--;
        return;
    }
    // package info
    if (type.getQualifiedSourceName().contains("-")) {
        nesting--;
        return;
    }

    // not visible
    if (!isVisible(type)) {
        nesting--;
        return;
    }

    // filter reflection scope based on configuration in gwt xml module
    boolean keep = false;
    String name = type.getQualifiedSourceName();
    try {
        ConfigurationProperty prop;
        keep |= !name.contains(".");
        prop = context.getPropertyOracle().getConfigurationProperty("artemis.reflect.include");
        for (String s : prop.getValues())
            keep |= name.contains(s);
        prop = context.getPropertyOracle().getConfigurationProperty("artemis.reflect.exclude");
        for (String s : prop.getValues())
            keep &= !name.equals(s);
    } catch (BadPropertyValueException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (!keep) {
        nesting--;
        return;
    }

    // already visited this type
    if (types.contains(type.getErasedType())) {
        nesting--;
        return;
    }
    types.add(type.getErasedType());
    out(type.getErasedType().getQualifiedSourceName(), nesting);

    if (type instanceof JPrimitiveType) {
        // nothing to do for a primitive type
        nesting--;
        return;
    } else {
        // gather fields
        JClassType c = (JClassType) type;
        JField[] fields = c.getFields();
        if (fields != null) {
            for (JField field : fields) {
                gatherTypes(field.getType().getErasedType(), types);
            }
        }

        // gather super types & interfaces
        gatherTypes(c.getSuperclass(), types);
        JClassType[] interfaces = c.getImplementedInterfaces();
        if (interfaces != null) {
            for (JClassType i : interfaces) {
                gatherTypes(i.getErasedType(), types);
            }
        }

        // gather method parameter & return types
        JMethod[] methods = c.getMethods();
        if (methods != null) {
            for (JMethod m : methods) {
                gatherTypes(m.getReturnType().getErasedType(), types);
                if (m.getParameterTypes() != null) {
                    for (JType p : m.getParameterTypes()) {
                        gatherTypes(p.getErasedType(), types);
                    }
                }
            }
        }

        // gather inner classes
        JClassType[] inner = c.getNestedTypes();
        if (inner != null) {
            for (JClassType i : inner) {
                gatherTypes(i.getErasedType(), types);
            }
        }
    }
    nesting--;
}

From source file:com.artemis.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private String createTypeGenerator(JType t) {
    buffer.setLength(0);//from w ww.ja  v  a 2s  .c o m
    String varName = "t";
    if (t instanceof JPrimitiveType)
        varName = "p";
    int id = nextId();
    typeNames2typeIds.put(t.getErasedType().getQualifiedSourceName(), id);
    pb("Type " + varName + " = new Type();");
    pb(varName + ".name = \"" + t.getErasedType().getQualifiedSourceName() + "\";");
    pb(varName + ".id = " + id + ";");
    pb(varName + ".clazz = " + t.getErasedType().getQualifiedSourceName() + ".class;");
    if (t instanceof JClassType) {
        JClassType c = (JClassType) t;
        if (isVisible(c.getSuperclass()))
            pb(varName + ".superClass = " + c.getSuperclass().getErasedType().getQualifiedSourceName()
                    + ".class;");
        if (c.getFlattenedSupertypeHierarchy() != null) {
            pb("Set<Class> " + varName + "Assignables = new HashSet<Class>();");
            for (JType i : c.getFlattenedSupertypeHierarchy()) {
                if (!isVisible(i))
                    continue;
                pb(varName + "Assignables.add(" + i.getErasedType().getQualifiedSourceName() + ".class);");
            }
            pb(varName + ".assignables = " + varName + "Assignables;");
        }
        if (c.isInterface() != null)
            pb(varName + ".isInterface = true;");
        if (c.isEnum() != null)
            pb(varName + ".isEnum = true;");
        if (c.isArray() != null)
            pb(varName + ".isArray = true;");
        if (c.isMemberType())
            pb(varName + ".isMemberClass = true;");
        pb(varName + ".isStatic = " + c.isStatic() + ";");
        pb(varName + ".isAbstract = " + c.isAbstract() + ";");

        if (c.getFields() != null) {
            pb(varName + ".fields = new Field[] {");
            for (JField f : c.getFields()) {
                String enclosingType = getType(c);
                String fieldType = getType(f.getType());
                int setter = nextId();
                int getter = nextId();
                String elementType = getElementTypes(f);
                String annotations = getAnnotations(f.getDeclaredAnnotations());

                pb("new Field(\"" + f.getName() + "\", " + enclosingType + ", " + fieldType + ", " + f.isFinal()
                        + ", " + f.isDefaultAccess() + ", " + f.isPrivate() + ", " + f.isProtected() + ", "
                        + f.isPublic() + ", " + f.isStatic() + ", " + f.isTransient() + ", " + f.isVolatile()
                        + ", " + getter + ", " + setter + ", " + elementType + ", " + annotations + "), ");

                SetterGetterStub stub = new SetterGetterStub();
                stub.name = f.getName();
                stub.enclosingType = enclosingType;
                stub.type = fieldType;
                stub.isStatic = f.isStatic();
                stub.isFinal = f.isFinal();
                if (enclosingType != null && fieldType != null) {
                    stub.getter = getter;
                    stub.setter = setter;
                }
                setterGetterStubs.add(stub);
            }
            pb("};");
        }

        printMethods(c, varName, "Method", c.getMethods());
        if (c.isPublic() && !c.isAbstract() && (c.getEnclosingType() == null || c.isStatic())) {
            printMethods(c, varName, "Constructor", c.getConstructors());
        } else {
            logger.log(Type.INFO, c.getName() + " can't be instantiated. Constructors not generated");
        }

        if (c.isArray() != null) {
            pb(varName + ".componentType = " + getType(c.isArray().getComponentType()) + ";");
        }
        if (c.isEnum() != null) {
            JEnumConstant[] enumConstants = c.isEnum().getEnumConstants();
            if (enumConstants != null) {
                pb(varName + ".enumConstants = new Object[" + enumConstants.length + "];");
                for (int i = 0; i < enumConstants.length; i++) {
                    pb(varName + ".enumConstants[" + i + "] = " + c.getErasedType().getQualifiedSourceName()
                            + "." + enumConstants[i].getName() + ";");
                }
            }
        }

        Annotation[] annotations = c.getDeclaredAnnotations();
        if (annotations != null && annotations.length > 0) {
            pb(varName + ".annotations = " + getAnnotations(annotations) + ";");
        }
    } else if (t.isAnnotation() != null) {
        pb(varName + ".isAnnotation = true;");
    } else {
        pb(varName + ".isPrimitive = true;");
    }

    pb("types.put(\"" + t.getErasedType().getQualifiedSourceName() + "\", " + varName + ");");
    return buffer.toString();
}

From source file:com.artemis.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private String getElementTypes(JField f) {
    StringBuilder b = new StringBuilder();
    JParameterizedType params = f.getType().isParameterized();
    if (params != null) {
        JClassType[] typeArgs = params.getTypeArgs();
        b.append("new Class[] {");
        for (JClassType typeArg : typeArgs) {
            if (typeArg.isWildcard() != null)
                b.append("Object.class");
            else if (!isVisible(typeArg))
                b.append("null");
            else if (typeArg.isClassOrInterface() != null)
                b.append(typeArg.isClassOrInterface().getQualifiedSourceName()).append(".class");
            else if (typeArg.isParameterized() != null)
                b.append(typeArg.isParameterized().getQualifiedBinaryName()).append(".class");
            else//  w  ww .jav  a  2 s  .  c o  m
                b.append("null");
            b.append(", ");
        }
        b.append("}");
        return b.toString();
    }
    return "null";
}

From source file:com.badlogic.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private void gatherTypes(JType type, List<JType> types) {
    nesting++;/*  w ww.  j av a 2  s .  c  o  m*/
    // came here from a type that has no super class
    if (type == null) {
        nesting--;
        return;
    }
    // package info
    if (type.getQualifiedSourceName().contains("-")) {
        nesting--;
        return;
    }

    // not visible
    if (!isVisible(type)) {
        nesting--;
        return;
    }

    // filter reflection scope based on configuration in gwt xml module
    boolean keep = false;
    String name = type.getQualifiedSourceName();
    try {
        ConfigurationProperty prop;
        keep |= !name.contains(".");
        prop = context.getPropertyOracle().getConfigurationProperty("gdx.reflect.include");
        for (String s : prop.getValues())
            keep |= name.contains(s);
        prop = context.getPropertyOracle().getConfigurationProperty("gdx.reflect.exclude");
        for (String s : prop.getValues())
            keep &= !name.equals(s);
    } catch (BadPropertyValueException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    if (!keep) {
        nesting--;
        return;
    }

    // already visited this type
    if (types.contains(type.getErasedType())) {
        nesting--;
        return;
    }
    types.add(type.getErasedType());
    out(type.getErasedType().getQualifiedSourceName(), nesting);

    if (type instanceof JPrimitiveType) {
        // nothing to do for a primitive type
        nesting--;
        return;
    } else {
        // gather fields
        JClassType c = (JClassType) type;
        JField[] fields = c.getFields();
        if (fields != null) {
            for (JField field : fields) {
                gatherTypes(field.getType().getErasedType(), types);
            }
        }

        // gather super types & interfaces
        gatherTypes(c.getSuperclass(), types);
        JClassType[] interfaces = c.getImplementedInterfaces();
        if (interfaces != null) {
            for (JClassType i : interfaces) {
                gatherTypes(i.getErasedType(), types);
            }
        }

        // gather method parameter & return types
        JMethod[] methods = c.getMethods();
        if (methods != null) {
            for (JMethod m : methods) {
                gatherTypes(m.getReturnType().getErasedType(), types);
                if (m.getParameterTypes() != null) {
                    for (JType p : m.getParameterTypes()) {
                        gatherTypes(p.getErasedType(), types);
                    }
                }
            }
        }

        // gather inner classes
        JClassType[] inner = c.getNestedTypes();
        if (inner != null) {
            for (JClassType i : inner) {
                gatherTypes(i.getErasedType(), types);
            }
        }
    }
    nesting--;
}

From source file:com.badlogic.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private String createTypeGenerator(JType t) {
    buffer.setLength(0);/*from  www.j a  v  a2s.c o  m*/
    int id = nextTypeId++;
    typeNames2typeIds.put(t.getErasedType().getQualifiedSourceName(), id);
    JClassType c = t.isClass();

    String name = t.getErasedType().getQualifiedSourceName();
    String superClass = null;
    if (c != null && (isVisible(c.getSuperclass())))
        superClass = c.getSuperclass().getErasedType().getQualifiedSourceName() + ".class";
    String assignables = null;
    String interfaces = null;

    if (c != null && c.getFlattenedSupertypeHierarchy() != null) {
        assignables = "new HashSet<Class>(Arrays.asList(";
        boolean used = false;
        for (JType i : c.getFlattenedSupertypeHierarchy()) {
            if (!isVisible(i) || i.equals(t)
                    || "java.lang.Object".equals(i.getErasedType().getQualifiedSourceName()))
                continue;
            if (used)
                assignables += ", ";
            assignables += i.getErasedType().getQualifiedSourceName() + ".class";
            used = true;
        }
        if (used)
            assignables += "))";
        else
            assignables = null;
    }

    if (c == null) {
        // if it's not a class, it may be an interface instead
        c = t.isInterface();
    }

    if (c != null && c.getImplementedInterfaces() != null) {
        interfaces = "new HashSet<Class>(Arrays.asList(";
        boolean used = false;
        for (JType i : c.getImplementedInterfaces()) {
            if (!isVisible(i) || i.equals(t))
                continue;
            if (used)
                interfaces += ", ";
            interfaces += i.getErasedType().getQualifiedSourceName() + ".class";
            used = true;
        }
        if (used)
            interfaces += "))";
        else
            interfaces = null;
    }

    String varName = "c" + id;
    pb("private static Type " + varName + ";");
    pb("private static Type " + varName + "() {");
    pb("if(" + varName + "!=null) return " + varName + ";");
    pb(varName + " = new Type(\"" + name + "\", " + id + ", " + name + ".class, " + superClass + ", "
            + assignables + ", " + interfaces + ");");

    if (c != null) {
        if (c.isEnum() != null)
            pb(varName + ".isEnum = true;");
        if (c.isArray() != null)
            pb(varName + ".isArray = true;");
        if (c.isMemberType())
            pb(varName + ".isMemberClass = true;");
        if (c.isInterface() != null) {
            pb(varName + ".isInterface = true;");
        } else {
            pb(varName + ".isStatic = " + c.isStatic() + ";");
            pb(varName + ".isAbstract = " + c.isAbstract() + ";");
        }

        if (c.getFields() != null && c.getFields().length > 0) {
            pb(varName + ".fields = new Field[] {");
            for (JField f : c.getFields()) {
                String enclosingType = getType(c);
                String fieldType = getType(f.getType());
                int setterGetter = nextSetterGetterId++;
                String elementType = getElementTypes(f);
                String annotations = getAnnotations(f.getDeclaredAnnotations());

                pb("    new Field(\"" + f.getName() + "\", " + enclosingType + ", " + fieldType + ", "
                        + f.isFinal() + ", " + f.isDefaultAccess() + ", " + f.isPrivate() + ", "
                        + f.isProtected() + ", " + f.isPublic() + ", " + f.isStatic() + ", " + f.isTransient()
                        + ", " + f.isVolatile() + ", " + setterGetter + ", " + setterGetter + ", " + elementType
                        + ", " + annotations + "), ");

                SetterGetterStub stub = new SetterGetterStub();
                stub.name = f.getName();
                stub.enclosingType = enclosingType;
                stub.type = fieldType;
                stub.isStatic = f.isStatic();
                stub.isFinal = f.isFinal();
                if (enclosingType != null && fieldType != null) {
                    stub.getter = setterGetter;
                    stub.setter = setterGetter;
                }
                setterGetterStubs.add(stub);
            }
            pb("};");
        }

        createTypeInvokables(c, varName, "Method", c.getMethods());
        if (c.isPublic() && !c.isAbstract() && (c.getEnclosingType() == null || c.isStatic())) {
            createTypeInvokables(c, varName, "Constructor", c.getConstructors());
        } else {
            logger.log(Type.INFO, c.getName() + " can't be instantiated. Constructors not generated");
        }

        if (c.isArray() != null) {
            pb(varName + ".componentType = " + getType(c.isArray().getComponentType()) + ";");
        }
        if (c.isEnum() != null) {
            JEnumConstant[] enumConstants = c.isEnum().getEnumConstants();
            if (enumConstants != null) {
                pb(varName + ".enumConstants = new Object[" + enumConstants.length + "];");
                for (int i = 0; i < enumConstants.length; i++) {
                    pb(varName + ".enumConstants[" + i + "] = " + c.getErasedType().getQualifiedSourceName()
                            + "." + enumConstants[i].getName() + ";");
                }
            }
        }

        Annotation[] annotations = c.getDeclaredAnnotations();
        if (annotations != null && annotations.length > 0) {
            pb(varName + ".annotations = " + getAnnotations(annotations) + ";");
        }
    } else if (t.isAnnotation() != null) {
        pb(varName + ".isAnnotation = true;");
    } else {
        pb(varName + ".isPrimitive = true;");
    }

    pb("return " + varName + ";");
    pb("}");
    return buffer.toString();
}

From source file:com.badlogic.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private String getElementTypes(JField f) {
    StringBuilder b = new StringBuilder();
    JParameterizedType params = f.getType().isParameterized();
    if (params != null) {
        JClassType[] typeArgs = params.getTypeArgs();
        b.append("new Class[] {");
        for (JClassType typeArg : typeArgs) {
            if (typeArg.isWildcard() != null)
                b.append("null");
            else if (!isVisible(typeArg))
                b.append("null");
            else if (typeArg.isClassOrInterface() != null)
                b.append(typeArg.isClassOrInterface().getQualifiedSourceName()).append(".class");
            else if (typeArg.isParameterized() != null)
                b.append(typeArg.isParameterized().getQualifiedBinaryName()).append(".class");
            else/*w  w w  . ja v a2 s  .c o  m*/
                b.append("null");
            b.append(", ");
        }
        b.append("}");
        return b.toString();
    }
    return "null";
}

From source file:com.didactilab.gwt.phprpc.rebind.phpgen.PhpClass.java

License:Apache License

@Override
protected void getContents(TreeLogger logger, StringBuffer buffer) throws UnableToCompleteException {
    JClassType type = getJavaType();/*ww  w. j  a  va2 s. co  m*/
    buffer.append("/**\n");
    buffer.append(" * @gwtname ").append(type.getQualifiedBinaryName()).append("\n");
    if (type.getEnclosingType() != null) {
        buffer.append(" * @enclosing ").append(type.getEnclosingType().getQualifiedBinaryName()).append("\n");
    }
    buffer.append(" */\n");
    buffer.append("class ").append(PhpTools.typeToString(type, true));
    JClassType superClass = type.getSuperclass();
    if ((superClass != null) && (!superClass.getQualifiedBinaryName().equals("java.lang.Object"))) {
        buffer.append(" extends ").append(PhpTools.typeToString(superClass, true));
    }
    buffer.append(" implements IsSerializable {\n");
    if (serializable) {
        for (JField field : type.getFields()) {
            if (field.isStatic())
                continue;
            if (field.isTransient())
                continue;
            buffer.append("\t/** @var ").append(PhpTools.typeToString(field.getType(), false)).append(" */\n");
            buffer.append("\tpublic $").append(field.getName()).append(";\n\n");
        }
    }
    buffer.append("}\n");
}

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

License:Apache License

@Override
protected void generate(SourceWriter writer) throws UnableToCompleteException {
    // Do we need to check this?
    JClassType presenterType = baseClass.getImplementedInterfaces()[0].isParameterized().getTypeArgs()[0];

    // Presenter or controller
    boolean isPresenter = checkIsPresenter(presenterType);

    hasNativeEventType = hasNativeEventType == null ? getType(HasNativeEvent.class.getCanonicalName())
            : hasNativeEventType;//from  w  ww .j  a  va  2  s  . c  o m

    // If it is a parameterized type we need to find the base type to get
    // the right method names
    while (presenterType.isParameterized() != null || presenterType.isRawType() != null) {
        if (presenterType.isParameterized() != null) {
            presenterType = presenterType.isParameterized().getBaseType();
        } else {
            presenterType = presenterType.isRawType().getBaseType();
        }
    }

    checkForRepetition(presenterType);

    writer.println(bindingsDeclaration);
    writer.println(eventBusbindingsDeclaration);

    String viewTypeName = null;
    HashMap<String, JType> validBindingFieldsTypes = null;
    if (isPresenter) {
        viewTypeName = guitViewGenerator.generate(logger, context, presenterType.getQualifiedSourceName());
        writer.println(viewTypeName + " view;");

        // Field -> Type (for validation purpose)
        validBindingFieldsTypes = getValidGuitViewBindingFields(presenterType);

        // View pool
        writer.println("private static " + ViewPool.class.getCanonicalName() + " pool = new "
                + ViewPool.class.getCanonicalName() + "();");
    }

    // If is an editor generate the driver
    boolean isGwtEditor = presenterType.isAnnotationPresent(GwtEditor.class);
    GwtEditor editor = null;
    Class<?> editorDriver = null;
    if (isGwtEditor) {
        editor = presenterType.getAnnotation(GwtEditor.class);
        editorDriver = editor.base();
        writer.println("public static interface Driver extends " + editorDriver.getCanonicalName() + "<"
                + editor.pojo().getCanonicalName() + "," + viewTypeName + "> {}");
    }

    writer.println(presenterType.getQualifiedSourceName() + " presenter;");

    writer.println(EventBus.class.getCanonicalName() + " eventBus;");

    writer.println("boolean isBinded = false;");

    /*
     * Event bus binder.
     */
    writer.println("public void bind(final " + presenterType.getQualifiedSourceName() + " presenter, final "
            + EventBus.class.getCanonicalName() + " eventBus) {");
    writer.indent();

    writer.println("this.presenter = presenter;");
    writer.println("this.eventBus = eventBus != null ? eventBus : " + GuitEntryPoint.class.getCanonicalName()
            + ".getEventBus();");
    printEventBusBindingMethods(writer, presenterType);

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

    /*
     * View binder.
     */
    writer.println("public " + View.class.getCanonicalName() + " getView() {");
    writer.indent();

    if (isPresenter) {
        // If already binded return the view
        writer.println("if (isBinded) {");
        writer.println("    return view;");
        writer.println("}");

        // Find a view from the pool or create a new one
        writer.println("if (pool.isEmpty()) {");
        writer.println("view = (" + viewTypeName + ") new " + viewTypeName + "();");

        ArrayList<JField> fields = new ArrayList<JField>();
        collectAllFields(presenterType, fields);

        // Provided fields
        printProvidedFields(presenterType, validBindingFieldsTypes, writer, false, fields);

        writer.println("view.bind();");
        writer.println("} else {");
        writer.println("view = (" + viewTypeName + ") pool.pop();");

        // Provided fields
        printProvidedFields(presenterType, validBindingFieldsTypes, writer, true, fields);

        writer.println("}");

        printViewFieldBindings(writer, presenterType, viewTypeName, validBindingFieldsTypes, fields);
        printViewBindingMethods(writer, presenterType, viewTypeName, validBindingFieldsTypes);

        // Initializers
        printPresentersInitilizersCalls(writer, presenterType);

        writer.println("isBinded = true;");

        // GwtEditor
        if (isGwtEditor) {
            writer.println("Driver driver = GWT.create(Driver.class);");

            if (editorDriver.equals(RequestFactoryEditorDriver.class)) {
                JField factoryField = presenterType.getField("factory");
                if (factoryField == null
                        || !factoryField.getType().isClassOrInterface()
                                .isAssignableTo(getType(RequestFactory.class.getCanonicalName()))
                        || factoryField.isPrivate()) {
                    error("The presenter does not have a non-private factory field of the type RequestFactory. Found: "
                            + presenterType.getQualifiedSourceName() + ".factory");
                }
                writer.println("driver.initialize(eventBus, presenter.factory, view);");
            } else {
                writer.println("driver.initialize(view);");
            }

            writer.println("presenter.driver = driver;");
        }

        // Return the view or null
        writer.println("return view;");
    } else {
        writer.println("return null;");
    }

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

    /*
     * Unbind
     */
    writer.println("public void releaseView() {");
    writer.indent();

    if (isPresenter) {
        writer.println("for (" + handlerRegistrationName + " b : bindings) {b.removeHandler();}");
        writer.println("bindings.clear();");
        if (isPresenter) {
            // Recycle the view
            writer.println("if (view != null) {");
            writer.indent();
            writer.println("pool.push(view);");
            writer.println("view = null;");
            writer.outdent();
            writer.println("}");
        }
        writer.println("isBinded = false;");
    }
    writer.outdent();
    writer.println("}");

    /*
     * Destroy.
     */
    writer.println("public void destroy() {");
    writer.indent();
    writer.println("for (" + handlerRegistrationName + " b : eventBusBindings) {b.removeHandler();}");
    if (isPresenter) {
        writer.println("releaseView();");
    }
    writer.println("bindings = null;");
    writer.println("eventBusBindings = null;");
    writer.println("presenter = null;");
    writer.println("eventBus = null;");
    writer.outdent();
    writer.println("}");
}