List of usage examples for org.eclipse.jdt.core.dom NormalAnnotation VALUES_PROPERTY
ChildListPropertyDescriptor VALUES_PROPERTY
To view the source code for org.eclipse.jdt.core.dom NormalAnnotation VALUES_PROPERTY.
Click Source Link
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(); }