Example usage for org.eclipse.jdt.core.dom AST newNumberLiteral

List of usage examples for org.eclipse.jdt.core.dom AST newNumberLiteral

Introduction

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

Prototype

public NumberLiteral newNumberLiteral(String literal) 

Source Link

Document

Creates and returns a new unparented number literal node.

Usage

From source file:ch.acanda.eclipse.pmd.java.resolution.optimization.SimplifyStartsWithQuickFix.java

License:Open Source License

/**
 * Rewrites <code>s.startsWith("a")</code> as <code>s.charAt(0) == 'a'</code>.
 *///from w  ww  . j a  v  a 2  s .c o m
@Override
@SuppressWarnings("unchecked")
protected boolean apply(final MethodInvocation node) {
    final AST ast = node.getAST();

    final MethodInvocation charAt = ast.newMethodInvocation();
    charAt.setExpression(copy(node.getExpression()));
    charAt.setName(ast.newSimpleName("charAt"));
    charAt.arguments().add(ast.newNumberLiteral("0"));

    final CharacterLiteral character = ast.newCharacterLiteral();
    final StringLiteral s = (StringLiteral) node.arguments().get(0);
    character.setEscapedValue(s.getEscapedValue().replace('"', '\''));

    final InfixExpression eq = ast.newInfixExpression();
    eq.setOperator(Operator.EQUALS);
    eq.setLeftOperand(charAt);
    eq.setRightOperand(character);

    replace(node, eq);
    return true;
}

From source file:cn.ieclipse.adt.ext.jdt.SourceGenerator.java

License:Apache License

private static void rewriteOnCreate(CompilationUnit unit, String dbName, List<String> tableCreators) {
    AST ast = unit.getAST();
    TypeDeclaration type = (TypeDeclaration) unit.types().get(0);
    MethodDeclaration onCreate = getMethod(type, ("onCreate"), null);
    if (onCreate != null) {
        Block methodBlock = ast.newBlock();

        // mOpenHelper = new
        // InlineOpenHelper(this.getContext(),"person.db",null,1);
        Assignment a = ast.newAssignment();
        a.setOperator(Assignment.Operator.ASSIGN);

        a.setLeftHandSide(ast.newSimpleName("mOpenHelper"));

        ClassInstanceCreation cc = ast.newClassInstanceCreation();
        cc.setType(ast.newSimpleType(ast.newSimpleName("SQLiteOpenHelper")));
        ThisExpression thisExp = ast.newThisExpression();
        MethodInvocation mi = ast.newMethodInvocation();
        mi.setName(ast.newSimpleName("getContext"));
        mi.setExpression(thisExp);//from   w w w  . ja  v  a 2 s.co m
        cc.arguments().add(mi);
        StringLiteral sl = ast.newStringLiteral();
        sl.setLiteralValue(dbName);

        cc.arguments().add(sl);
        cc.arguments().add(ast.newNullLiteral());
        cc.arguments().add(ast.newNumberLiteral("1"));
        a.setRightHandSide(cc);
        methodBlock.statements().add(ast.newExpressionStatement(a));

        AnonymousClassDeclaration acd = ast.newAnonymousClassDeclaration();
        cc.setAnonymousClassDeclaration(acd);
        genInnerSQLiteOpenHelper(acd, ast, tableCreators);

        a = ast.newAssignment();
        a.setOperator(Assignment.Operator.ASSIGN);

        a.setLeftHandSide(ast.newSimpleName("session"));

        ClassInstanceCreation cic = ast.newClassInstanceCreation();
        cic.setType(ast.newSimpleType(ast.newSimpleName("Session")));

        // SingleVariableDeclaration svd =
        // ast.newSingleVariableDeclaration();
        // svd.setName(ast.newSimpleName("mOpenHelper"));
        cic.arguments().add(ast.newSimpleName("mOpenHelper"));
        // vdf.setInitializer(cic);
        a.setRightHandSide(cic);
        // methodBlock.statements().add(vde);
        methodBlock.statements().add(ast.newExpressionStatement(a));

        ReturnStatement returnStmt = ast.newReturnStatement();
        returnStmt.setExpression(ast.newBooleanLiteral(true));
        methodBlock.statements().add(returnStmt);

        onCreate.setBody(methodBlock);
    }
}

From source file:com.android.ide.eclipse.adt.internal.lint.AddSuppressAnnotation.java

License:Open Source License

private Expression createLiteral(AST ast) {
    Expression value;//from  w w w  . j  ava  2 s. co  m
    if (!isCodeName()) {
        value = ast.newQualifiedName(ast.newQualifiedName(ast.newSimpleName("Build"), //$NON-NLS-1$
                ast.newSimpleName("VERSION_CODES")), //$NON-NLS-1$
                ast.newSimpleName(mTargetApi));
    } else {
        value = ast.newNumberLiteral(mTargetApi);
    }
    return value;
}

From source file:com.android.ide.eclipse.auidt.internal.lint.AddSuppressAnnotation.java

License:Open Source License

@SuppressWarnings({ "rawtypes" }) // Java AST API has raw types
private MultiTextEdit addTargetApiAnnotation(IDocument document, ICompilationUnit compilationUnit,
        BodyDeclaration declaration) throws CoreException {
    List modifiers = declaration.modifiers();
    SingleMemberAnnotation existing = null;
    for (Object o : modifiers) {
        if (o instanceof SingleMemberAnnotation) {
            SingleMemberAnnotation annotation = (SingleMemberAnnotation) o;
            String type = annotation.getTypeName().getFullyQualifiedName();
            if (type.equals(FQCN_TARGET_API) || type.endsWith(TARGET_API)) {
                existing = annotation;/*from  w w  w.jav a 2  s.c o  m*/
                break;
            }
        }
    }

    ImportRewrite importRewrite = ImportRewrite.create(compilationUnit, true);
    String local = importRewrite.addImport(FQCN_TARGET_API);
    AST ast = declaration.getAST();
    ASTRewrite rewriter = ASTRewrite.create(ast);
    if (existing == null) {
        SingleMemberAnnotation newAnnotation = ast.newSingleMemberAnnotation();
        newAnnotation.setTypeName(ast.newSimpleName(local));
        NumberLiteral value = ast.newNumberLiteral(Integer.toString(mTargetApi));
        //value.setLiteralValue(mId);
        newAnnotation.setValue(value);
        ListRewrite listRewrite = rewriter.getListRewrite(declaration, declaration.getModifiersProperty());
        listRewrite.insertFirst(newAnnotation, null);
    } else {
        Expression existingValue = existing.getValue();
        if (existingValue instanceof NumberLiteral) {
            // Change the value to the new value
            NumberLiteral value = ast.newNumberLiteral(Integer.toString(mTargetApi));
            rewriter.set(existing, VALUE_PROPERTY, value, null);
        } else {
            assert false : existingValue;
            return null;
        }
    }

    TextEdit importEdits = importRewrite.rewriteImports(new NullProgressMonitor());
    TextEdit annotationEdits = rewriter.rewriteAST(document, null);
    MultiTextEdit edit = new MultiTextEdit();
    if (importEdits.hasChildren()) {
        edit.addChild(importEdits);
    }
    edit.addChild(annotationEdits);

    return edit;
}

From source file:com.google.devtools.j2cpp.translate.AnonymousClassConverter.java

License:Open Source License

/**
 * Returns a literal node for a specified constant value.
 *//*ww w.ja  v a 2 s.c o m*/
private Expression makeLiteral(Object value, String typeName, AST ast) {
    Expression literal;
    if (value instanceof Boolean) {
        literal = ast.newBooleanLiteral((Boolean) value);
    } else if (value instanceof Character) {
        CharacterLiteral c = ast.newCharacterLiteral();
        c.setCharValue((Character) value);
        literal = c;
    } else if (value instanceof Number) {
        literal = ast.newNumberLiteral(value.toString());
    } else if (value instanceof String) {
        StringLiteral s = ast.newStringLiteral();
        s.setLiteralValue((String) value);
        literal = s;
    } else {
        throw new AssertionError("unknown constant type");
    }
    ITypeBinding type = ast.resolveWellKnownType(typeName);
    assert type != null : "unknown constant type";
    Types.addBinding(literal, type);
    return literal;
}

From source file:com.google.devtools.j2cpp.translate.DeadCodeEliminator.java

License:Open Source License

/**
 * Creates an Expression with a suitable zero-value for the specified type.
 * TODO(user): this doesn't take into account @NonNull annotations.
 *///from w  ww  . ja v a2 s  .c  o m
private Expression getDefaultValue(AST ast, ITypeBinding type) {
    if (type.isPrimitive()) {
        if (type.getName().equals("boolean")) {
            return ast.newBooleanLiteral(false);
        }
        // All primitives types except boolean can be initialized as "0".
        return ast.newNumberLiteral("0");
    } else {
        return ast.newNullLiteral();
    }
}

From source file:com.google.devtools.j2cpp.translate.Rewriter.java

License:Open Source License

/**
 * Convert an array initializer into a init method on the equivalent
 * IOSArray. This init method takes a C array and count, like
 * NSArray.arrayWithObjects:count:. For example, "int[] a = { 1, 2, 3 };"
 * translates to "[IOSIntArray initWithInts:(int[]){ 1, 2, 3 } count:3];".
 *//*from  ww w .  j a va 2s.  c o  m*/
private MethodInvocation createIOSArrayInitializer(ITypeBinding arrayType, ArrayInitializer arrayInit) {
    AST ast = arrayInit.getAST();

    int dimensions = arrayType.getDimensions();
    ITypeBinding componentType;
    IOSArrayTypeBinding iosArrayBinding;
    if (dimensions > 2) {
        // This gets resolved into IOSObjectArray, for an array of arrays.
        componentType = iosArrayBinding = Types.resolveArrayType(arrayType);
    } else if (dimensions == 2) {
        // Creates a single-dimension array type.
        componentType = Types.resolveArrayType(arrayType.getElementType());
        iosArrayBinding = Types.resolveArrayType(componentType);
    } else {
        componentType = Types.getTypeBinding(arrayInit).getComponentType();
        iosArrayBinding = Types.resolveArrayType(componentType);
    }

    // Create IOS message.
    MethodInvocation message = ast.newMethodInvocation();
    SimpleName receiver = ast.newSimpleName(iosArrayBinding.getName());
    Types.addBinding(receiver, iosArrayBinding);
    message.setExpression(receiver);
    String methodName = iosArrayBinding.getInitMethod();
    SimpleName messageName = ast.newSimpleName(methodName);
    GeneratedMethodBinding methodBinding = new GeneratedMethodBinding(methodName,
            Modifier.PUBLIC | Modifier.STATIC, iosArrayBinding, iosArrayBinding, false, false, true);
    Types.addBinding(messageName, methodBinding);
    message.setName(messageName);
    Types.addBinding(message, methodBinding);

    // Pass array initializer as C-style array to message.
    @SuppressWarnings("unchecked")
    List<Expression> args = message.arguments(); // safe by definition
    ArrayInitializer newArrayInit = NodeCopier.copySubtree(ast, arrayInit);
    @SuppressWarnings("unchecked")
    List<Expression> exprs = newArrayInit.expressions();
    for (int i = 0; i < exprs.size(); i++) {
        // Convert any elements that are also array initializers.
        Expression expr = exprs.get(i);
        if (expr instanceof ArrayInitializer) {
            exprs.set(i, createIOSArrayInitializer(componentType, (ArrayInitializer) expr));
        }
    }
    args.add(newArrayInit);
    GeneratedVariableBinding argBinding = new GeneratedVariableBinding(arrayType, false, true, null,
            methodBinding);
    methodBinding.addParameter(argBinding);
    NumberLiteral arraySize = ast.newNumberLiteral(Integer.toString(arrayInit.expressions().size()));
    Types.addBinding(arraySize, ast.resolveWellKnownType("int"));
    args.add(arraySize);
    argBinding = new GeneratedVariableBinding(ast.resolveWellKnownType("int"), false, true, null,
            methodBinding);
    methodBinding.addParameter(argBinding);

    // Specify type for object arrays.
    if (iosArrayBinding.getName().equals("IOSObjectArray")) {
        TypeLiteral typeLiteral = ast.newTypeLiteral();
        typeLiteral.setType(Types.makeType(componentType));
        Types.addBinding(typeLiteral, Types.getIOSClass());
        args.add(typeLiteral);
        argBinding = new GeneratedVariableBinding("type", 0, Types.getIOSClass(), false, true, null,
                methodBinding);
        methodBinding.addParameter(argBinding);
    }

    return message;
}

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

License:Apache License

public static NumberLiteral newNumberLiteral(AST ast, String token, String type) {
    NumberLiteral literal = ast.newNumberLiteral(token);
    Types.addBinding(literal, ast.resolveWellKnownType(type));
    return literal;
}

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

License:Apache License

private static Expression makeLiteralInternal(AST ast, Object value) {
    if (value instanceof Boolean) {
        return ast.newBooleanLiteral((Boolean) value);
    } else if (value instanceof Character) {
        CharacterLiteral c = ast.newCharacterLiteral();
        c.setCharValue((Character) value);
        return c;
    } else if (value instanceof Number) {
        return ast.newNumberLiteral(value.toString());
    } else if (value instanceof String) {
        StringLiteral s = ast.newStringLiteral();
        s.setLiteralValue((String) value);
        return s;
    }//  ww w.  ja v  a 2 s.  c om
    throw new AssertionError("unknown constant type");
}

From source file:com.halware.nakedide.eclipse.ext.annot.utils.AstUtils.java

License:Open Source License

/**
 * Creates an (AST) {@link Literal} expression.
 * //www .  j  ava 2  s.c om
 * @param ast
 * @param value
 * @return
 */
public static Expression createExpression(AST ast, Object value) {
    if (value instanceof String) {
        String stringValue = (String) value;
        StringLiteral newStringLiteral = ast.newStringLiteral();
        newStringLiteral.setLiteralValue(stringValue);
        return newStringLiteral;
    }
    if (value instanceof Boolean) {
        Boolean booleanValue = (Boolean) value;
        return ast.newBooleanLiteral(booleanValue);
    }
    if (value instanceof Number) {
        Number numberValue = (Number) value;
        return ast.newNumberLiteral(numberValue.toString());
    }
    if (value instanceof AstUtils.TypeLiteralValue) {
        AstUtils.TypeLiteralValue classHandle = (AstUtils.TypeLiteralValue) value;
        TypeLiteral newTypeLiteral = ast.newTypeLiteral();

        Name typeName = ast.newName(classHandle.getClassName());
        Type type = ast.newSimpleType(typeName);
        newTypeLiteral.setType(type);
        return newTypeLiteral;
    }
    if (value instanceof AstUtils.QualifiedNameValue) {
        AstUtils.QualifiedNameValue enumMember = (AstUtils.QualifiedNameValue) value;
        Name enumTypeName = ast.newName(enumMember.getName());
        SimpleName enumMemberName = ast.newSimpleName(enumMember.getIdentifier());
        return ast.newQualifiedName(enumTypeName, enumMemberName);
    }
    return ast.newNullLiteral();
}