Example usage for org.eclipse.jdt.core.dom FieldAccess setName

List of usage examples for org.eclipse.jdt.core.dom FieldAccess setName

Introduction

In this page you can find the example usage for org.eclipse.jdt.core.dom FieldAccess setName.

Prototype

public void setName(SimpleName fieldName) 

Source Link

Document

Sets the name of the field accessed in this field access expression.

Usage

From source file:com.flamefire.importsmalinames.astutils.RenameVariablesVisitor.java

License:Open Source License

@Override
public boolean visit(SimpleName node) {
    // We have to be inside a method
    if (curMethod == null)
        return false;
    // Only replace variables
    IBinding binding = node.resolveBinding();
    if (binding == null) {
        if ((node.getParent() instanceof LabeledStatement)
                && ((LabeledStatement) node.getParent()).getLabel().equals(node))
            return false;
        if ((node.getParent() instanceof BreakStatement)
                && ((BreakStatement) node.getParent()).getLabel().equals(node))
            return false;
        if (node.getParent() instanceof QualifiedName)
            return false;
        // This may happen
        System.err.println("Detected SimpleName without binding: " + node + "; Parent:" + node.getParent()
                + "\nThis may happen if there are compile errors");
        // return false;
    } else if (binding.getKind() != IBinding.VARIABLE)
        return false;
    // Check if we need to add a "this"
    // Do this if current node is a field and we may replace a variable with
    // its name/*from  w ww  . j  ava 2s  .c o m*/
    AST ast = node.getAST();
    IVariableBinding vBinding = (IVariableBinding) binding;
    // Check for field acceses
    if (vBinding != null && vBinding.isField()) {
        // Add this if necessary
        if (renaming.containsValue(node.toString()) && !(node.getParent() instanceof FieldAccess)
                && !(node.getParent() instanceof QualifiedName)) {
            FieldAccess fa = ast.newFieldAccess();
            fa.setExpression(ast.newThisExpression());
            fa.setName(ast.newSimpleName(node.toString()));
            astRewrite.replace(node, fa, null);
        }
        return false;
    }
    String newName = renaming.get(node.toString());
    if (newName == null || newName == "")
        return false;
    astRewrite.replace(node, ast.newSimpleName(newName), null);
    return false;
}

From source file:com.google.devtools.j2objc.translate.ASTFactory.java

License:Apache License

public static FieldAccess newFieldAccess(AST ast, IVariableBinding var, Expression expr) {
    FieldAccess node = ast.newFieldAccess();
    node.setExpression(expr);/*from  www.jav a  2s  .co  m*/
    node.setName(newSimpleName(ast, var));
    Types.addBinding(node, var);
    return node;
}

From source file:com.motorola.studio.android.generateviewbylayout.codegenerators.AbstractLayoutCodeGenerator.java

License:Apache License

/**
 * Adds method invocation that instantiates an anonymous class to deal with the event 
 *//* www. java2  s. c o m*/
@SuppressWarnings("unchecked")
protected void addMethodInvocationToListenerHandler(String callerId, String invocationMethod, String classType,
        String listenerClazzName, List<MethodDeclaration> methodDeclarations) throws JavaModelException {
    MethodInvocation methodInvocation = onCreateDeclaration.getAST().newMethodInvocation();
    SimpleName listenerInvocationName = onCreateDeclaration.getAST().newSimpleName(invocationMethod);
    SimpleName listenerOptionalName = onCreateDeclaration.getAST().newSimpleName(callerId);
    FieldAccess fieldAccess = onCreateDeclaration.getAST().newFieldAccess();
    fieldAccess.setExpression(onCreateDeclaration.getAST().newThisExpression());
    fieldAccess.setName(listenerOptionalName);

    methodInvocation.setName(listenerInvocationName);
    methodInvocation.setExpression(fieldAccess);

    ClassInstanceCreation classInstanceCreation = onCreateDeclaration.getAST().newClassInstanceCreation();
    SimpleType listenerType = getListenerSimpleType(classType, listenerClazzName);
    classInstanceCreation.setType(listenerType);

    AnonymousClassDeclaration classDeclaration = onCreateDeclaration.getAST().newAnonymousClassDeclaration();

    for (MethodDeclaration methodDeclaration : methodDeclarations) {
        classDeclaration.bodyDeclarations().add(methodDeclaration);
    }
    classInstanceCreation.setAnonymousClassDeclaration(classDeclaration);

    methodInvocation.arguments().add(classInstanceCreation);

    ExpressionStatement expressionStatement = onCreateDeclaration.getAST()
            .newExpressionStatement(methodInvocation);
    insertStatementsAtOnCreateDeclaration(expressionStatement, false);
}

From source file:com.motorola.studio.android.generateviewbylayout.codegenerators.AbstractLayoutCodeGenerator.java

License:Apache License

/**
 * Creates an assigment statement. The format follows the example:
 * //from  w  ww .j  a v a 2 s. c o  m
 * <br><br>
 * <code>Button b = (Button) v.findViewById($nodeId);</code>
 * 
 * 
 * @param node
 * @param optionalExpression if invocation was nested (e.g.: getFragmentManager())
 * @param methodToBeCalled 
 * @throws JavaModelException
 */
@SuppressWarnings("unchecked")
public void addAssignmentStatement(LayoutNode node, Expression optionalExpression, String methodToBeCalled)
        throws JavaModelException {
    SimpleName guiName;
    try {
        guiName = getNodeVariableTypeBasedOnLayoutNode(node);
    } catch (CoreException e) {
        throw new JavaModelException(e);
    }
    SimpleType guiType = onCreateDeclaration.getAST().newSimpleType(guiName);

    SimpleName method = onCreateDeclaration.getAST().newSimpleName(methodToBeCalled);
    SimpleName rId1 = onCreateDeclaration.getAST().newSimpleName(JavaViewBasedOnLayoutModifierConstants.R);
    SimpleName rId2 = onCreateDeclaration.getAST().newSimpleName(JavaViewBasedOnLayoutModifierConstants.ID);
    QualifiedName rQualified1 = onCreateDeclaration.getAST().newQualifiedName(rId1, rId2);

    SimpleName guiId = onCreateDeclaration.getAST().newSimpleName(node.getNodeId());
    QualifiedName rQualified2 = onCreateDeclaration.getAST().newQualifiedName(rQualified1, guiId);

    MethodInvocation invocation = onCreateDeclaration.getAST().newMethodInvocation();
    invocation.setName(method);
    if (optionalExpression != null) {
        invocation.setExpression(optionalExpression);
    }
    if (getCodeGeneratorData().getAssociatedType().equals(CodeGeneratorDataBasedOnLayout.TYPE.FRAGMENT)) {
        if (!node.isFragmentPlaceholder()) {
            invocation.setExpression(onCreateDeclaration.getAST()
                    .newSimpleName(getCodeGeneratorData().getJavaLayoutData().getInflatedViewName()));
        }
    }
    invocation.arguments().add(rQualified2);

    CastExpression castExpr = onCreateDeclaration.getAST().newCastExpression();
    castExpr.setExpression(invocation);
    castExpr.setType(guiType);

    Assignment assign = onCreateDeclaration.getAST().newAssignment();
    SimpleName variableId = onCreateDeclaration.getAST().newSimpleName(node.getNodeId());

    FieldAccess fieldAccess = onCreateDeclaration.getAST().newFieldAccess();
    fieldAccess.setExpression(onCreateDeclaration.getAST().newThisExpression());
    fieldAccess.setName(variableId);

    assign.setLeftHandSide(fieldAccess);
    assign.setOperator(Assignment.Operator.ASSIGN);
    assign.setRightHandSide(castExpr);

    ExpressionStatement expr = onCreateDeclaration.getAST().newExpressionStatement(assign);
    insertStatementsAtOnCreateDeclaration(expr, true);
}

From source file:com.motorola.studio.android.generateviewbylayout.codegenerators.RadioButtonCodeGenerator.java

License:Apache License

/**
 * Add method handlers for RadioButtons 
 * //  www .  j  a v  a2 s. co  m
 * <br>
 * GENERATED_CODE_FORMAT:
 * <br>
 * this.$GUI_ID.setOnClickListener(onClickHandler);
 */
@SuppressWarnings("unchecked")
private void addSetOnClickListener(IProgressMonitor monitor) throws JavaModelException {
    SubMonitor subMonitor = SubMonitor.convert(monitor);
    subMonitor.beginTask(CodeUtilsNLS.JavaViewBasedOnLayoutModifier_AddingSetOnClickListener,
            codeGeneratorData.getGuiItems().size());
    /* ExpressionStatement
    expression
        MethodInvocation
            arguments handler
            methodName SimpleName(setOnClickListener)
            optionalExpression SimpleName(button1)
     */
    for (LayoutNode node : codeGeneratorData.getGuiItems()) {
        if (node.shouldInsertCode()
                && node.getNodeType().equals(LayoutNode.LayoutNodeViewType.RadioButton.name())) {
            boolean containMethodDeclared = checkIfInvokeMethodIsDeclared(node,
                    JavaViewBasedOnLayoutModifierConstants.SET_ON_CLICK_LISTENER);
            if (!containMethodDeclared) {
                SimpleName method = onCreateDeclaration.getAST()
                        .newSimpleName(JavaViewBasedOnLayoutModifierConstants.SET_ON_CLICK_LISTENER);
                SimpleName bId = onCreateDeclaration.getAST().newSimpleName(node.getNodeId());
                FieldAccess fieldAccess = onCreateDeclaration.getAST().newFieldAccess();
                fieldAccess.setExpression(onCreateDeclaration.getAST().newThisExpression());
                fieldAccess.setName(bId);

                SimpleName handler = onCreateDeclaration.getAST()
                        .newSimpleName(JavaViewBasedOnLayoutModifierConstants.HANDLER_ONCLICK_LISTENER);

                MethodInvocation mI = onCreateDeclaration.getAST().newMethodInvocation();
                mI.arguments().add(handler);
                mI.setName(method);
                mI.setExpression(fieldAccess);

                ExpressionStatement expr = onCreateDeclaration.getAST().newExpressionStatement(mI);
                if (!onCreateDeclaration.toString().contains(expr.toString())) {
                    //avoid to duplicate statement
                    insertStatementsAtOnCreateDeclaration(expr, false);
                }
            }
        }
        subMonitor.worked(1);
    }
}

From source file:de.crowdcode.kissmda.cartridges.simplejava.EnumGenerator.java

License:Apache License

/**
 * Generate constructor./*  ww w . j  av a 2 s.co  m*/
 * 
 * @param clazz
 *            UML2 class
 * @param ast
 *            JDT AST
 * @param ed
 *            EnumDeclaration JDT
 */
@SuppressWarnings("unchecked")
public void generateConstructor(Classifier clazz, AST ast, EnumDeclaration ed) {
    // Constructor
    MethodDeclaration md = ast.newMethodDeclaration();
    md.setConstructor(true);
    md.setName(ast.newSimpleName(clazz.getName()));
    md.modifiers().add(ast.newModifier(Modifier.ModifierKeyword.PRIVATE_KEYWORD));
    ed.bodyDeclarations().add(md);

    // We need to build contructor parameters for each properties
    generateContructorParameters(clazz, ast, md);

    // Content of constructor
    Block block = ast.newBlock();

    EList<Property> properties = clazz.getAttributes();
    for (Property property : properties) {
        logger.log(Level.FINE, "Class: " + clazz.getName() + " - " + "Property: " + property.getName() + " - "
                + "Property Upper: " + property.getUpper() + " - " + "Property Lower: " + property.getLower());

        // Left expression
        SimpleName simpleName = ast.newSimpleName(property.getName());
        ThisExpression thisExpression = ast.newThisExpression();
        FieldAccess fieldAccess = ast.newFieldAccess();
        fieldAccess.setName(simpleName);
        fieldAccess.setExpression(thisExpression);

        // Right expression
        SimpleName parameter = ast.newSimpleName(property.getName());

        Assignment assignment = ast.newAssignment();
        assignment.setOperator(org.eclipse.jdt.core.dom.Assignment.Operator.ASSIGN);
        assignment.setLeftHandSide(fieldAccess);
        assignment.setRightHandSide(parameter);

        // Expression
        ExpressionStatement expressionStatement = ast.newExpressionStatement(assignment);

        block.statements().add(expressionStatement);
    }

    // Set Body to MethodDeclaration
    md.setBody(block);
}

From source file:de.dentrassi.varlink.generator.JdtGenerator.java

License:Open Source License

@SuppressWarnings("unchecked")
private void createImpl(final AST ast, final CompilationUnit cu, final Interface iface, final String name) {

    // create type

    final String implName = name + "Impl";

    final TypeDeclaration td = ast.newTypeDeclaration();
    cu.types().add(td);//from  ww w . j  av a  2 s. com
    td.setName(ast.newSimpleName(implName));

    make(td, PUBLIC_KEYWORD);

    final Type parentType = ast.newSimpleType(ast.newName(name));
    td.superInterfaceTypes().add(parentType);

    // create factory

    createImplFactory(ast, td);

    // create fields

    createField(td, "de.dentrassi.varlink.spi.Connection", "connection", PRIVATE_KEYWORD, FINAL_KEYWORD);
    createField(td, "de.dentrassi.varlink.internal.VarlinkImpl", "varlink", PRIVATE_KEYWORD, FINAL_KEYWORD);

    // create constructor

    final MethodDeclaration ctor = ast.newMethodDeclaration();
    td.bodyDeclarations().add(ctor);

    ctor.setConstructor(true);
    ctor.setName(ast.newSimpleName(implName));
    make(ctor, PRIVATE_KEYWORD);

    createParameter(ctor, "de.dentrassi.varlink.spi.Connection", "connection", FINAL_KEYWORD);
    createParameter(ctor, "de.dentrassi.varlink.internal.VarlinkImpl", "varlink", FINAL_KEYWORD);

    // constructor body
    {
        final Block body = ast.newBlock();
        ctor.setBody(body);

        createThisAssignment(body, "connection");
        createThisAssignment(body, "varlink");
    }

    // error mapper

    {
        final MethodDeclaration md = ast.newMethodDeclaration();
        make(md, PUBLIC_KEYWORD);
        td.bodyDeclarations().add(md);

        md.setName(ast.newSimpleName("checkError"));
        createParameter(md, "de.dentrassi.varlink.spi.CallResponse", "response", FINAL_KEYWORD);

        final Block body = ast.newBlock();
        md.setBody(body);

        final MethodInvocation mi = ast.newMethodInvocation();
        mi.setExpression(ast.newName("de.dentrassi.varlink.spi.Errors"));
        mi.setName(ast.newSimpleName("checkErrors"));
        mi.arguments().add(ast.newSimpleName("response"));

        final ExpressionMethodReference ref = ast.newExpressionMethodReference();
        ref.setExpression(ast.newThisExpression());
        ref.setName(ast.newSimpleName("mapError"));
        mi.arguments().add(ref);

        body.statements().add(ast.newExpressionStatement(mi));
    }

    {
        final MethodDeclaration md = ast.newMethodDeclaration();
        make(md, PUBLIC_KEYWORD);
        td.bodyDeclarations().add(md);

        md.setName(ast.newSimpleName("mapError"));
        createParameter(md, "java.lang.String", "error", FINAL_KEYWORD);
        createParameter(md, "de.dentrassi.varlink.spi.CallResponse", "response", FINAL_KEYWORD);
        md.setReturnType2(ast.newSimpleType(ast.newName("java.lang.RuntimeException")));

        final Block body = ast.newBlock();
        md.setBody(body);

        final SwitchStatement sw = ast.newSwitchStatement();
        body.statements().add(sw);
        sw.setExpression(ast.newSimpleName("error"));

        errors(iface).forEach(error -> {
            final String errorName = errorTypeName(error);
            final String fullErrorName = iface.getName() + "." + errorName;

            final SwitchCase sc = ast.newSwitchCase();
            sc.setExpression(JdtHelper.newStringLiteral(ast, fullErrorName));
            sw.statements().add(sc);

            final FieldAccess fa = ast.newFieldAccess();
            fa.setExpression(ast.newThisExpression());
            fa.setName(ast.newSimpleName("varlink"));

            final MethodInvocation fromJson = ast.newMethodInvocation();
            fromJson.setExpression(fa);
            fromJson.setName(ast.newSimpleName("fromJson"));

            // type name

            final TypeLiteral typeLiteral = ast.newTypeLiteral();
            typeLiteral.setType(ast.newSimpleType(ast.newName(errorName + ".Parameters")));

            fromJson.arguments().add(typeLiteral);

            // parameters

            final MethodInvocation parameters = ast.newMethodInvocation();
            parameters.setExpression(ast.newSimpleName("response"));
            parameters.setName(ast.newSimpleName("getParameters"));
            fromJson.arguments().add(parameters);

            // new exception

            final ClassInstanceCreation cic = ast.newClassInstanceCreation();
            cic.setType(ast.newSimpleType(ast.newName(errorName)));
            cic.arguments().add(fromJson);

            // return

            final ReturnStatement ret = ast.newReturnStatement();
            ret.setExpression(cic);
            sw.statements().add(ret);
        });

        {
            final SwitchCase sc = ast.newSwitchCase();
            sc.setExpression(null);
            sw.statements().add(sc);
            final ReturnStatement ret = ast.newReturnStatement();
            ret.setExpression(ast.newNullLiteral());
            sw.statements().add(ret);
        }

    }

    // async creator

    /*
     * @Override public Async async() { return new Async() {
     *
     * @Override public CompletableFuture<List<Netdev>> list() { return
     * executeList(); } }; }
     */

    {
        final MethodDeclaration md = ast.newMethodDeclaration();
        td.bodyDeclarations().add(md);

        md.setName(ast.newSimpleName("async"));
        addSimpleAnnotation(md, "Override");
        make(md, PUBLIC_KEYWORD);

        md.setReturnType2(ast.newSimpleType(ast.newName("Async")));

        final Block body = ast.newBlock();
        md.setBody(body);

        // inner class

        final ReturnStatement ret = ast.newReturnStatement();
        body.statements().add(ret);

        final ClassInstanceCreation cic = ast.newClassInstanceCreation();
        cic.setType(ast.newSimpleType(ast.newName("Async")));
        ret.setExpression(cic);

        final AnonymousClassDeclaration acc = ast.newAnonymousClassDeclaration();
        cic.setAnonymousClassDeclaration(acc);

        forMethods(ast, iface, (m, amd) -> {

            acc.bodyDeclarations().add(amd);

            amd.setName(ast.newSimpleName(m.getName()));
            make(amd, PUBLIC_KEYWORD);
            makeAsync(amd);

            final Block asyncBody = ast.newBlock();
            amd.setBody(asyncBody);

            final ReturnStatement asyncRet = ast.newReturnStatement();
            asyncBody.statements().add(asyncRet);

            final MethodInvocation mi = ast.newMethodInvocation();
            mi.setName(ast.newSimpleName(internalMethodName(m.getName())));

            for (final String argName : m.getParameters().keySet()) {
                mi.arguments().add(ast.newSimpleName(argName));
            }

            asyncRet.setExpression(mi);
        });

    }

    // internal methods

    forMethods(ast, iface, (m, md) -> {
        make(md, PROTECTED_KEYWORD);
        td.bodyDeclarations().add(md);
        md.setName(ast.newSimpleName(internalMethodName(m.getName())));
        makeAsync(md);
        createInternalMethod(td, m, md);
    });

}

From source file:de.dentrassi.varlink.generator.JdtGenerator.java

License:Open Source License

@SuppressWarnings("unchecked")
private void createInternalMethod(final TypeDeclaration parentTypeDeclaration, final MethodInformation m,
        final MethodDeclaration md) {
    final AST ast = md.getAST();

    final Block body = ast.newBlock();
    md.setBody(body);/*  w ww.  j  a  v a 2  s  .  c  o  m*/

    /*
     * return this.connection.call(CallRequest.of("io.systemd.network.List"))
     * .thenApply(cr -> { check(cr);
     *
     * final Iterator<JsonElement> i = cr.getParameters().values().iterator();
     *
     * return asList( this.varlink .fromJson( Netdev[].class, i.next())); }); }
     */

    // add arguments

    if (!m.getParameters().isEmpty()) {

        // code: Map<String,Object> parameters = new HashMap<> ();

        final VariableDeclarationFragment parameters = ast.newVariableDeclarationFragment();
        parameters.setName(ast.newSimpleName("parameters"));

        final VariableDeclarationStatement decl = ast.newVariableDeclarationStatement(parameters);
        body.statements().add(decl);
        final ParameterizedType map = ast.newParameterizedType(ast.newSimpleType(ast.newName("java.util.Map")));
        map.typeArguments().add(ast.newSimpleType(ast.newName("java.lang.String")));
        map.typeArguments().add(ast.newSimpleType(ast.newName("java.lang.Object")));

        decl.setType(map);

        final ClassInstanceCreation init = ast.newClassInstanceCreation();
        init.setType(ast.newParameterizedType(ast.newSimpleType(ast.newName("java.util.HashMap"))));
        init.arguments().add(ast.newNumberLiteral(Integer.toString(m.getParameters().size())));
        parameters.setInitializer(init);

        for (final String argName : m.getParameters().keySet()) {
            final MethodInvocation mi = ast.newMethodInvocation();
            mi.setExpression(ast.newSimpleName("parameters"));
            mi.setName(ast.newSimpleName("put"));

            mi.arguments().add(JdtHelper.newStringLiteral(ast, argName));
            mi.arguments().add(ast.newSimpleName(argName));
        }

    }

    // return

    final ReturnStatement ret = ast.newReturnStatement();
    body.statements().add(ret);

    final MethodInvocation mi = ast.newMethodInvocation();
    mi.setName(ast.newSimpleName("call"));
    final FieldAccess fa = ast.newFieldAccess();
    fa.setExpression(ast.newThisExpression());
    fa.setName(ast.newSimpleName("connection"));
    mi.setExpression(fa);

    final MethodInvocation cr = ast.newMethodInvocation();
    cr.setExpression(ast.newName("de.dentrassi.varlink.spi.CallRequest"));
    cr.setName(ast.newSimpleName("of"));
    cr.arguments().add(newStringLiteral(ast, m.getInterface().getName() + "." + toUpperFirst(m.getName())));

    if (!m.getParameters().isEmpty()) {
        cr.arguments().add(ast.newSimpleName("parameters"));
    }

    mi.arguments().add(cr);

    final MethodInvocation thenApply = ast.newMethodInvocation();
    thenApply.setName(ast.newSimpleName("thenApply"));
    thenApply.setExpression(mi);

    // add transformation

    final LambdaExpression le = ast.newLambdaExpression();
    le.setParentheses(false);
    thenApply.arguments().add(le);
    final VariableDeclarationFragment p = ast.newVariableDeclarationFragment();
    p.setName(ast.newSimpleName("result"));
    le.parameters().add(p);
    final Block transform = ast.newBlock();
    le.setBody(transform);

    {
        // check result

        final MethodInvocation check = ast.newMethodInvocation();
        check.setName(ast.newSimpleName("checkError"));
        transform.statements().add(ast.newExpressionStatement(check));
        check.arguments().add(ast.newSimpleName("result"));
    }

    if (m.getReturnTypes().isEmpty()) {

        final ReturnStatement transformRet = ast.newReturnStatement();
        transformRet.setExpression(ast.newNullLiteral());
        transform.statements().add(transformRet);

    } else {

        final int returns = m.getReturnTypes().size();

        if (returns > 0) {

            // return this.varlink.fromJson(DriveCondition.class, result.getParameters());
            // return this.varlink.fromJson(DriveCondition.class,
            // result.getFirstParameter());

            final FieldAccess varlink = ast.newFieldAccess();
            varlink.setExpression(ast.newThisExpression());
            varlink.setName(ast.newSimpleName("varlink"));

            final MethodInvocation fromJson = ast.newMethodInvocation();
            fromJson.setExpression(varlink);
            fromJson.setName(ast.newSimpleName("fromJson"));

            // FIXME: add to parent
            {
                final ParameterizedType ttt = ast
                        .newParameterizedType(ast.newSimpleType(ast.newName(TYPE_TOKEN_TYPE_NAME)));

                ttt.typeArguments().add(m.createMainReturnType(ast));
                final ClassInstanceCreation tt = ast.newClassInstanceCreation();
                tt.setType(JdtHelper.copyNode(ast, ttt));

                final AnonymousClassDeclaration decl = ast.newAnonymousClassDeclaration();
                tt.setAnonymousClassDeclaration(decl);

                final MethodInvocation getType = ast.newMethodInvocation();
                getType.setExpression(tt);
                getType.setName(ast.newSimpleName("getType"));

                final VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment();
                vdf.setName(ast.newSimpleName(m.getName() + "_returnTypeToken"));
                vdf.setInitializer(getType);
                final FieldDeclaration fd = ast.newFieldDeclaration(vdf);
                fd.setType(ast.newSimpleType(ast.newName("java.lang.reflect.Type")));
                make(fd, PRIVATE_KEYWORD, FINAL_KEYWORD, STATIC_KEYWORD);

                parentTypeDeclaration.bodyDeclarations().add(fd);
            }

            fromJson.arguments().add(ast.newSimpleName(m.getName() + "_returnTypeToken"));

            // json fragment

            final MethodInvocation fragment = ast.newMethodInvocation();
            if (returns == 1) {
                fragment.setName(ast.newSimpleName("getFirstParameter"));
            } else {
                fragment.setName(ast.newSimpleName("getParameters"));
            }
            fragment.setExpression(ast.newSimpleName("result"));

            fromJson.arguments().add(fragment);

            // return

            final ReturnStatement transformRet = ast.newReturnStatement();
            transformRet.setExpression(fromJson);
            transform.statements().add(transformRet);
        }

        // FIXME: handle return type

        // FIXME: handle n

    }

    // set return

    ret.setExpression(thenApply);
}

From source file:de.dentrassi.varlink.generator.JdtGenerator.java

License:Open Source License

@SuppressWarnings("unchecked")
private void createType(final TypeDeclaration parent, final String parentName, final TypeAliasDefinition type) {
    final AST ast = parent.getAST();

    if (type instanceof de.dentrassi.varlink.idl.varlinkIdl.Object) {

        final TypeDeclaration td = ast.newTypeDeclaration();
        parent.bodyDeclarations().add(td);

        td.setName(ast.newSimpleName(toUpperFirst(parentName)));
        make(td, PUBLIC_KEYWORD, STATIC_KEYWORD);

        final de.dentrassi.varlink.idl.varlinkIdl.Object o = (de.dentrassi.varlink.idl.varlinkIdl.Object) type;

        for (final Field field : o.getFields()) {

            final String name = toLowerFirst(field.getName());

            // create enum type

            if (field.getType() instanceof de.dentrassi.varlink.idl.varlinkIdl.Enum) {
                final de.dentrassi.varlink.idl.varlinkIdl.Enum en = (de.dentrassi.varlink.idl.varlinkIdl.Enum) field
                        .getType();// www.  j av  a  2  s .  co m
                createEnum(td, toUpperFirst(name), en.getFields());
            }

            // created nested type
            if (field.getType() instanceof Object) {
                createType(td, field.getName(), (Object) field.getType());
            }

            // create field

            {
                final VariableDeclarationFragment vdf = ast.newVariableDeclarationFragment();
                vdf.setName(ast.newSimpleName(name));
                final FieldDeclaration fd = ast.newFieldDeclaration(vdf);
                fd.setType(asType(ast, null, field));
                make(fd, PRIVATE_KEYWORD);

                td.bodyDeclarations().add(fd);
            }

            // create getter

            {
                final MethodDeclaration md = createGetter(ast, asType(ast, null, field), name);
                td.bodyDeclarations().add(md);
            }

            // create setter

            {
                final MethodDeclaration md = ast.newMethodDeclaration();
                md.setName(ast.newSimpleName("set" + toUpperFirst(name)));
                td.bodyDeclarations().add(md);
                make(md, PUBLIC_KEYWORD);

                final SingleVariableDeclaration svd = ast.newSingleVariableDeclaration();
                svd.setName(ast.newSimpleName(name));
                svd.setType(asType(ast, null, field));

                md.parameters().add(svd);

                final Block body = ast.newBlock();
                md.setBody(body);

                final FieldAccess fa = ast.newFieldAccess();
                fa.setExpression(ast.newThisExpression());
                fa.setName(ast.newSimpleName(name));

                final Assignment ass = ast.newAssignment();
                ass.setLeftHandSide(fa);
                ass.setRightHandSide(ast.newSimpleName(name));

                body.statements().add(ast.newExpressionStatement(ass));

            }

        }

    } else if (type instanceof de.dentrassi.varlink.idl.varlinkIdl.Enum) {

        // FIXME: create enums
    }
}

From source file:de.dentrassi.varlink.generator.util.JdtHelper.java

License:Open Source License

public static void createThisAssignment(final Block body, final String name) {
    final AST ast = body.getAST();
    final Assignment as = ast.newAssignment();
    final FieldAccess fa = ast.newFieldAccess();
    fa.setExpression(ast.newThisExpression());
    fa.setName(ast.newSimpleName(name));
    as.setLeftHandSide(fa);//from   w  w  w.ja  v  a 2  s.  c  om
    as.setRightHandSide(ast.newSimpleName(name));
    body.statements().add(ast.newExpressionStatement(as));
}