Example usage for org.eclipse.jdt.core.dom NormalAnnotation VALUES_PROPERTY

List of usage examples for org.eclipse.jdt.core.dom NormalAnnotation VALUES_PROPERTY

Introduction

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

Prototype

ChildListPropertyDescriptor VALUES_PROPERTY

To view the source code for org.eclipse.jdt.core.dom NormalAnnotation VALUES_PROPERTY.

Click Source Link

Document

The "values" structural property of this node type (element type: MemberValuePair ).

Usage

From source file:com.halware.nakedide.eclipse.ext.annot.ast.AbstractAnnotationEvaluatorOrModifier.java

License:Open Source License

/**
 * Adds, updates or removes element for normal annotation, as required.
 * /* w w  w .  j  av  a2  s .c o  m*/
 * @param normalAnnotation
 * @param newMemberValues
 * @param ast
 * @param rewrite
 */
private void maintainValuesProperty(NormalAnnotation normalAnnotation, Map<String, Object> newMemberValues,
        AST ast, ASTRewrite rewrite) {
    ListRewrite listRewrite = rewrite.getListRewrite(normalAnnotation, NormalAnnotation.VALUES_PROPERTY);
    LinkedHashMap<String, Object> existingMemberValues = ASTTools.memberValues(normalAnnotation);

    Set<String> existingKeySet = new HashSet<String>(existingMemberValues.keySet());
    Set<String> newKeySet = new HashSet<String>(newMemberValues.keySet());

    Set<String> commonMembers = new HashSet<String>(existingKeySet);
    commonMembers.retainAll(newKeySet);

    Set<String> newMembers = new HashSet<String>(newKeySet);
    newMembers.removeAll(existingKeySet);

    Set<String> removedMembers = new HashSet<String>(existingKeySet);
    removedMembers.removeAll(newKeySet);

    for (String memberName : commonMembers) {
        Object value = newMemberValues.get(memberName);
        MemberValuePair memberValuePair = ASTTools.memberValuePair(normalAnnotation, memberName);
        if (value != null) {
            MemberValuePair newValuePair = createMemberValuePair(ast, memberName, value);
            listRewrite.replace(memberValuePair, newValuePair, null);
        } else {
            listRewrite.remove(memberValuePair, null);
        }
    }

    for (String memberName : newMembers) {
        Object value = newMemberValues.get(memberName);
        if (value != null) {
            MemberValuePair newValuePair = createMemberValuePair(ast, memberName, value);
            // TODO: should attempt to preserve order
            listRewrite.insertLast(newValuePair, null);
        } else {
            // nothing to do
        }
    }

    for (String memberName : removedMembers) {
        MemberValuePair memberValuePair = ASTTools.memberValuePair(normalAnnotation, memberName);
        listRewrite.remove(memberValuePair, null);
    }

    // TODO: earlier implementation; to remove
    //        for(String memberName: commonMembers) {
    //            Object value = newMemberValues.get(memberName);
    //            MemberValuePair memberValuePair = 
    //                ASTTools.memberValuePair(normalAnnotation, memberName);
    //            if (value != null) {
    //                MemberValuePair newValuePair = createMemberValuePair(ast, memberName, value);
    //                if (memberValuePair == null) {
    //                    // TODO: should attempt to preserve the order here.
    //                    listRewrite.insertLast(newValuePair, null);
    //                } else {
    //                    listRewrite.replace(memberValuePair, newValuePair, null);
    //                }
    //            } else {
    //                if (memberValuePair == null) {
    //                    // nothing to do
    //                } else {
    //                    listRewrite.remove(memberValuePair, null);
    //                }
    //            }
    //        }
}

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

License:Open Source License

@SuppressWarnings("unchecked")
public static void addValuePair(NormalAnnotation annotation, MemberValuePair valuePair) {
    List list = (List) annotation.getStructuralProperty(NormalAnnotation.VALUES_PROPERTY);
    list.add(valuePair);/*from ww  w.  j av  a2s  .c o m*/
}

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

License:Open Source License

@SuppressWarnings("unchecked")
public static void addLiteralMemberValuePair(NormalAnnotation annotation, String name, String value) {
    AST ast = annotation.getAST();/*w  w  w  .ja  v  a  2s  .  c  om*/

    List list = (List) annotation.getStructuralProperty(NormalAnnotation.VALUES_PROPERTY);
    MemberValuePair newValuePair = ast.newMemberValuePair();
    newValuePair.setName(ast.newSimpleName(name));
    newValuePair.setValue(ASTTools.newStringLiteral(ast, value));
    list.add(newValuePair);
}

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

License:Open Source License

public static void removeValuePair(NormalAnnotation annotation, MemberValuePair valuePair) {
    List list = (List) annotation.getStructuralProperty(NormalAnnotation.VALUES_PROPERTY);
    list.remove(valuePair);/*from   w ww  . ja  va 2 s.c  om*/
}

From source file:com.liferay.ide.project.core.modules.NewLiferayModuleProjectOpMethods.java

License:Open Source License

@SuppressWarnings("unchecked")
public static void addProperties(File dest, List<String> properties) throws Exception {
    try {//  w  w w  .  j  ava 2 s  .c om
        if (properties == null || properties.size() < 1) {
            return;
        }

        ASTParser parser = ASTParser.newParser(AST.JLS8);
        String readContents = FileUtil.readContents(dest, true);
        parser.setSource(readContents.toCharArray());
        parser.setKind(ASTParser.K_COMPILATION_UNIT);
        parser.setResolveBindings(true);
        final CompilationUnit cu = (CompilationUnit) parser.createAST(new NullProgressMonitor());
        cu.recordModifications();
        Document document = new Document(new String(readContents));
        cu.accept(new ASTVisitor() {

            @Override
            public boolean visit(NormalAnnotation node) {
                if (node.getTypeName().getFullyQualifiedName().equals("Component")) {
                    ASTRewrite rewrite = ASTRewrite.create(cu.getAST());
                    AST ast = cu.getAST();
                    List<ASTNode> values = node.values();
                    boolean hasProperty = false;

                    for (ASTNode astNode : values) {
                        if (astNode instanceof MemberValuePair) {
                            MemberValuePair pairNode = (MemberValuePair) astNode;

                            if (pairNode.getName().getFullyQualifiedName().equals("property")) {
                                Expression express = pairNode.getValue();

                                if (express instanceof ArrayInitializer) {
                                    ListRewrite lrw = rewrite.getListRewrite(express,
                                            ArrayInitializer.EXPRESSIONS_PROPERTY);
                                    ArrayInitializer initializer = (ArrayInitializer) express;
                                    List<ASTNode> expressions = (List<ASTNode>) initializer.expressions();
                                    ASTNode propertyNode = null;

                                    for (int i = properties.size() - 1; i >= 0; i--) {
                                        StringLiteral stringLiteral = ast.newStringLiteral();
                                        stringLiteral.setLiteralValue(properties.get(i));

                                        if (expressions.size() > 0) {
                                            propertyNode = expressions.get(expressions.size() - 1);
                                            lrw.insertAfter(stringLiteral, propertyNode, null);
                                        } else {
                                            lrw.insertFirst(stringLiteral, null);
                                        }
                                    }
                                }
                                hasProperty = true;
                            }
                        }
                    }

                    if (hasProperty == false) {
                        ListRewrite clrw = rewrite.getListRewrite(node, NormalAnnotation.VALUES_PROPERTY);
                        ASTNode lastNode = values.get(values.size() - 1);

                        ArrayInitializer newArrayInitializer = ast.newArrayInitializer();
                        MemberValuePair propertyMemberValuePair = ast.newMemberValuePair();

                        propertyMemberValuePair.setName(ast.newSimpleName("property"));
                        propertyMemberValuePair.setValue(newArrayInitializer);

                        clrw.insertBefore(propertyMemberValuePair, lastNode, null);
                        ListRewrite newLrw = rewrite.getListRewrite(newArrayInitializer,
                                ArrayInitializer.EXPRESSIONS_PROPERTY);

                        for (String property : properties) {
                            StringLiteral stringLiteral = ast.newStringLiteral();
                            stringLiteral.setLiteralValue(property);
                            newLrw.insertAt(stringLiteral, 0, null);
                        }
                    }
                    try (FileOutputStream fos = new FileOutputStream(dest)) {
                        TextEdit edits = rewrite.rewriteAST(document, null);
                        edits.apply(document);
                        fos.write(document.get().getBytes());
                        fos.flush();
                    } catch (Exception e) {
                        ProjectCore.logError(e);
                    }
                }
                return super.visit(node);
            }
        });
    } catch (Exception e) {
        ProjectCore.logError("error when adding properties to " + dest.getAbsolutePath(), e);
    }
}

From source file:net.atos.optimus.m2t.merger.java.core.DefaultMergingStrategy.java

License:Open Source License

/**
 * Merge two annotations attribute//from  w  w w  .j  a va 2 s  . co m
 */
@SuppressWarnings("unchecked")
private void mergeAnnotationAttribute(NormalAnnotation annotationInTheExistingFragment,
        NormalAnnotation annotationInTheGeneratedFragment) {

    List<String> existingAnnotationAttributesToRemoved = new ArrayList<String>(1);
    List<MemberValuePair> existingAnnotationAttributes = annotationInTheExistingFragment.values();
    List<MemberValuePair> generatedAnnotationAttributes = annotationInTheGeneratedFragment.values();

    List<String> existingAnnotationAttributesNames = new ArrayList<String>(1);
    Map<String, MemberValuePair> generatedAnnotationAttributesMap = new HashMap<String, MemberValuePair>(1);

    for (MemberValuePair mvp : existingAnnotationAttributes) {
        existingAnnotationAttributesNames.add(mvp.getName().getFullyQualifiedName());
    }

    for (MemberValuePair mvp : generatedAnnotationAttributes) {
        generatedAnnotationAttributesMap.put(mvp.getName().getFullyQualifiedName(), mvp);
    }

    for (MemberValuePair mvp : existingAnnotationAttributes) {
        if (generatedAnnotationAttributesMap.containsKey(mvp.getName().getFullyQualifiedName())) {

            /*
             * The attribute is present in the existing fragment AND The
             * attribute is present in the generated fragment => The
             * attribute present in the existing fragment must be removed
             * and the attribute present in the generated fragment must be
             * copied in the result
             */
            ListRewrite lw = this.astr.getListRewrite(annotationInTheExistingFragment,
                    NormalAnnotation.VALUES_PROPERTY);

            lw.replace(mvp, generatedAnnotationAttributesMap.get(mvp.getName().getFullyQualifiedName()), null);

            existingAnnotationAttributesToRemoved.add(mvp.getName().getFullyQualifiedName());
        }
    }

    for (MemberValuePair mvp : generatedAnnotationAttributes) {
        if (!existingAnnotationAttributesNames.contains(mvp.getName().getFullyQualifiedName())
                && !existingAnnotationAttributesToRemoved.contains(mvp.getName().getFullyQualifiedName())) {
            /*
             * The attribute is not present in the existing fragment AND The
             * attribute is present in the generated fragment => The
             * attribute present in the generated fragment must be copied in
             * the result
             */
            ListRewrite lw = this.astr.getListRewrite(annotationInTheExistingFragment,
                    NormalAnnotation.VALUES_PROPERTY);

            lw.insertFirst(mvp, null);

        } else {
            // Nothing to do
        }
    }
}

From source file:org.eclipse.ajdt.internal.ui.editor.quickfix.UnresolvedElementsSubProcessor.java

License:Open Source License

public static void getAnnotationMemberProposals(IInvocationContext context, IProblemLocation problem,
        Collection proposals) throws CoreException {
    CompilationUnit astRoot = context.getASTRoot();
    ICompilationUnit cu = context.getCompilationUnit();
    ASTNode selectedNode = problem.getCoveringNode(astRoot);

    Annotation annotation;/*from w  ww  . j a v  a  2s  .c  om*/
    String memberName;
    if (selectedNode.getLocationInParent() == MemberValuePair.NAME_PROPERTY) {
        if (selectedNode.getParent().getLocationInParent() != NormalAnnotation.VALUES_PROPERTY) {
            return;
        }
        annotation = (Annotation) selectedNode.getParent().getParent();
        memberName = ((SimpleName) selectedNode).getIdentifier();
    } else if (selectedNode.getLocationInParent() == SingleMemberAnnotation.VALUE_PROPERTY) {
        annotation = (Annotation) selectedNode.getParent();
        memberName = "value"; //$NON-NLS-1$
    } else {
        return;
    }

    ITypeBinding annotBinding = annotation.resolveTypeBinding();
    if (annotBinding == null) {
        return;
    }

    if (annotation instanceof NormalAnnotation) {
        // similar names
        IMethodBinding[] otherMembers = annotBinding.getDeclaredMethods();
        for (int i = 0; i < otherMembers.length; i++) {
            IMethodBinding binding = otherMembers[i];
            String curr = binding.getName();
            int relevance = NameMatcher.isSimilarName(memberName, curr) ? 6 : 3;
            String label = Messages.format(
                    CorrectionMessages.UnresolvedElementsSubProcessor_UnresolvedElementsSubProcessor_changetoattribute_description,
                    curr);
            proposals.add(new RenameNodeCorrectionProposal(label, cu, problem.getOffset(), problem.getLength(),
                    curr, relevance));
        }
    }

    if (annotBinding.isFromSource()) {
        ICompilationUnit targetCU = ASTResolving.findCompilationUnitForBinding(cu, astRoot, annotBinding);
        if (targetCU != null) {
            String label = Messages.format(
                    CorrectionMessages.UnresolvedElementsSubProcessor_UnresolvedElementsSubProcessor_createattribute_description,
                    memberName);
            Image image = JavaPluginImages.get(JavaPluginImages.IMG_MISC_PUBLIC);
            proposals.add(
                    new NewAnnotationMemberProposal(label, targetCU, selectedNode, annotBinding, 5, image));
        }
    }
}

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

License:Open Source License

/**
 * @return the {@link ASTNode} (an instance of {@link MemberValuePair} or {@link QualifiedName}) in the given 
 * annotation with the given name, or null if none was found.
 * /*from w  w  w .  j av  a  2 s . c  o m*/
 * @param annotation the annotation to analyze
 * @param memberName the member name to find
 * @param ast the associated AST
 * @throws JavaModelException
 */
public static ASTNode findMemberValuePair(final IAnnotation annotation, final String memberName,
        final CompilationUnit ast) throws JavaModelException {
    if (annotation != null && ast != null) {
        final ASTNode node = NodeFinder.perform(ast, annotation.getSourceRange());
        if (node instanceof NormalAnnotation) {
            @SuppressWarnings("unchecked")
            final List<MemberValuePair> allMemberValuePairs = (List<MemberValuePair>) node
                    .getStructuralProperty(NormalAnnotation.VALUES_PROPERTY);
            for (MemberValuePair memberValuePair : allMemberValuePairs) {
                if (memberValuePair.getName().getFullyQualifiedName().equals(memberName)) {
                    return memberValuePair;
                }
            }
        } else if (node instanceof SingleMemberAnnotation) {
            return ((SingleMemberAnnotation) node).getValue();
        }
    }
    return null;
}

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

License:Apache License

protected void setNAField(Annotation annotation, int index, String key, Expression value)
        throws GeneratorException {
    editLock();//from  w ww .  ja va2  s. co  m

    MemberValuePair mvp = getNAField(annotation, key);

    if (mvp == null) {
        mvp = getAST().newMemberValuePair();
        ListRewrite vlrw = getRewrite().getListRewrite(annotation, NormalAnnotation.VALUES_PROPERTY);
        vlrw.insertLast(mvp, getEditGroup());
        getRewrite().set(mvp, MemberValuePair.NAME_PROPERTY, getAST().newSimpleName(key), getEditGroup());
    }

    getRewrite().set(mvp, MemberValuePair.VALUE_PROPERTY, value, getEditGroup());
}

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

License:Apache License

@SuppressWarnings("unchecked")
protected MemberValuePair getNAField(Annotation annotation, String key) {
    if (annotation.isNormalAnnotation()) {
        ListRewrite vlrw = getRewrite().getListRewrite(annotation, NormalAnnotation.VALUES_PROPERTY);
        for (MemberValuePair mvp : (List<MemberValuePair>) vlrw.getRewrittenList()) {
            SimpleName name = (SimpleName) getRewrite().get(mvp, MemberValuePair.NAME_PROPERTY);
            if (key.equals(name.getFullyQualifiedName())) {
                return mvp;
            }//w  w w  .  j  av a  2 s . c o  m
        }
        return null;
    }
    throw new RuntimeException();
}