Example usage for org.eclipse.jdt.core.dom FieldDeclaration MODIFIERS2_PROPERTY

List of usage examples for org.eclipse.jdt.core.dom FieldDeclaration MODIFIERS2_PROPERTY

Introduction

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

Prototype

ChildListPropertyDescriptor MODIFIERS2_PROPERTY

To view the source code for org.eclipse.jdt.core.dom FieldDeclaration MODIFIERS2_PROPERTY.

Click Source Link

Document

The "modifiers" structural property of this node type (element type: IExtendedModifier ) (added in JLS3 API).

Usage

From source file:org.autorefactor.refactoring.rules.EnforceStaticFinalLoggerRefactoring.java

License:Open Source License

private boolean markFinalStatic(FieldDeclaration node) {
    boolean result = VISIT_SUBTREE;
    boolean hasFinal = false;
    boolean hasAccess = false;
    boolean hasStatic = false;
    List<IExtendedModifier> modifiers = modifiers(node);
    int size = modifiers.size();
    List<Modifier> modifiersOnly = getModifiersOnly(modifiers);
    for (Modifier modifier : modifiersOnly) {
        if (modifier.isFinal()) {
            hasFinal = true;/*from  w w w . ja v  a  2s .  c  o m*/
        } else if (modifier.isStatic()) {
            hasStatic = true;
        } else if (modifier.isPrivate() || modifier.isProtected()) {
            hasAccess = true;
        } else if (modifier.isPublic()) {
            ctx.getRefactorings().remove(modifier);
            size--;
            result = DO_NOT_VISIT_SUBTREE;
        }

    }
    ASTBuilder builder = ctx.getASTBuilder();
    if (!hasAccess) {
        // insert at first
        ctx.getRefactorings().insertAt(node, FieldDeclaration.MODIFIERS2_PROPERTY, builder.private0(), 0);
        size++;
        result = DO_NOT_VISIT_SUBTREE;
    }
    if (!hasStatic) {
        ctx.getRefactorings().insertAt(node, FieldDeclaration.MODIFIERS2_PROPERTY, builder.static0(), size);
        size++;
        result = DO_NOT_VISIT_SUBTREE;
    }
    if (!hasFinal) {
        ctx.getRefactorings().insertAt(node, FieldDeclaration.MODIFIERS2_PROPERTY, builder.final0(), size);
        size++;
        result = DO_NOT_VISIT_SUBTREE;
    }
    return result;
}

From source file:org.hibernate.eclipse.jdt.ui.internal.jpa.process.ProcessEntityInfo.java

License:Open Source License

@SuppressWarnings("unchecked")
public boolean visit(TypeDeclaration node) {
    ITypeBinding typeBinding = node.resolveBinding();
    String nodeName = typeBinding == null ? null : typeBinding.getBinaryName();
    if (nodeName == null) {
        return false;
    }/*  ww w  .  j a va 2s . c  om*/
    entityInfo = entityInfos.getEntityInfo(nodeName);
    if (entityInfo == null) {
        return false;
    }
    if (entityInfo.isAddMappedSuperclassFlag()) {
        MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
        matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_MAPPEDSUPERCLASS));
        ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.MODIFIERS2_PROPERTY);
        lrw.insertFirst(matd, null);
    }
    if (entityInfo.isAddEntityFlag()) {
        MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
        matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_ENTITY));
        ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.MODIFIERS2_PROPERTY);
        lrw.insertFirst(matd, null);
    }
    /** /
    if (!entityInfo.isImplicitConstructorFlag() && !entityInfo.isDefaultConstructorFlag() &&
    entityInfo.isAddSerializableInterfaceFlag()) {
       // add serializable interface
       SimpleName sn = null;
       //if (!entityInfo.isAddSerializableInterfaceImportFlag()) {
    sn = rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_SERIALIZABLE);
       //}
       //else {
       //   sn = rewriter.getAST().newSimpleName(JPAConst.IMPORT_SERIALIZABLE);
       //}
       SimpleType st = rewriter.getAST().newSimpleType(sn);
       ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.SUPER_INTERFACE_TYPES_PROPERTY);
       lrw.insertFirst(st, null);
       // add "private static final long serialVersionUID = 1L;"
       // ...
    }
    /**/
    if (!entityInfo.isImplicitConstructorFlag() && !entityInfo.isDefaultConstructorFlag()
            && entityInfo.isAddSerializableInterfaceFlag()) {

        MethodDeclaration md = rewriter.getAST().newMethodDeclaration();
        md.setConstructor(true);
        Modifier modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PROTECTED_KEYWORD);
        md.modifiers().add(modifier);
        Block body = rewriter.getAST().newBlock();
        md.setBody(body);
        SimpleName sn = rewriter.getAST().newSimpleName(entityInfo.getName());
        md.setName(sn);
        ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.BODY_DECLARATIONS_PROPERTY);
        List<?> list = lrw.getOriginalList();
        MethodDeclaration insertBeforeNode = null;
        Iterator<?> it = list.iterator();
        while (it.hasNext()) {
            Object obj = it.next();
            if (obj instanceof MethodDeclaration) {
                insertBeforeNode = (MethodDeclaration) obj;
                break;
            }
        }
        if (insertBeforeNode == null) {
            lrw.insertLast(md, null);
        } else {
            lrw.insertBefore(md, insertBeforeNode, null);
        }
    }
    if (enableOptLock && entityInfo.isAddVersionFlag() && !entityInfo.hasVersionAnnotation()) {
        // add property "version", add getter/setter getVersion/setVersion,
        // add annotation for the property or for the getter
        //
        final String version = "version"; //$NON-NLS-1$
        final String versionType = "Integer"; //$NON-NLS-1$
        //
        VariableDeclarationFragment vdFragment = rewriter.getAST().newVariableDeclarationFragment();
        SimpleName variableName = rewriter.getAST().newSimpleName(version);
        vdFragment.setName(variableName);
        FieldDeclaration fieldVersion = rewriter.getAST().newFieldDeclaration(vdFragment);
        Modifier modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PROTECTED_KEYWORD);
        fieldVersion.modifiers().add(modifier);
        Name typeName = rewriter.getAST().newName(versionType);
        SimpleType type = rewriter.getAST().newSimpleType(typeName);
        fieldVersion.setType(type);
        //
        MethodDeclaration mdGetter = rewriter.getAST().newMethodDeclaration();
        modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
        mdGetter.modifiers().add(modifier);
        Block body = rewriter.getAST().newBlock();
        ReturnStatement returnVersion = rewriter.getAST().newReturnStatement();
        variableName = rewriter.getAST().newSimpleName(version);
        returnVersion.setExpression(variableName);
        body.statements().add(returnVersion);
        mdGetter.setBody(body);
        SimpleName sn = rewriter.getAST().newSimpleName("getVersion"); //$NON-NLS-1$
        mdGetter.setName(sn);
        typeName = rewriter.getAST().newName(versionType);
        type = rewriter.getAST().newSimpleType(typeName);
        mdGetter.setReturnType2(type);
        //
        MethodDeclaration mdSetter = rewriter.getAST().newMethodDeclaration();
        modifier = rewriter.getAST().newModifier(Modifier.ModifierKeyword.PUBLIC_KEYWORD);
        mdSetter.modifiers().add(modifier);
        body = rewriter.getAST().newBlock();
        Assignment assignment = rewriter.getAST().newAssignment();
        FieldAccess fieldAccess = rewriter.getAST().newFieldAccess();
        ThisExpression thisExpression = rewriter.getAST().newThisExpression();
        fieldAccess.setExpression(thisExpression);
        variableName = rewriter.getAST().newSimpleName(version);
        fieldAccess.setName(variableName);
        assignment.setLeftHandSide(fieldAccess);
        variableName = rewriter.getAST().newSimpleName(version);
        assignment.setRightHandSide(variableName);
        ExpressionStatement expressionStatement = rewriter.getAST().newExpressionStatement(assignment);
        body.statements().add(expressionStatement);
        mdSetter.setBody(body);
        sn = rewriter.getAST().newSimpleName("setVersion"); //$NON-NLS-1$
        mdSetter.setName(sn);
        SingleVariableDeclaration svd = rewriter.getAST().newSingleVariableDeclaration();
        variableName = rewriter.getAST().newSimpleName(version);
        svd.setName(variableName);
        typeName = rewriter.getAST().newName(versionType);
        type = rewriter.getAST().newSimpleType(typeName);
        svd.setType(type);
        mdSetter.parameters().add(svd);
        //
        ListRewrite lrw = rewriter.getListRewrite(node, TypeDeclaration.BODY_DECLARATIONS_PROPERTY);
        if (entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD
                && entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD_GETTER) {
            lrw.insertLast(fieldVersion, null);
        }
        if (entityInfo.getVersionFieldGetter() != FieldGetterType.GETTER
                && entityInfo.getVersionFieldGetter() != FieldGetterType.FIELD_GETTER) {
            lrw.insertLast(mdGetter, null);
            lrw.insertLast(mdSetter, null);
        }
        if (annotationStyle == AnnotStyle.FIELDS) {
            MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
            matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION));
            lrw = rewriter.getListRewrite(fieldVersion, FieldDeclaration.MODIFIERS2_PROPERTY);
            lrw.insertFirst(matd, null);
        } else if (annotationStyle == AnnotStyle.GETTERS) {
            MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
            matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION));
            lrw = rewriter.getListRewrite(mdGetter, MethodDeclaration.MODIFIERS2_PROPERTY);
            lrw.insertFirst(matd, null);
        }
    }
    return true;
}

From source file:org.hibernate.eclipse.jdt.ui.internal.jpa.process.ProcessEntityInfo.java

License:Open Source License

@SuppressWarnings("unchecked")
public boolean visit(FieldDeclaration node) {
    if (entityInfo == null) {
        return false;
    }/* w w  w .  j  a v  a 2 s  .  com*/
    if (annotationStyle != AnnotStyle.FIELDS) {
        return true;
    }
    Type type = node.getType();
    if (type == null) {
        return true;
    }
    if (type.isSimpleType() || type.isPrimitiveType()) {
        if (entityInfo.isAddGeneratedValueFlag()) {
            String primaryIdName = entityInfo.getPrimaryIdName();
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            boolean addGeneratedValueMarker = false;
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                String name = var.getName().getIdentifier();
                if (primaryIdName.equals(name)) {
                    addGeneratedValueMarker = true;
                    break;
                }
            }
            if (addGeneratedValueMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_GENERATED_VALUE));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
        if (entityInfo.isAddPrimaryIdFlag()) {
            String primaryIdName = entityInfo.getPrimaryIdName();
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            boolean addIdMarker = false;
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                String name = var.getName().getIdentifier();
                if (primaryIdName.equals(name)) {
                    addIdMarker = true;
                    break;
                }
            }
            if (addIdMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_ID));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
        if (enableOptLock && entityInfo.isAddVersionFlag() && !entityInfo.hasVersionAnnotation()) {
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            boolean addVersionMarker = false;
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                String name = var.getName().getIdentifier();
                if ("version".equals(name)) { //$NON-NLS-1$
                    addVersionMarker = true;
                    break;
                }
            }
            if (addVersionMarker) {
                MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
                matd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_VERSION));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(matd, null);
            }
        }
    }
    if (type.isSimpleType() && (AllEntitiesProcessor.columnLength != defaultStrLength)) {
        SimpleType simpleType = (SimpleType) type;
        String typeName = simpleType.getName().getFullyQualifiedName();
        if ("java.lang.String".equals(typeName) || "String".equals(typeName)) { //$NON-NLS-1$ //$NON-NLS-2$
            String fieldId = null;
            Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
            while (itVarNames.hasNext()) {
                VariableDeclarationFragment var = itVarNames.next();
                fieldId = var.getName().getIdentifier();
                if (fieldId != null) {
                    break;
                }
            }
            RefColumnInfo rci = entityInfo.getRefColumnInfo(fieldId);
            if (rci == null || !rci.isExist()) {
                // if there is no @Column annotation - create new @Column annotation
                // with user defined default value length 
                NormalAnnotation natd = rewriter.getAST().newNormalAnnotation();
                natd.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_COLUMN));
                ListRewrite lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
                lrw.insertFirst(natd, null);
                MemberValuePair mvp = rewriter.getAST().newMemberValuePair();
                mvp.setName(rewriter.getAST().newSimpleName("length")); //$NON-NLS-1$
                NumberLiteral nl = rewriter.getAST().newNumberLiteral(String.valueOf(defaultStrLength));
                mvp.setValue(nl);
                natd.values().add(mvp);
            }
        }
    }
    if (type.isSimpleType() || type.isParameterizedType() || type.isArrayType()) {
        Iterator<VariableDeclarationFragment> itVarNames = node.fragments().iterator();
        String fieldId = ""; //$NON-NLS-1$
        RefType refType = RefType.UNDEF;
        boolean annotated = false;
        String fullyQualifiedName2 = ""; //$NON-NLS-1$
        while (itVarNames.hasNext()) {
            VariableDeclarationFragment var = itVarNames.next();
            String name = var.getName().getIdentifier();
            fieldId = name;
            refType = entityInfo.getFieldIdRelValue(fieldId);
            annotated = entityInfo.getFieldIdAnnotatedValue(fieldId);
            fullyQualifiedName2 = entityInfo.getFieldIdFQNameValue(fieldId);
            if (refType != RefType.UNDEF) {
                break;
            }
        }
        Set<RefFieldInfo> setRFI = entityInfo.getRefFieldInfoSet(fullyQualifiedName2);
        if (!annotated && setRFI != null && isSimilarType(type, fullyQualifiedName2)) {
            RefEntityInfo rei = entityInfo.getFieldIdRefEntityInfo(fieldId);
            // try to process bidirectional relationships:
            // nRefType == JPAConst.ONE2ONE - OneToOne - the owning side corresponds
            //              to the side that contains the corresponding foreign key
            // nRefType == JPAConst.MANY2ONE - ManyToOne - owning side is always the "many" side
            // nRefType == JPAConst.MANY2MANY - ManyToMany bidirectional relationships 
            //              either side may be the owning side
            if (setRFI.size() > 1 && refType != RefType.MANY2ONE) {
                if (rei.mappedBy == null || rei.mappedBy == "") { //$NON-NLS-1$
                    addSimpleMarkerAnnotation(node, JPAConst.getRefType(refType));
                } else {
                    // give to the user information about selected mapping
                    addComplexNormalAnnotation(node, JPAConst.getRefType(refType), rei);
                }
            } else if (refType == RefType.MANY2ONE || refType == RefType.ENUMERATED || rei.mappedBy == null
                    || rei.mappedBy == "") { //$NON-NLS-1$
                addSimpleMarkerAnnotation(node, JPAConst.getRefType(refType));
            } else {
                // in case of bidirectional OneToOne - mark both sides with mappedBy - 
                // user should select the right decision 
                addComplexNormalAnnotation(node, JPAConst.getRefType(refType), rei);
            }
        }
    }
    return true;
}

From source file:org.hibernate.eclipse.jdt.ui.internal.jpa.process.ProcessEntityInfo.java

License:Open Source License

public boolean addSimpleMarkerAnnotation(BodyDeclaration node, String name) {
    if (name == null || name.length() == 0) {
        return false;
    }//from   ww w  .j a  v a  2s  . c  om
    MarkerAnnotation matd = rewriter.getAST().newMarkerAnnotation();
    matd.setTypeName(rewriter.getAST().newSimpleName(name));
    ListRewrite lrw = null;
    if (node instanceof FieldDeclaration) {
        lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
    } else if (node instanceof MethodDeclaration) {
        lrw = rewriter.getListRewrite(node, MethodDeclaration.MODIFIERS2_PROPERTY);
    }
    if (lrw != null) {
        lrw.insertFirst(matd, null);
    }
    return true;
}

From source file:org.hibernate.eclipse.jdt.ui.internal.jpa.process.ProcessEntityInfo.java

License:Open Source License

@SuppressWarnings("unchecked")
public boolean addComplexNormalAnnotation(BodyDeclaration node, String name, RefEntityInfo rei) {
    if (name == null || name.length() == 0) {
        return false;
    }// w  w w  .  ja  va  2 s . c o  m
    NormalAnnotation natd = rewriter.getAST().newNormalAnnotation();
    MemberValuePair mvp = null;
    if (rei.mappedBy != null && (rei.owner == OwnerType.YES || rei.owner == OwnerType.UNDEF)) {
        mvp = rewriter.getAST().newMemberValuePair();
        mvp.setName(rewriter.getAST().newSimpleName("mappedBy")); //$NON-NLS-1$
        StringLiteral sl = rewriter.getAST().newStringLiteral();
        sl.setLiteralValue(rei.mappedBy);
        mvp.setValue(sl);
    }
    natd.setTypeName(rewriter.getAST().newSimpleName(name));
    if (mvp != null) {
        natd.values().add(mvp);
    }
    NormalAnnotation natd2 = null;
    /** /
    if (rei.owner == OwnerType.NO) {
       natd2 = rewriter.getAST().newNormalAnnotation();
       natd2.setTypeName(rewriter.getAST().newSimpleName(JPAConst.ANNOTATION_JOINCOLUMN));
       mvp = null;
       String fullyQualifiedName2 = rei.fullyQualifiedName;
       EntityInfo entryInfo2 = entities.get(fullyQualifiedName2);
       if (entryInfo2 != null) {
    mvp = rewriter.getAST().newMemberValuePair();
    mvp.setName(rewriter.getAST().newSimpleName("name")); //$NON-NLS-1$
    StringLiteral sl = rewriter.getAST().newStringLiteral();
    sl.setLiteralValue(entryInfo2.getPrimaryIdName());
    mvp.setValue(sl);
       }
       if (mvp != null) {
    natd2.values().add(mvp);
       }
    }
    /**/
    ListRewrite lrw = null;
    if (node instanceof FieldDeclaration) {
        lrw = rewriter.getListRewrite(node, FieldDeclaration.MODIFIERS2_PROPERTY);
    } else if (node instanceof MethodDeclaration) {
        lrw = rewriter.getListRewrite(node, MethodDeclaration.MODIFIERS2_PROPERTY);
    }
    if (lrw != null) {
        if (natd2 != null) {
            lrw.insertFirst(natd2, null);
        }
        lrw.insertFirst(natd, null);
    }
    return true;
}

From source file:org.jboss.tools.ws.jaxrs.core.jdt.JavaAnnotationLocator.java

License:Open Source License

/**
 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom.FieldDeclaration)
 *//*w  w w  .  j  a v a  2  s . co m*/
@Override
public boolean visit(FieldDeclaration node) {
    visitExtendedModifiers((List<?>) node.getStructuralProperty(FieldDeclaration.MODIFIERS2_PROPERTY));
    // no need to visit furthermore
    return false;
}

From source file:org.jboss.tools.ws.jaxrs.core.jdt.JavaAnnotationsVisitor.java

License:Open Source License

/**
 * {@inheritDoc}/*from  w w w  .  j a  v a 2s. co m*/
 * 
 * @see org.eclipse.jdt.core.dom.ASTVisitor#visit(org.eclipse.jdt.core.dom. MethodDeclaration)
 */
@Override
public final boolean visit(final FieldDeclaration node) {
    if (memberType == IJavaElement.FIELD) {
        VariableDeclarationFragment fragment = (VariableDeclarationFragment) (node.fragments().get(0));
        if (fragment.getName().toString().equals(memberName) && matchesLocation(node)) {
            visitExtendedModifiers((List<?>) node.getStructuralProperty(FieldDeclaration.MODIFIERS2_PROPERTY));
            return false;
        }
    }
    return true;
}

From source file:org.jboss.tools.ws.jaxrs.core.jdt.JdtUtils.java

License:Open Source License

private static List<?> getNodeModifiers(final ASTNode node) {
    if (node == null) {
        return null;
    }//from   w  w w. ja va 2s  .c  o m
    switch (node.getNodeType()) {
    case ASTNode.TYPE_DECLARATION:
        return (List<?>) node.getStructuralProperty(TypeDeclaration.MODIFIERS2_PROPERTY);
    case ASTNode.ANNOTATION_TYPE_DECLARATION:
        return (List<?>) node.getStructuralProperty(AnnotationTypeDeclaration.MODIFIERS2_PROPERTY);
    case ASTNode.METHOD_DECLARATION:
        return (List<?>) node.getStructuralProperty(MethodDeclaration.MODIFIERS2_PROPERTY);
    case ASTNode.FIELD_DECLARATION:
        return (List<?>) node.getStructuralProperty(FieldDeclaration.MODIFIERS2_PROPERTY);
    default:
        return null;
    }
}

From source file:org.moe.natjgen.FieldEditor.java

License:Apache License

public FieldEditor(AbstractUnitManager manager, FieldDeclaration fieldDecl, boolean isNew) {
    super(manager);
    this.fieldDecl = fieldDecl;
    this.modifiers = new ModifierEditor(manager, fieldDecl, FieldDeclaration.MODIFIERS2_PROPERTY, isNew);
}

From source file:org.springframework.ide.eclipse.quickfix.jdt.proposals.AddAutowireCompletionProposal.java

License:Open Source License

private Annotation createAnnotation(String qualifiedName, String simpleName, CompilationUnit astRoot, AST ast,
        ASTRewrite astRewrite, ImportRewrite importRewrite, boolean memberValuePair, ASTNode precedingNode) {
    if (!ProposalCalculatorUtil.containsImport(getCompilationUnit(), qualifiedName)) {
        importRewrite.addImport(qualifiedName);
    }/*from  w w w.ja  v  a  2 s .c o m*/

    Annotation annotation;

    if (memberValuePair) {
        annotation = ast.newNormalAnnotation();
    } else {
        annotation = ast.newMarkerAnnotation();
    }
    annotation.setTypeName(ast.newSimpleName(simpleName));

    ChildListPropertyDescriptor property;

    if (decl instanceof FieldDeclaration) {
        property = FieldDeclaration.MODIFIERS2_PROPERTY;
    } else {
        property = MethodDeclaration.MODIFIERS2_PROPERTY;
    }

    if (precedingNode != null) {
        astRewrite.getListRewrite(decl, property).insertBefore(annotation, precedingNode, null);
    } else {
        astRewrite.getListRewrite(decl, property).insertFirst(annotation, null);
    }

    return annotation;
}