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

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

Introduction

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

Prototype

public void setName(SimpleName typeName) 

Source Link

Document

Sets the name of the type declared in this type declaration to the given name.

Usage

From source file:org.eclipse.jdt.core.dom.ASTConverter.java

License:Open Source License

private AnnotationTypeDeclaration convertToAnnotationDeclaration(
        org.eclipse.jdt.internal.compiler.ast.TypeDeclaration typeDeclaration) {
    checkCanceled();/*  w  ww  .j a  v a 2  s.  c om*/
    if (this.scanner.sourceLevel < ClassFileConstants.JDK1_5)
        return null;
    AnnotationTypeDeclaration typeDecl = this.ast.newAnnotationTypeDeclaration();
    setModifiers(typeDecl, typeDeclaration);
    final SimpleName typeName = new SimpleName(this.ast);
    typeName.internalSetIdentifier(new String(typeDeclaration.name));
    typeName.setSourceRange(typeDeclaration.sourceStart,
            typeDeclaration.sourceEnd - typeDeclaration.sourceStart + 1);
    typeDecl.setName(typeName);
    typeDecl.setSourceRange(typeDeclaration.declarationSourceStart,
            typeDeclaration.bodyEnd - typeDeclaration.declarationSourceStart + 1);

    buildBodyDeclarations(typeDeclaration, typeDecl, false);
    // The javadoc comment is now got from list store in compilation unit declaration
    if (this.resolveBindings) {
        recordNodes(typeDecl, typeDeclaration);
        recordNodes(typeName, typeDeclaration);
        typeDecl.resolveBinding();
    }
    return typeDecl;
}

From source file:org.spoofax.interpreter.adapter.ecj.ECJFactory.java

License:LGPL

@SuppressWarnings({ "unchecked", "rawtypes" })
private IStrategoAppl constructASTNode(IStrategoConstructor ctr, IStrategoTerm[] kids) {
    int index = ctorNameToIndex(ctr);
    switch (index) {
    case ANNOTATION_TYPE_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isExtendedModifierList(kids[1])
                || !isSimpleName(kids[2]) || !isBodyDeclarationList(kids[3]))
            return null;
        AnnotationTypeDeclaration x = ast.newAnnotationTypeDeclaration();
        if (isNone(kids[0]))
            x.setJavadoc(null);//  ww w.j  a  va  2 s  .c  o  m
        else
            x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asExtendedModifierList(kids[1]));
        x.setName(asSimpleName(kids[2]));
        x.bodyDeclarations().addAll(asBodyDeclarationList(kids[3]));
        return wrap(x);
    }
    case ANNOTATION_TYPE_MEMBER_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isModifierList(kids[1]) || !isType(kids[2])
                || !isSimpleName(kids[3]) || (!isExpression(kids[4]) && !isNone(kids[4])))
            return null;
        AnnotationTypeMemberDeclaration x = ast.newAnnotationTypeMemberDeclaration();
        x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asModifierList(kids[1]));
        x.setType(asType(kids[2]));
        x.setName(asSimpleName(kids[3]));
        if (isNone(kids[4]))
            x.setDefault(null);
        else
            x.setDefault(asExpression(kids[4]));
        return wrap(x);
    }
    case ANONYMOUS_CLASS_DECLARATION: {
        if (!isBodyDeclarationList(kids[0]))
            return null;
        AnonymousClassDeclaration x = ast.newAnonymousClassDeclaration();
        x.bodyDeclarations().addAll(asBodyDeclarationList(kids[0]));
        return wrap(x);
    }
    case ARRAY_ACCESS: {
        if (!isExpression(kids[0]) || !isExpression(kids[1]))
            return null;
        ArrayAccess x = ast.newArrayAccess();
        x.setArray(asExpression(kids[0]));
        x.setIndex(asExpression(kids[1]));
        return wrap(x);
    }
    case ARRAY_CREATION: {
        if (!isArrayType(kids[0]) || !isExpressionList(kids[1])
                || (!isArrayInitializer(kids[2]) && !isNone(kids[2])))
            return null;
        ArrayCreation x = ast.newArrayCreation();
        x.setType(asArrayType(kids[0]));
        x.dimensions().addAll(asExpressionList(kids[1]));
        if (isNone(kids[2]))
            x.setInitializer(null);
        else
            x.setInitializer(asArrayInitializer(kids[2]));
        return wrap(x);
    }
    case ARRAY_INITIALIZER: {
        if (!isExpressionList(kids[0]))
            return null;
        ArrayInitializer x = ast.newArrayInitializer();
        x.expressions().addAll(asExpressionList(kids[0]));
        return wrap(x);
    }
    case ARRAY_TYPE: {
        if (!isType(kids[0]) || !isInt(kids[1]) || !isType(kids[2]))
            return null;
        ArrayType x = ast.newArrayType(asType(kids[2]), asInt(kids[1]));
        x.setComponentType(asType(kids[0]));
        return wrap(x);
    }
    case ASSERT_STATEMENT: {
        if (!isExpression(kids[0]) || !(isExpression(kids[1]) || isNone(kids[1])))
            return null;
        AssertStatement x = ast.newAssertStatement();
        x.setExpression(asExpression(kids[0]));
        if (isNone(kids[1]))
            x.setMessage(null);
        else
            x.setMessage(asExpression(kids[1]));
        return wrap(x);
    }
    case ASSIGNMENT: {
        if (!isAssignmentOperator(kids[0]) || !isExpression(kids[1]) || !isExpression(kids[2]))
            return null;
        Assignment x = ast.newAssignment();
        x.setOperator(asAssignmentOperator(kids[0]));
        x.setLeftHandSide(asExpression(kids[1]));
        x.setRightHandSide(asExpression(kids[2]));
        return wrap(x);
    }
    case ASSIGNMENT_OPERATOR: {
        if (!isString(kids[0]))
            return null;
        return wrap(Assignment.Operator.toOperator(asString(kids[0])));
    }
    case BLOCK: {
        if (!isStatementList(kids[0]))
            return null;
        Block x = ast.newBlock();
        x.statements().addAll(asStatementList(kids[0]));
        return wrap(x);
    }
    case BLOCK_COMMENT: {
        BlockComment x = ast.newBlockComment();
        return wrap(x);
    }
    case BOOLEAN_LITERAL: {
        if (!isInt(kids[0]))
            return null;
        return wrap(ast.newBooleanLiteral(asInt(kids[0]) == 1));
    }
    case BOOLEAN_TYPE: {
        return wrap(ast.newPrimitiveType(PrimitiveType.BOOLEAN));
    }
    case BREAK_STATEMENT: {
        if (!isSimpleName(kids[0]) && !isNone(kids[0]))
            return null;
        BreakStatement x = ast.newBreakStatement();
        if (isNone(kids[0]))
            x.setLabel(null);
        else
            x.setLabel(asSimpleName(kids[0]));
        return wrap(x);
    }
    case BYTE_TYPE: {
        return wrap(ast.newPrimitiveType(PrimitiveType.BYTE));
    }
    case CAST_EXPRESSION: {
        if (!isType(kids[0]) || !isExpression(kids[1]))
            return null;
        CastExpression x = ast.newCastExpression();
        x.setType(asType(kids[0]));
        x.setExpression(asExpression(kids[1]));
        return wrap(x);
    }
    case CATCH_CLAUSE: {
        if (!isSingleVariableDeclaration(kids[0]) || !isBlock(kids[1]))
            return null;
        CatchClause x = ast.newCatchClause();
        x.setException(asSingleVariableDeclaration(kids[0]));
        x.setBody(asBlock(kids[1]));
        return wrap(x);
    }
    case CHARACTER_LITERAL: {
        if (!isInt(kids[0]))
            return null;
        CharacterLiteral x = ast.newCharacterLiteral();
        x.setCharValue((char) asInt(kids[0]));
        return wrap(x);
    }
    case CLASS_INSTANCE_CREATION: {
        if ((!isExpression(kids[0]) && !isNone(kids[0])) || !isType(kids[1])
                || (!isAnonymousClassDeclaration(kids[2]) && !isNone(kids[2])) || !isExpressionList(kids[3]))
            return null;
        ClassInstanceCreation x = ast.newClassInstanceCreation();
        if (isNone(kids[0]))
            x.setExpression(null);
        else
            x.setExpression(asExpression(kids[0]));
        x.setType(asType(kids[1]));
        if (isNone(kids[2]))
            x.setAnonymousClassDeclaration(null);
        else
            x.setAnonymousClassDeclaration(asAnonymousClassDeclaration(kids[2]));
        x.arguments().addAll(asExpressionList(kids[3]));
        return wrap(x);
    }
    case COMPILATION_UNIT: {
        if ((!isPackageDeclaration(kids[0]) && !isNone(kids[0])) || !isImportDeclarationList(kids[1])
                || !isAbstractTypeDeclarationList(kids[2]))
            return null;
        CompilationUnit x = ast.newCompilationUnit();
        if (isNone(kids[0]))
            x.setPackage(null);
        else
            x.setPackage(asPackageDeclaration(kids[0]));
        x.imports().addAll(asImportDeclarationList(kids[1]));
        x.types().addAll(asAbstractTypeDeclarationList(kids[2]));
        return wrap(x);
    }
    case CONDITIONAL_EXPRESSION: {
        if (!isExpression(kids[0]) || !isExpression(kids[1]) || !isExpression(kids[2]))
            return null;
        ConditionalExpression x = ast.newConditionalExpression();
        x.setExpression(asExpression(kids[0]));
        x.setThenExpression(asExpression(kids[1]));
        x.setElseExpression(asExpression(kids[2]));
        return wrap(x);
    }
    case CONSTRUCTOR_INVOCATION: {
        if (!isExpressionList(kids[0]))
            return null;
        ConstructorInvocation x = ast.newConstructorInvocation();
        x.arguments().addAll(asExpressionList(kids[0]));
        return wrap(x);
    }
    case CONTINUE_STATEMENT: {
        if (!isSimpleName(kids[0]) && !isNone(kids[0]))
            return null;
        ContinueStatement x = ast.newContinueStatement();
        if (isNone(kids[0]))
            x.setLabel(null);
        else
            x.setLabel(asSimpleName(kids[0]));
        return wrap(x);
    }
    case DO_STATEMENT: {
        DoStatement x = ast.newDoStatement();
        x.setExpression(asExpression(kids[0]));
        x.setBody(asStatement(kids[1]));
        return wrap(x);
    }
    case DOUBLE_TYPE: {
        return wrap(ast.newPrimitiveType(PrimitiveType.DOUBLE));
    }
    case EMPTY_STATEMENT: {
        return wrap(ast.newEmptyStatement());
    }
    case ENHANCED_FOR_STATEMENT: {
        if (!isSingleVariableDeclaration(kids[0]) || !isExpression(kids[1]) || !isStatement(kids[2]))
            return null;
        EnhancedForStatement x = ast.newEnhancedForStatement();
        x.setParameter(asSingleVariableDeclaration(kids[0]));
        x.setExpression(asExpression(kids[1]));
        x.setBody(asStatement(kids[2]));
        return wrap(x);
    }
    case ENUM_CONSTANT_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isModifierList(kids[1]) || !isSimpleName(kids[2])
                || !isExpressionList(kids[3]) || !isAnonymousClassDeclaration(kids[4]))
            return null;
        EnumConstantDeclaration x = ast.newEnumConstantDeclaration();
        if (isNone(kids[0]))
            x.setJavadoc(null);
        else
            x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asModifierList(kids[1]));
        x.setName(asSimpleName(kids[2]));
        x.arguments().addAll(asExpressionList(kids[3]));
        x.setAnonymousClassDeclaration(asAnonymousClassDeclaration(kids[4]));
        return wrap(x);
    }
    case ENUM_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isModifierList(kids[1]) || !isSimpleName(kids[2])
                || !isTypeList(kids[3]) || !isEnumConstantDeclarationList(kids[4])
                || !isBodyDeclarationList(kids[5]))
            return null;
        EnumDeclaration x = ast.newEnumDeclaration();
        if (isNone(kids[0]))
            x.setJavadoc(null);
        else
            x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asModifierList(kids[1]));
        x.setName(asSimpleName(kids[2]));
        x.superInterfaceTypes().addAll(asTypeList(kids[3]));
        x.enumConstants().addAll(asEnumConstantDeclarationList(kids[4]));
        x.bodyDeclarations().addAll(asBodyDeclarationList(kids[5]));
        return wrap(x);
    }
    case EXPRESSION_STATEMENT: {
        if (!isExpression(kids[0]))
            return null;
        return wrap(ast.newExpressionStatement(asExpression(kids[0])));
    }
    case FIELD_ACCESS: {
        if (!isExpression(kids[0]) || !isSimpleName(kids[1]))
            return null;
        FieldAccess x = ast.newFieldAccess();
        x.setExpression(asExpression(kids[0]));
        x.setName(asSimpleName(kids[1]));
        return wrap(x);
    }
    case FIELD_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isModifierList(kids[1]) || !isType(kids[2])
                || !isNonEmptyVariableDeclarationFragmentList(kids[3]))
            return null;
        List y = asFragmentList(kids[3]);
        FieldDeclaration x = ast.newFieldDeclaration((VariableDeclarationFragment) y.remove(0));
        if (isNone(kids[0]))
            x.setJavadoc(null);
        else
            x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asModifierList(kids[1]));
        x.setType(asType(kids[2]));
        x.fragments().addAll(y);
        return wrap(x);
    }
    case FLOAT_TYPE: {
        return wrap(ast.newPrimitiveType(PrimitiveType.FLOAT));
    }
    case FOR_STATEMENT: {
        if (!isExpressionList(kids[0]) || (!isExpression(kids[1]) && !isNone(kids[1]))
                || !isExpressionList(kids[2]) || !isStatement(kids[3]))
            return null;
        ForStatement x = ast.newForStatement();
        x.initializers().addAll(asExpressionList(kids[0]));
        if (isNone(kids[1]))
            x.setExpression(null);
        else
            x.setExpression(asExpression(kids[1]));
        x.updaters().addAll(asExpressionList(kids[2]));
        x.setBody(asStatement(kids[3]));
        return wrap(x);
    }
    case IF_STATEMENT: {
        if (!isExpression(kids[0]) || !isStatement(kids[1]) || (!isStatement(kids[2]) && !isNone(kids[2])))
            return null;
        IfStatement x = ast.newIfStatement();
        x.setExpression(asExpression(kids[0]));
        x.setThenStatement(asStatement(kids[1]));
        if (isNone(kids[2]))
            x.setElseStatement(null);
        else
            x.setElseStatement(asStatement(kids[2]));
        return wrap(x);
    }
    case IMPORT_DECLARATION: {
        if (!isName(kids[0]) && !isInt(kids[1]) && !isInt(kids[2]))
            return null;
        ImportDeclaration x = ast.newImportDeclaration();
        x.setName(asName(kids[0]));
        x.setStatic(((IStrategoInt) kids[1]).intValue() > 0);
        x.setOnDemand(((IStrategoInt) kids[2]).intValue() > 0);
        return wrap(x);
    }
    case INFIX_EXPRESSION: {
        if (!isOperator(kids[0]) || !isExpression(kids[1]) || !isExpression(kids[2])
                || !isExpressionList(kids[3]))
            return null;
        InfixExpression x = ast.newInfixExpression();
        x.setOperator(asOperator(kids[0]));
        x.setLeftOperand(asExpression(kids[1]));
        x.setRightOperand(asExpression(kids[2]));
        x.extendedOperands().addAll(asExpressionList(kids[3]));
        return wrap(x);
    }
    case INITIALIZER: {
        if (!isBlock(kids[0]))
            return null;
        Initializer x = ast.newInitializer();
        x.setBody(asBlock(kids[0]));
        return wrap(x);

    }
    case INSTANCEOF_EXPRESSION: {
        if (!isExpression(kids[0]) || !isType(kids[1]))
            return null;
        InstanceofExpression x = ast.newInstanceofExpression();
        x.setLeftOperand(asExpression(kids[0]));
        x.setRightOperand(asType(kids[1]));
        return wrap(x);
    }
    case INT_TYPE: {
        return wrap(ast.newPrimitiveType(PrimitiveType.INT));
    }
    case JAVADOC: {
        if (!isTagElementList(kids[0]))
            return null;
        Javadoc x = ast.newJavadoc();
        x.tags().addAll(asTagElementList(kids[0]));
        return wrap(x);
    }
    case LABELED_STATEMENT: {
        if (!isSimpleName(kids[0]) || !isStatement(kids[1]))
            return null;
        LabeledStatement x = ast.newLabeledStatement();
        x.setLabel(asSimpleName(kids[0]));
        x.setBody(asStatement(kids[1]));
        return wrap(x);
    }
    case LINE_COMMENT: {
        LineComment x = ast.newLineComment();
        return wrap(x);
    }
    case LONG_TYPE: {
        return wrap(ast.newPrimitiveType(PrimitiveType.INT));
    }
    case MARKER_ANNOTATION: {
        if (!isName(kids[0]))
            return null;
        MarkerAnnotation x = ast.newMarkerAnnotation();
        x.setTypeName(asName(kids[0]));
        return wrap(x);

    }
    case MEMBER_REF: {
        if (!isSimpleName(kids[0]) || !isName(kids[1]))
            return null;
        MemberRef x = ast.newMemberRef();
        x.setName(asSimpleName(kids[0]));
        x.setQualifier(asName(kids[1]));
        return wrap(x);
    }
    case MEMBER_VALUE_PAIR: {
        if (!isSimpleName(kids[0]) || !isExpression(kids[1]))
            return null;
        MemberValuePair x = ast.newMemberValuePair();
        x.setName(asSimpleName(kids[0]));
        x.setValue(asExpression(kids[1]));
        return wrap(x);
    }
    case METHOD_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isExtendedModifierList(kids[1])
                || (!isType(kids[2]) && !isNone(kids[2])) || !isTypeParameterList(kids[3])
                || !isSimpleName(kids[4]) || !isSingleVariableDeclarationList(kids[5]) || !isNameList(kids[6])
                || (!isBlock(kids[7]) && !isNone(kids[7])))
            return null;
        MethodDeclaration x = ast.newMethodDeclaration();
        if (isNone(kids[0]))
            x.setJavadoc(null);
        else
            x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asExtendedModifierList(kids[1]));
        if (isNone(kids[2])) {
            x.setReturnType2(null);
            x.setConstructor(true);
        } else
            x.setReturnType2(asType(kids[2]));
        x.typeParameters().addAll(asTypeParameterList(kids[3]));
        x.setName(asSimpleName(kids[4]));
        x.parameters().addAll(asSingleVariableDeclarationList(kids[5]));
        x.thrownExceptions().addAll(asNameList(kids[6]));
        if (isNone(kids[7]))
            x.setBody(null);
        else
            x.setBody(asBlock(kids[7]));
        return wrap(x);
    }
    case METHOD_INVOCATION: {
        if ((!isExpression(kids[0]) && !isNone(kids[0])) || !isSimpleName(kids[1]) || !isTypeList(kids[2])
                || !isExpressionList(kids[3]))
            return null;
        MethodInvocation x = ast.newMethodInvocation();
        if (isNone(kids[0]))
            x.setExpression(null);
        else
            x.setExpression(asExpression(kids[0]));
        x.setName(asSimpleName(kids[1]));
        x.typeArguments().addAll(asTypeList(kids[2]));
        x.arguments().addAll(asExpressionList(kids[3]));
        return wrap(x);
    }
    case METHOD_REF: {
        if (!isSimpleName(kids[0]) || !isName(kids[1]) || !isMethodRefParameterList(kids[2]))
            return null;
        MethodRef x = ast.newMethodRef();
        x.setName(asSimpleName(kids[0]));
        x.setQualifier(asName(kids[1]));
        x.parameters().addAll(asMethodRefParameterList(kids[2]));
        return wrap(x);
    }
    case METHOD_REF_PARAMETER: {
        if (!isType(kids[0]) || !(isSimpleName(kids[1]) || isNone(kids[1])))
            return null;
        MethodRefParameter x = ast.newMethodRefParameter();
        x.setType(asType(kids[0]));
        if (isNone(kids[1]))
            x.setName(null);
        else
            x.setName(asSimpleName(kids[1]));
        return wrap(x);
    }
    case MODIFIER: {
        if (!isModifierKeyword(kids[0]))
            return null;
        return wrap(ast.newModifier(asModifierKeyword(kids[0])));
    }
    case MODIFIER_KEYWORD: {
        if (!isInt(kids[0]))
            return null;
        return wrap(Modifier.ModifierKeyword.fromFlagValue(asInt(kids[0])));
    }
    case NONE:
        return None.INSTANCE;
    case NORMAL_ANNOTATION: {
        if (!isName(kids[0]) || !isMemberValuePairList(kids[1]))
            return null;
        NormalAnnotation x = ast.newNormalAnnotation();
        x.setTypeName(asName(kids[0]));
        x.values().addAll(asMemberValuePairList(kids[1]));
        return wrap(x);
    }
    case NULL_LITERAL: {
        return wrap(ast.newNullLiteral());
    }
    case NUMBER_LITERAL: {
        if (!isString(kids[0]))
            return null;
        return wrap(ast.newNumberLiteral(asString(kids[0])));
    }
    case PACKAGE_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isAnnotations(kids[1]) || !isName(kids[2]))
            return null;

        PackageDeclaration pd = ast.newPackageDeclaration();
        if (isNone(kids[0]))
            pd.setJavadoc(null);
        else
            pd.setJavadoc(getJavadoc(kids[0]));
        pd.annotations().addAll(getAnnotations(kids[1]));
        pd.setName(asName(kids[2]));
        return wrap(pd);
    }
    case PARAMETERIZED_TYPE: {
        if (!isType(kids[0]) || !isTypeList(kids[1]))
            return null;
        ParameterizedType x = ast.newParameterizedType(asType(kids[0]));
        x.typeArguments().addAll(asTypeList(kids[1]));
        return wrap(x);
    }
    case PARENTHESIZED_EXPRESSION: {
        if (!isExpression(kids[0]))
            return null;
        ParenthesizedExpression x = ast.newParenthesizedExpression();
        x.setExpression(asExpression(kids[0]));
        return wrap(x);
    }
    case POSTFIX_EXPRESSION: {
        if (!isPostfixOperator(kids[0]) || !isExpression(kids[1]))
            return null;
        PostfixExpression x = ast.newPostfixExpression();
        x.setOperator(asPostfixOperator(kids[0]));
        x.setOperand(asExpression(kids[1]));
        return wrap(x);
    }
    case POSTFIX_EXPRESSION_OPERATOR: {
        if (!isString(kids[0]))
            return null;
        return wrap(PostfixExpression.Operator.toOperator(asString(kids[0])));
    }
    case PREFIX_EXPRESSION: {
        if (!isPrefixOperator(kids[0]) || !isExpression(kids[1]))
            return null;
        PrefixExpression x = ast.newPrefixExpression();
        x.setOperator(asPrefixOperator(kids[0]));
        x.setOperand(asExpression(kids[1]));
        return wrap(x);
    }
    case PREFIX_EXPRESSION_OPERATOR: {
        if (!isString(kids[0]))
            return null;
        return wrap(PrefixExpression.Operator.toOperator(asString(kids[0])));
    }
    case PRIMITIVE_TYPE: {
        if (!isString(kids[0]))
            return null;
        return wrap(ast.newPrimitiveType(asTypeCode(kids[0])));
    }
    case QUALIFIED_NAME: {
        if (!isName(kids[0]) || !isSimpleName(kids[1]))
            return null;
        return wrap(ast.newQualifiedName(asName(kids[0]), asSimpleName(kids[1])));
    }
    case QUALIFIED_TYPE: {
        if (!isType(kids[0]) || !isSimpleName(kids[1]))
            return null;
        return wrap(ast.newQualifiedType(asType(kids[0]), asSimpleName(kids[1])));
    }
    case RETURN_STATEMENT: {
        if (!(isExpression(kids[0]) || isNone(kids[0])))
            return null;
        ReturnStatement x = ast.newReturnStatement();
        if (isNone(kids[0]))
            x.setExpression(null);
        else
            x.setExpression(asExpression(kids[0]));
        return wrap(x);
    }
    case SIMPLE_NAME: {
        if (!isString(kids[0]))
            return null;
        return wrap(ast.newSimpleName(asString(kids[0])));
    }
    case SIMPLE_TYPE: {
        if (!isName(kids[0]))
            return null;
        return wrap(ast.newSimpleType(asName(kids[0])));
    }
    case SINGLE_MEMBER_ANNOTATION: {
        if (!isName(kids[0]) || !isExpression(kids[1]))
            return null;
        SingleMemberAnnotation x = ast.newSingleMemberAnnotation();
        x.setTypeName(asName(kids[0]));
        x.setValue(asExpression(kids[1]));
        return wrap(x);
    }
    case SINGLE_VARIABLE_DECLARATION: {
        if (!isModifierList(kids[0]) || !isType(kids[1]) || !isName(kids[2]) || !isInt(kids[3])
                || (!isExpression(kids[4]) && !isNone(kids[4])))
            return null;
        SingleVariableDeclaration x = ast.newSingleVariableDeclaration();
        x.modifiers().addAll(asModifierList(kids[0]));
        x.setType(asType(kids[1]));
        x.setName(asSimpleName(kids[2]));
        x.setExtraDimensions(asInt(kids[3]));
        if (isNone(kids[4]))
            x.setInitializer(null);
        else
            x.setInitializer(asExpression(kids[4]));
        return wrap(x);
    }
    case STRING_LITERAL: {
        if (!isString(kids[0]))
            return null;
        StringLiteral x = ast.newStringLiteral();
        x.setLiteralValue(asString(kids[0]));
        return wrap(x);
    }
    case SUPER_CONSTRUCTOR_INVOCATION: {
        if ((!isExpression(kids[0]) && !isNone(kids[0])) || !isTypeList(kids[1]) || !isExpressionList(kids[2]))
            return null;
        SuperConstructorInvocation x = ast.newSuperConstructorInvocation();
        if (isNone(kids[0]))
            x.setExpression(null);
        else
            x.setExpression(asExpression(kids[0]));
        x.typeArguments().addAll(asTypeList(kids[1]));
        x.arguments().addAll(asExpressionList(kids[2]));
        return wrap(x);
    }
    case SUPER_FIELD_ACCESS: {
        if ((!isName(kids[0]) && !isNone(kids[0])) || !isSimpleName(kids[1]))
            return null;
        SuperFieldAccess x = ast.newSuperFieldAccess();
        if (isNone(kids[0]))
            x.setQualifier(null);
        else
            x.setQualifier(asName(kids[0]));
        x.setName(asSimpleName(kids[1]));
        return wrap(x);
    }
    case SUPER_METHOD_INVOCATION: {
        if ((!isName(kids[0]) && !isNone(kids[0])) || !isTypeList(kids[1]) || !isSimpleName(kids[2])
                || !isExpressionList(kids[3]))
            return null;
        SuperMethodInvocation x = ast.newSuperMethodInvocation();
        if (isNone(kids[0]))
            x.setQualifier(null);
        else
            x.setQualifier(asName(kids[0]));
        x.typeArguments().addAll(asTypeList(kids[1]));
        x.setName(asSimpleName(kids[2]));
        x.arguments().addAll(asExpressionList(kids[3]));
        return wrap(x);
    }
    case SWITCH_CASE: {
        if (!isExpression(kids[0]) && !isNone(kids[0]))
            return null;
        SwitchCase x = ast.newSwitchCase();
        if (isNone(kids[0]))
            x.setExpression(null);
        else
            x.setExpression(asExpression(kids[0]));
        return wrap(x);
    }
    case SWITCH_STATEMENT: {
        if (!isExpression(kids[0]) || !isStatementList(kids[1]))
            return null;
        SwitchStatement x = ast.newSwitchStatement();
        x.setExpression(asExpression(kids[0]));
        x.statements().addAll(asStatementList(kids[1]));
        return wrap(x);
    }
    case SYNCHRONIZED_STATEMENT: {
        if (!isExpression(kids[0]) || !isBlock(kids[1]))
            return null;
        SynchronizedStatement x = ast.newSynchronizedStatement();
        x.setExpression(asExpression(kids[0]));
        x.setBody(asBlock(kids[1]));
        return wrap(x);
    }
    case TAG_ELEMENT: {
        if ((!isString(kids[0]) && !isNone(kids[0])) || !isASTNodeList(kids[1]))
            return null;
        TagElement x = ast.newTagElement();
        if (isNone(kids[0]))
            x.setTagName(null);
        else
            x.setTagName(asString(kids[0]));
        x.fragments().addAll(asASTNodeList(kids[1]));
        return wrap(x);
    }
    case TEXT_ELEMENT: {
        if (!isString(kids[0]))
            return null;
        TextElement x = ast.newTextElement();
        x.setText(asString(kids[0]));
        return wrap(x);
    }
    case THIS_EXPRESSION: {
        if (!isName(kids[0]) && !isNone(kids[0]))
            return null;
        ThisExpression x = ast.newThisExpression();
        if (isNone(kids[0]))
            x.setQualifier(null);
        else
            x.setQualifier(asName(kids[0]));
        return wrap(x);
    }
    case THROW_STATEMENT: {
        if (!isExpression(kids[0]))
            return null;
        ThrowStatement x = ast.newThrowStatement();
        x.setExpression(asExpression(kids[0]));
        return wrap(x);
    }
    case TRY_STATEMENT: {
        if (!isBlock(kids[0]) || !isCatchClauseList(kids[1]) || (!isBlock(kids[2]) && !isNone(kids[2])))
            return null;
        TryStatement x = ast.newTryStatement();
        x.setBody(asBlock(kids[0]));
        x.catchClauses().addAll(asCatchClauseList(kids[1]));
        if (isNone(kids[2]))
            x.setFinally(null);
        else
            x.setFinally(asBlock(kids[2]));
        return wrap(x);
    }
    case TYPE_DECLARATION: {
        if ((!isJavadoc(kids[0]) && !isNone(kids[0])) || !isModifierList(kids[1]) || !isSimpleName(kids[2])
                || !isTypeParameterList(kids[3]) || (!isType(kids[4]) && !isNone(kids[4]))
                || !isTypeList(kids[5]) || !isBodyDeclarationList(kids[6]) || !isInt(kids[7]))
            return null;
        TypeDeclaration x = ast.newTypeDeclaration();
        if (isNone(kids[0]))
            x.setJavadoc(null);
        else
            x.setJavadoc(asJavadoc(kids[0]));
        x.modifiers().addAll(asModifierList(kids[1]));
        x.setName(asSimpleName(kids[2]));
        x.typeParameters().addAll(asTypeParameterList(kids[3]));
        if (isNone(kids[4]))
            x.setSuperclassType(null);
        else
            x.setSuperclassType(asType(kids[4]));
        x.superInterfaceTypes().addAll(asTypeList(kids[5]));
        x.bodyDeclarations().addAll(asBodyDeclarationList(kids[6]));
        x.setInterface(asInt(kids[7]) == 1);
        return wrap(x);
    }
    case TYPE_DECLARATION_STATEMENT: {
        if (!isTypeDecl(kids[0]))
            return null;
        return wrap(ast.newTypeDeclarationStatement(asTypeDecl(kids[0])));
    }
    case TYPE_LITERAL: {
        if (!isType(kids[0]))
            return null;
        TypeLiteral x = ast.newTypeLiteral();
        x.setType(asType(kids[0]));
        return wrap(x);
    }
    case TYPE_PARAMETER: {
        if (!isSimpleName(kids[0]) || !isTypeList(kids[1]))
            return null;
        TypeParameter x = ast.newTypeParameter();
        x.setName(asSimpleName(kids[0]));
        x.typeBounds().addAll(asTypeList(kids[1]));
        return wrap(x);
    }
    case VARIABLE_DECLARATION_EXPRESSION: {
        if (!isModifierList(kids[0]) || !isType(kids[1]) || !isNonEmptyVariableDeclarationFragmentList(kids[2]))
            return null;
        List y = asFragmentList(kids[2]);
        VariableDeclarationExpression x = ast
                .newVariableDeclarationExpression((VariableDeclarationFragment) y.remove(0));
        x.modifiers().addAll(asModifierList(kids[0]));
        x.setType(asType(kids[1]));
        x.fragments().addAll(y);
        return wrap(x);
    }
    case VARIABLE_DECLARATION_FRAGMENT: {
        if (!isSimpleName(kids[0]) || !isInt(kids[1]) || (!isExpression(kids[2]) && !isNone(kids[2])))
            return null;
        VariableDeclarationFragment x = ast.newVariableDeclarationFragment();
        x.setName(asSimpleName(kids[0]));
        x.setExtraDimensions(asInt(kids[1]));
        if (isNone(kids[2]))
            x.setInitializer(null);
        else
            x.setInitializer(asExpression(kids[2]));
        return wrap(x);
    }
    case VARIABLE_DECLARATION_STATEMENT: {
        if (!isModifierList(kids[0]) || !isType(kids[1]) || !isNonEmptyVariableDeclarationFragmentList(kids[2]))
            return null;
        List y = asFragmentList(kids[2]);
        VariableDeclarationStatement x = ast
                .newVariableDeclarationStatement((VariableDeclarationFragment) y.remove(0));
        x.modifiers().addAll(asModifierList(kids[0]));
        x.setType(asType(kids[1]));
        x.fragments().addAll(y);
        return wrap(x);
    }
    case WHILE_STATEMENT: {
        if (!isExpression(kids[0]) || !isStatement(kids[1]))
            return null;
        WhileStatement x = ast.newWhileStatement();
        x.setExpression(asExpression(kids[0]));
        x.setBody(asStatement(kids[1]));
        return wrap(x);
    }
    case WILDCARD_TYPE: {
        if (!isType(kids[0]) && !isNone(kids[0]))
            return null;
        WildcardType x = ast.newWildcardType();
        if (isNone(kids[0]))
            x.setBound(null);
        else
            x.setBound(asType(kids[0]));
        return wrap(x);
    }
    default:
        return null;
    }
}

From source file:org.whole.lang.java.util.JDTTransformerVisitor.java

License:Open Source License

public boolean visit(AnnotationTypeDeclaration node) {
    //FIXME workaround for type nesting
    org.whole.lang.java.model.Type type = this.type;
    org.whole.lang.java.model.Name name = this.name;
    org.whole.lang.java.model.TypeParameter typeParameter = this.typeParameter;
    org.whole.lang.java.model.Parameters params = this.params;
    org.whole.lang.java.model.Types thrownExceptions = this.thrownExceptions;
    org.whole.lang.java.model.SingleVariableDeclaration varDecl = this.varDecl;
    org.whole.lang.java.model.Block block = this.block;
    org.whole.lang.java.model.Statement stm = this.stm;
    org.whole.lang.java.model.Expression exp = this.exp;
    org.whole.lang.java.model.VariableDeclarationFragment varFrag = this.varFrag;
    org.whole.lang.java.model.CatchClauses catchClauses = this.catchClauses;
    env().wEnterScope();/*from   w ww.  j  a v  a 2 s  .co m*/

    org.whole.lang.java.model.AnnotationTypeDeclaration annotationTypeDeclaration;
    appendBodyDeclaration(
            annotationTypeDeclaration = lf.create(JavaEntityDescriptorEnum.AnnotationTypeDeclaration));

    if (acceptChild(node.getJavadoc()))
        annotationTypeDeclaration.setJavadoc(this.javadoc);

    List<?> modifiers = node.modifiers();
    if (!modifiers.isEmpty()) {
        annotationTypeDeclaration.setModifiers(lf.create(JavaEntityDescriptorEnum.ExtendedModifiers));
        setExtendedModifiers(annotationTypeDeclaration.getModifiers(), modifiers);
    }
    if (acceptChild(node.getName()))
        annotationTypeDeclaration.setName((org.whole.lang.java.model.SimpleName) this.name);

    org.whole.lang.java.model.BodyDeclarations bodyDecl = lf.createBodyDeclarations();
    annotationTypeDeclaration.setBodyDeclarations(bodyDecl);
    env().wDef("typeDeclarationsContainer", bodyDecl);
    acceptChildren(node.bodyDeclarations());

    env().wExitScope();
    //FIXME workaround for type nesting
    this.type = type;
    this.name = name;
    this.typeParameter = typeParameter;
    this.params = params;
    this.thrownExceptions = thrownExceptions;
    this.varDecl = varDecl;
    this.block = block;
    this.stm = stm;
    this.exp = exp;
    this.varFrag = varFrag;
    this.catchClauses = catchClauses;
    return false;
}