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

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

Introduction

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

Prototype

boolean isPrivate();

Source Link

Usage

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;//w  w w  .jav a 2s  . c  om
    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 String createTypeGenerator(JType t) {
    buffer.setLength(0);/*from w  w w .j ava  2 s . co 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.badlogic.gwtref.gen.ReflectionCacheSourceCreator.java

License:Apache License

private String createTypeGenerator(JType t) {
    buffer.setLength(0);//from   w  w w  . ja va2 s .  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.github.nmorel.gwtjackson.rebind.property.PropertyProcessor.java

License:Apache License

private static boolean isFieldAutoDetected(RebindConfiguration configuration,
        PropertyAccessors propertyAccessors, BeanInfo info) {
    if (!propertyAccessors.getField().isPresent()) {
        return false;
    }//from w w w  .j av a  2s. c  om

    for (Class<? extends Annotation> annotation : AUTO_DISCOVERY_ANNOTATIONS) {
        if (propertyAccessors.isAnnotationPresentOnField(annotation)) {
            return true;
        }
    }

    JField field = propertyAccessors.getField().get();

    JsonAutoDetect.Visibility visibility = info.getFieldVisibility();
    if (Visibility.DEFAULT == visibility) {
        visibility = configuration.getDefaultFieldVisibility();
    }
    return isAutoDetected(visibility, field.isPrivate(), field.isProtected(), field.isPublic(),
            field.isDefaultAccess());
}

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  w  w  .j ava2s  . 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("}");
}

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

License:Apache License

/**
 * Process <code>&lt;ui:import field="com.example.Blah.CONSTANT"></code>.
 *///ww  w .j  av a  2 s . co m
private void createImport(XMLElement elem) throws UnableToCompleteException {
    String rawFieldName = elem.consumeRequiredRawAttribute(FIELD_ATTRIBUTE);
    if (elem.getAttributeCount() > 0) {
        writer.die(elem, "Should only find attribute \"%s\"", FIELD_ATTRIBUTE);
    }

    int idx = rawFieldName.lastIndexOf('.');
    if (idx < 1) {
        writer.die(elem, "Attribute %s does not look like a static import " + "reference", FIELD_ATTRIBUTE);
    }
    String enclosingName = rawFieldName.substring(0, idx);
    String constantName = rawFieldName.substring(idx + 1);

    JClassType enclosingType = oracle.findType(enclosingName);
    if (enclosingType == null) {
        writer.die(elem, "Unable to locate type %s", enclosingName);
    }

    if ("*".equals(constantName)) {
        for (JField field : enclosingType.getFields()) {
            if (!field.isStatic()) {
                continue;
            } else if (field.isPublic()) {
                // OK
            } else if (field.isProtected() || field.isPrivate()) {
                continue;
            } else if (!enclosingType.getPackage().equals(writer.getOwnerClass().getOwnerType().getPackage())) {
                // package-protected in another package
                continue;
            }
            createSingleImport(elem, enclosingType, enclosingName + "." + field.getName(), field.getName());
        }
    } else {
        createSingleImport(elem, enclosingType, rawFieldName, constantName);
    }
}

From source file:it.appify.generator.WebAppGenerator.java

License:Open Source License

protected MethodSpec initializeControllers(TypeOracle typeOracle) throws ClassNotFoundException {
    Builder initializeControllerBuilder = MethodSpec.methodBuilder("initializeControllers")
            .addModifiers(Modifier.PUBLIC, Modifier.FINAL).addAnnotation(Override.class);

    JClassType[] types = typeOracle.getTypes();
    List<MethodSpec> handlers = new ArrayList<MethodSpec>();
    for (JClassType jClassType : types) {
        Controller controllerAnnotation = jClassType.findAnnotationInTypeHierarchy(Controller.class);
        if (controllerAnnotation == null) {
            continue;
        }//from w ww.  j a  v  a  2 s  .co  m
        String pageId = controllerAnnotation.page();
        Class<?> controllerClass = Class
                .forName(jClassType.getPackage().getName() + "." + jClassType.getSimpleSourceName());
        initializeControllerBuilder.addStatement(
                "final $T controller" + jClassType.getSimpleSourceName() + " = new $T(this)", controllerClass,
                controllerClass);

        JMethod[] methods = jClassType.getMethods();
        // scan fields
        JField[] fields = jClassType.getFields();
        for (JField jField : fields) {
            ViewElement el = jField.getAnnotation(ViewElement.class);

            if (jField.isPublic()) {
                if (el != null) {
                    String elId = el.value();
                    // collect all elements to inject in the controller
                    initializeControllerBuilder.addStatement("this.bindElementToPage($S,$S)", pageId, elId);
                    TypeSpec.Builder innerControllerBuilder = createControllerHolderBuilder(controllerClass,
                            pageId, elId, jField.getName(), "controller" + jClassType.getSimpleSourceName(),
                            false);
                    controllerHolderSpecs.put("controller" + jClassType.getSimpleSourceName() + "##" + pageId,
                            innerControllerBuilder);
                    initializeControllerBuilders.put("controller" + jClassType.getSimpleSourceName(),
                            initializeControllerBuilder);
                    // initializeControllerBuilder.addStatement(
                    // "this.bindControllerToPage($S,$L)", pageId,
                    // innerControllerHandler);
                }
            } else if (jField.isPrivate() || jField.isProtected()) {
                if (el != null) {
                    String elId = el.value();
                    // collect all elements to inject in the controller
                    initializeControllerBuilder.addStatement("this.bindElementToPage($S,$S)", pageId, elId);
                    TypeSpec.Builder innerControllerBuilder = createControllerHolderBuilder(controllerClass,
                            pageId, elId, jField.getName(), "controller" + jClassType.getSimpleSourceName(),
                            true);
                    controllerHolderSpecs.put("controller" + jClassType.getSimpleSourceName() + "##" + pageId,
                            innerControllerBuilder);
                    initializeControllerBuilders.put("controller" + jClassType.getSimpleSourceName(),
                            initializeControllerBuilder);
                    // initializeControllerBuilder.addStatement(
                    // "this.bindControllerToPage($S,$L)", pageId,
                    // innerControllerHandler);
                }
            }
        }

        TypeSpec.Builder chb = controllerHolderSpecs
                .get("controller" + jClassType.getSimpleSourceName() + "##" + pageId);
        if (chb != null) {
            chb = addInjectViewElementsMethod(fields, chb);
            controllerHolderSpecs.put("controller" + jClassType.getSimpleSourceName() + "##" + pageId, chb);
        }

        // scan handlers
        boolean pageReadyAdd = false;
        for (JMethod jMethod : methods) {
            ViewHandler vhAnnotation = jMethod.getAnnotation(ViewHandler.class);
            ViewModelHandler vhModelAnnotation = jMethod.getAnnotation(ViewModelHandler.class);
            OnPageReady onPageReady = jMethod.getAnnotation(OnPageReady.class);

            // if (vhAnnotation == null && vhModelAnnotation == null) {
            // continue;
            // }
            if (vhAnnotation != null) {
                // initialize the view handler to be invoked when an event
                // occurs
                String eventType = vhAnnotation.eventType();
                String viewId = vhAnnotation.viewId();
                TypeSpec innerViewHandler = createViewHandler("controller" + jClassType.getSimpleSourceName(),
                        jMethod.getName());
                initializeControllerBuilder.addStatement(
                        "$T holder" + pageId + "_" + viewId
                                + " = this.createViewHandler(\"$L\",\"$L\",\"$L\",$L)",
                        ViewHandlerHolder.class, pageId, viewId, eventType, innerViewHandler);
                initializeControllerBuilder.addStatement(
                        "this.bindHandlerToPage(\"$L\", holder" + pageId + "_" + viewId + ")", pageId);
            }
            if (onPageReady != null) {
                if (!pageReadyAdd) {
                    TypeSpec.Builder controllerHolderBuilder = controllerHolderSpecs
                            .get("controller" + jClassType.getSimpleSourceName() + "##" + pageId);

                    if (controllerHolderBuilder == null) {
                        TypeSpec.Builder innerControllerBuilder = createControllerHolderBuilder(controllerClass,
                                pageId, null, null, "controller" + jClassType.getSimpleSourceName(), false);
                        controllerHolderSpecs.put(
                                "controller" + jClassType.getSimpleSourceName() + "##" + pageId,
                                innerControllerBuilder);
                        // initializeControllerBuilders.put("controller"
                        // + jClassType.getSimpleSourceName(),
                        // initializeControllerBuilder);
                        addInjectViewElementsMethod(null, innerControllerBuilder);
                        controllerHolderBuilder = innerControllerBuilder;
                    }

                    controllerHolderBuilder = callPageReadyMethod(controllerHolderBuilder, jMethod.getName());
                    controllerHolderSpecs.put("controller" + jClassType.getSimpleSourceName() + "##" + pageId,
                            controllerHolderBuilder);
                    pageReadyAdd = true;
                }

            } else {
                // TypeSpec.Builder controllerHolderBuilder =
                // controllerHolderSpecs
                // .get("controller"
                // + jClassType.getSimpleSourceName() + "##"
                // + pageId);
                // if (controllerHolderBuilder != null) {
                // controllerHolderBuilder = callPageReadyMethod(
                // controllerHolderBuilder, "");
                // controllerHolderSpecs.put(
                // "controller" + jClassType.getSimpleSourceName()
                // + "##" + pageId,
                // controllerHolderBuilder);
                // }
            }
            if (vhModelAnnotation != null) {
                // initialize the view model handler to be invoked when an
                // event on model occurs
                Class<?> modelType = vhModelAnnotation.modelType();
                String viewId = vhModelAnnotation.viewId();
                if (objectMappersInterfaces.get(modelType) == null) {
                    TypeSpec objectMapperInterface = createObjectMapperInterface(
                            "ObjectMapper" + modelType.getSimpleName(), modelType);
                    objectMappersInterfaces.put(modelType, objectMapperInterface);
                }
                TypeSpec vmHandler = createViewModelHandler(jMethod, modelType,
                        "controller" + jClassType.getSimpleSourceName());
                TypeSpec vmh = createViewHandlerHolder(modelType, vmHandler);
                initializeControllerBuilder.addStatement("this.modelView.addViewModelHandler($S,$S,$L)", pageId,
                        viewId, vmh);

            }

        }
        if (!pageReadyAdd) {
            TypeSpec.Builder controllerHolderBuilder = controllerHolderSpecs
                    .get("controller" + jClassType.getSimpleSourceName() + "##" + pageId);
            if (controllerHolderBuilder != null) {

                controllerHolderBuilder = callPageReadyMethod(controllerHolderBuilder, "");
                controllerHolderSpecs.put("controller" + jClassType.getSimpleSourceName() + "##" + pageId,
                        controllerHolderBuilder);
            }
        }

    }
    Set<String> keys = controllerHolderSpecs.keySet();

    for (String s : keys) {
        String[] splitted = s.split("##");
        TypeSpec.Builder controllerHolderBuilder = controllerHolderSpecs.get(s);
        if (controllerHolderBuilder != null) {
            initializeControllerBuilder.addStatement("this.bindControllerToPage($S,$L)", splitted[1],
                    controllerHolderBuilder.build());
        }
    }

    return initializeControllerBuilder.build();
}

From source file:it.appify.generator.WebAppGenerator.java

License:Open Source License

private TypeSpec.Builder addInjectViewElementsMethod(JField[] jFields, TypeSpec.Builder controllerHolderSpec) {
    MethodSpec.Builder injectViewElementsBuilder = MethodSpec.methodBuilder("injectViewElements")
            .addAnnotation(Override.class).addModifiers(Modifier.PUBLIC);

    if (jFields == null || jFields.length == 0) {
        controllerHolderSpec.addMethod(injectViewElementsBuilder.build());
        return controllerHolderSpec;
    }/*w  w  w  . jav  a  2 s .co  m*/

    for (JField jField : jFields) {
        ViewElement el = jField.getAnnotation(ViewElement.class);

        if (jField.isPublic()) {
            if (el != null) {
                String elId = el.value();
                injectViewElementsBuilder.addStatement("this.controller.$L = ($T) getViewFragment($S)",
                        jField.getName(), Element.class, elId);
            }
        } else if (jField.isPrivate() || jField.isProtected()) {
            if (el != null) {
                String elId = el.value();
                injectViewElementsBuilder.addStatement("this.controller.set$L(($T)getViewFragment($S))",
                        StringUtils.capitalize(jField.getName()), Element.class, elId);
            }
        }
    }
    controllerHolderSpec.addMethod(injectViewElementsBuilder.build());
    return controllerHolderSpec;
}

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

License:Apache License

private void generateGetSets(final SourceWriter w) {
    for (final JField f : sortFields(targetType)) {
        if (f.isPrivate()) {
            w.print("private static final native ");
            w.print(f.getType().getQualifiedSourceName());
            w.print(" objectGet_" + f.getName());
            w.print("(");
            w.print(targetType.getQualifiedSourceName() + " instance");
            w.print(")");
            w.println("/*-{ ");
            w.indent();//from w w w.  j a  v  a2 s. c  o  m

            w.print("return instance.@");
            w.print(targetType.getQualifiedSourceName());
            w.print("::");
            w.print(f.getName());
            w.println(";");

            w.outdent();
            w.println("}-*/;");

            w.print("private static final native void ");
            w.print(" objectSet_" + f.getName());
            w.print("(");
            w.print(targetType.getQualifiedSourceName() + " instance, ");
            w.print(f.getType().getQualifiedSourceName() + " value");
            w.print(")");
            w.println("/*-{ ");
            w.indent();

            w.print("instance.@");
            w.print(targetType.getQualifiedSourceName());
            w.print("::");
            w.print(f.getName());
            w.println(" = value;");

            w.outdent();
            w.println("}-*/;");
        }

        if (f.getType() == JPrimitiveType.CHAR || isBoxedCharacter(f.getType())) {
            w.print("private static final native String");
            w.print(" jsonGet0_" + f.getName());
            w.print("(final JavaScriptObject instance)");
            w.println("/*-{ ");
            w.indent();
            w.print("return instance.");
            w.print(f.getName());
            w.println(";");
            w.outdent();
            w.println("}-*/;");

            w.print("private static final ");
            w.print(f.getType() == JPrimitiveType.CHAR ? "char" : "Character");
            w.print(" jsonGet_" + f.getName());
            w.print("(JavaScriptObject instance)");
            w.println(" {");
            w.indent();
            w.print("return ");
            w.print(JsonSerializer.class.getName());
            w.print(".toChar(");
            w.print("jsonGet0_" + f.getName());
            w.print("(instance)");
            w.println(");");
            w.outdent();
            w.println("}");
        } else {
            w.print("private static final native ");
            if (f.getType().isArray() != null) {
                w.print("JavaScriptObject");
            } else if (isJsonPrimitive(f.getType())) {
                w.print(f.getType().getQualifiedSourceName());
            } else if (isBoxedPrimitive(f.getType())) {
                w.print(boxedTypeToPrimitiveTypeName(f.getType()));
            } else {
                w.print("Object");
            }
            w.print(" jsonGet_" + f.getName());
            w.print("(JavaScriptObject instance)");
            w.println("/*-{ ");
            w.indent();

            w.print("return instance.");
            w.print(f.getName());
            w.println(";");

            w.outdent();
            w.println("}-*/;");
        }

        w.println();
    }
}

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

License:Apache License

private void generatePrintJson(final SourceWriter w) {
    final JField[] fieldList = sortFields(targetType);
    w.print("protected int printJsonImpl(int fieldCount, StringBuilder sb, ");
    w.println("Object instance) {");
    w.indent();//from   w w  w .  ja  va  2s  . c  om

    w.print("final ");
    w.print(targetType.getQualifiedSourceName());
    w.print(" src = (");
    w.print(targetType.getQualifiedSourceName());
    w.println(")instance;");

    if (needsSuperSerializer(targetType)) {
        w.print("fieldCount = super.printJsonImpl(fieldCount, sb, (");
        w.print(targetType.getSuperclass().getQualifiedSourceName());
        w.println(")src);");
    }

    final String docomma = "if (fieldCount++ > 0) sb.append(\",\");";
    for (final JField f : fieldList) {
        final String doget;
        if (f.isPrivate()) {
            doget = "objectGet_" + f.getName() + "(src)";
        } else {
            doget = "src." + f.getName();
        }

        final String doname = "sb.append(\"\\\"" + f.getName() + "\\\":\");";
        if (f.getType() == JPrimitiveType.CHAR || isBoxedCharacter(f.getType())) {
            w.println(docomma);
            w.println(doname);
            w.println("sb.append(\"\\\"\");");
            w.println("sb.append(" + JsonSerializer.class.getSimpleName() + ".escapeChar(" + doget + "));");
            w.println("sb.append(\"\\\"\");");
        } else if (isJsonString(f.getType())) {
            w.println("if (" + doget + " != null) {");
            w.indent();
            w.println(docomma);
            w.println(doname);
            w.println("sb.append(" + JsonSerializer.class.getSimpleName() + ".escapeString(" + doget + "));");
            w.outdent();
            w.println("}");
            w.println();
        } else if (f.getType().isPrimitive() != null) {
            w.println(docomma);
            w.println(doname);
            w.println("sb.append(" + doget + ");");
            w.println();
        } else if (isJsonPrimitive(f.getType()) || isBoxedPrimitive(f.getType())) {
            w.println("if (" + doget + " != null) {");
            w.println(docomma);
            w.println(doname);
            w.println("sb.append(" + doget + ");");
            w.println();
            w.println("}");
        } else {
            w.println("if (" + doget + " != null) {");
            w.indent();
            w.println(docomma);
            w.println(doname);
            if (needsTypeParameter(f.getType())) {
                w.print("ser_" + f.getName());
            } else {
                w.print(serializerFor(f.getType()) + ".INSTANCE");
            }
            w.println(".printJson(sb, " + doget + ");");
            w.outdent();
            w.println("}");
            w.println();
        }
    }

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