Example usage for org.eclipse.jdt.core.dom Javadoc TAGS_PROPERTY

List of usage examples for org.eclipse.jdt.core.dom Javadoc TAGS_PROPERTY

Introduction

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

Prototype

ChildListPropertyDescriptor TAGS_PROPERTY

To view the source code for org.eclipse.jdt.core.dom Javadoc TAGS_PROPERTY.

Click Source Link

Document

The "tags" structural property of this node type (element type: TagElement ).

Usage

From source file:com.google.currysrc.api.process.JavadocUtils.java

License:Apache License

public static void addJavadocTag(ASTRewrite rewrite, Javadoc javadoc, String tagText) {
    AST ast = javadoc.getAST();//from ww  w  .  jav  a2  s.c  o m
    TagElement tagElement = AstNodes.createTextTagElement(ast, tagText);
    ListRewrite listRewrite = rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY);
    listRewrite.insertLast(tagElement, null /* editGroup */);
}

From source file:org.eclipse.objectteams.otdt.internal.refactoring.otrefactorings.rolefile.MoveToRoleFileRefactoring.java

License:Open Source License

@Override
public Change createChange(IProgressMonitor pm) throws CoreException, OperationCanceledException {
    pm.beginTask(OTRefactoringMessages.MoveToRoleFileRefactoring_creatingChange_progress, 5);
    CompositeChange change = new CompositeChange(OTRefactoringMessages.MoveToRoleFileRefactoring_change_name);
    TextEditGroup editGroup = new TextEditGroup(OTRefactoringMessages.MoveToRoleFileRefactoring_change_name);
    ICompilationUnit newCuWC = null;/* www .j  ava 2s.  c  o m*/
    try {
        // packages
        IPackageFragment enclosingPackage = fRoleType.getPackageFragment();
        IPackageFragmentRoot root = (IPackageFragmentRoot) enclosingPackage
                .getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
        String enclPackName = enclosingPackage.getElementName();
        IPackageFragment teamPackage = root
                .getPackageFragment(enclPackName.length() == 0 ? fTeamType.getElementName()
                        : enclPackName + '.' + fTeamType.getElementName());

        // fetch AST for team and role:
        CompilationUnitRewrite cuRewrite = new CompilationUnitRewrite(fTeamCUnit);
        CompilationUnit teamCU = cuRewrite.getRoot();
        TypeDeclaration teamNode = (TypeDeclaration) findDeclaration(teamCU, fTeamType);
        ASTNode roleNode = findDeclaration(teamCU, fRoleType);

        // new CU:
        if (!teamPackage.getResource().exists())
            change.add(new CreatePackageChange(teamPackage));
        newCuWC = teamPackage.getCompilationUnit(fRoleType.getElementName() + JavaModelUtil.DEFAULT_CU_SUFFIX)
                .getWorkingCopy(new SubProgressMonitor(pm, 2));

        // (1) create role:
        // extract role source (as text):
        String oldSource = fTeamCUnit.getSource();
        ISourceRange sourceRange = fRoleType.getSourceRange();
        StringBuilder newRoleSource = new StringBuilder();
        IJavaProject javaProject = fRoleType.getJavaProject();
        if (StubUtility.doAddComments(javaProject))
            newRoleSource.append(
                    CodeGeneration.getFileComment(newCuWC, StubUtility.getLineDelimiterUsed(javaProject)));
        newRoleSource.append("\nteam package " + teamPackage.getElementName() + ";\n\n"); //$NON-NLS-1$ //$NON-NLS-2$
        newRoleSource.append(getAlignedSourceBlock(javaProject, oldSource.substring(sourceRange.getOffset(),
                sourceRange.getOffset() + sourceRange.getLength())));

        // done change #1:
        change.add(new CreateCompilationUnitChange(newCuWC, newRoleSource.toString(), null));

        // (2) modify team:
        // remove role from team:
        ASTRewrite rewrite = cuRewrite.getASTRewrite();
        ListRewrite teamMembersRewrite = rewrite.getListRewrite(teamNode,
                teamNode.getBodyDeclarationsProperty());
        teamMembersRewrite.remove(roleNode, editGroup);

        // add javadoc tag '@role roleName'
        Javadoc teamDoc = teamNode.getJavadoc();
        AST ast = teamCU.getAST();
        TextElement roleName = ast.newTextElement();
        roleName.setText(fRoleType.getElementName());
        TagElement roleTag = ast.newTagElement();
        roleTag.setTagName("@role"); //$NON-NLS-1$
        roleTag.fragments().add(roleName);
        if (teamDoc == null) { // need to add a fresh Javadoc
            teamDoc = ast.newJavadoc();
            teamDoc.tags().add(roleTag);
            rewrite.set(teamNode, teamNode.getJavadocProperty(), teamDoc, editGroup);
        } else { // need to insert tag into existing Javadoc
            ListRewrite tags = rewrite.getListRewrite(teamDoc, Javadoc.TAGS_PROPERTY);
            tags.insertLast(roleTag, editGroup);
        }

        // done change #2:
        change.add(cuRewrite.createChange(true, new SubProgressMonitor(pm, 2)));
    } finally {
        if (newCuWC != null)
            newCuWC.discardWorkingCopy();
    }

    pm.done();
    return change;
}

From source file:org.eclipse.objectteams.otdt.internal.ui.text.correction.JavadocProposalSubProcessor.java

License:Open Source License

@SuppressWarnings({ "rawtypes", "unchecked" })
public static CUCorrectionProposal addRoleTag(ICompilationUnit cu, String[] problemArguments,
        TypeDeclaration teamType) {//from ww  w  . j a  v a  2  s.c o  m
    if (problemArguments == null || problemArguments.length != 1)
        return null;
    AST ast = teamType.getAST();
    ASTRewrite rewrite = ASTRewrite.create(ast);

    // create the tag
    TagElement newTag = ast.newTagElement();
    newTag.setTagName(TAG_ROLE);

    // add the role name
    List fragments = newTag.fragments();
    String name = problemArguments[0];
    fragments.add(ast.newSimpleName(name));

    // add the tag to the javadoc
    Javadoc javadoc = teamType.getJavadoc();
    ListRewrite tagsRewriter = rewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY);
    tagsRewriter.insertLast(newTag, null);

    String label = Messages.format(CorrectionMessages.OTQuickfix_add_missing_role_tag, name);
    int relevance = 1;
    return new ASTRewriteCorrectionProposal(label, cu, rewrite, relevance,
            JavaPluginImages.get(JavaPluginImages.IMG_OBJS_JAVADOCTAG));
}

From source file:org.eclipse.pde.api.tools.ui.internal.markers.RemoveUnsupportedTagOperation.java

License:Open Source License

@Override
public IStatus runInUIThread(IProgressMonitor monitor) {
    SubMonitor localMonitor = SubMonitor.convert(monitor,
            MarkerMessages.RemoveUnsupportedTagOperation_removeing_unsupported_tag, this.markers.length + 6);
    HashMap<ICompilationUnit, Boolean> seen = new HashMap<ICompilationUnit, Boolean>();
    for (int i = 0; i < this.markers.length; i++) {
        // retrieve the AST node compilation unit
        IResource resource = this.markers[i].getResource();
        IJavaElement javaElement = JavaCore.create(resource);
        try {//from  w w w. j  av  a 2s.  c o m
            if (javaElement != null && javaElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
                ICompilationUnit compilationUnit = (ICompilationUnit) javaElement;
                if (!seen.containsKey(compilationUnit)) {
                    seen.put(compilationUnit, Boolean.valueOf(compilationUnit.hasUnsavedChanges()));
                }
                if (!compilationUnit.isWorkingCopy()) {
                    // open an editor of the corresponding unit to "show"
                    // the quick-fix change
                    JavaUI.openInEditor(compilationUnit);
                }
                if (!compilationUnit.isConsistent()) {
                    compilationUnit.reconcile(ICompilationUnit.NO_AST, false, null, null);
                    Util.updateMonitor(localMonitor, 1);
                }
                Util.updateMonitor(localMonitor, 1);
                ASTParser parser = ASTParser.newParser(AST.JLS8);
                parser.setSource(compilationUnit);
                Integer charStartAttribute = null;
                charStartAttribute = (Integer) this.markers[i].getAttribute(IMarker.CHAR_START);
                int intValue = charStartAttribute.intValue();
                parser.setFocalPosition(intValue);
                Map<String, String> options = compilationUnit.getJavaProject().getOptions(true);
                options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
                parser.setCompilerOptions(options);
                final CompilationUnit unit = (CompilationUnit) parser.createAST(new NullProgressMonitor());
                NodeFinder finder = new NodeFinder(intValue);
                unit.accept(finder);
                Util.updateMonitor(localMonitor, 1);
                BodyDeclaration node = finder.getNode();
                if (node != null) {
                    unit.recordModifications();
                    AST ast = unit.getAST();
                    ASTRewrite rewrite = ASTRewrite.create(ast);
                    Javadoc docnode = node.getJavadoc();
                    if (docnode == null) {
                        return Status.CANCEL_STATUS;
                    } else {
                        List<TagElement> tags = docnode.tags();
                        String arg = (String) this.markers[i]
                                .getAttribute(IApiMarkerConstants.MARKER_ATTR_MESSAGE_ARGUMENTS);
                        String[] args = arg.split("#"); //$NON-NLS-1$
                        TagElement tag = null;
                        for (Iterator<TagElement> iterator = tags.iterator(); iterator.hasNext();) {
                            tag = iterator.next();
                            if (args[0].equals(tag.getTagName()) && tag.getStartPosition() == intValue) {
                                break;
                            }
                        }
                        if (tag == null) {
                            return Status.CANCEL_STATUS;
                        }
                        ListRewrite lrewrite = rewrite.getListRewrite(docnode, Javadoc.TAGS_PROPERTY);
                        lrewrite.remove(tag, null);
                        Util.updateMonitor(localMonitor, 1);
                    }
                    TextEdit edit = rewrite.rewriteAST();
                    compilationUnit.applyTextEdit(edit, monitor);
                    Util.updateMonitor(localMonitor, 1);
                }
            }
        } catch (JavaModelException jme) {
        } catch (PartInitException e) {
        } catch (CoreException e) {
        }
    }
    // try saving the compilation units if they were in a saved state when
    // the quick-fix started
    for (Entry<ICompilationUnit, Boolean> entry : seen.entrySet()) {
        if (!entry.getValue().booleanValue()) {
            try {
                entry.getKey().commitWorkingCopy(true, null);
            } catch (JavaModelException jme) {
            }
        }
    }
    return Status.OK_STATUS;
}

From source file:org.eclipse.pde.api.tools.ui.internal.markers.UpdateSinceTagOperation.java

License:Open Source License

public void run(IProgressMonitor monitor) {
    if (monitor != null && monitor.isCanceled()) {
        return;/*w  w  w  .  j  a va2 s . co m*/
    }
    if (monitor != null) {
        monitor.beginTask(MarkerMessages.UpdateSinceTagOperation_title, 3);
    }
    // retrieve the AST node compilation unit
    try {
        Integer charStartAttribute = (Integer) this.fMarker.getAttribute(IMarker.CHAR_START);
        int intValue = charStartAttribute.intValue();
        IJavaElement javaElement = null;
        IJavaElement handleElement = null;
        if (intValue > 0) {
            IResource resource = this.fMarker.getResource();
            javaElement = JavaCore.create(resource);
        } else {
            // this is a case where the marker is reported against the
            // MANIFEST.MF file
            String handle = (String) fMarker.getAttribute(IApiMarkerConstants.MARKER_ATTR_HANDLE_ID);
            if (handle != null) {
                handleElement = JavaCore.create(handle);
            }
            if (handleElement != null && handleElement.exists()) {
                javaElement = handleElement.getAncestor(IJavaElement.COMPILATION_UNIT);
            }
        }
        if (javaElement != null && javaElement.getElementType() == IJavaElement.COMPILATION_UNIT) {
            ICompilationUnit compilationUnit = (ICompilationUnit) javaElement;
            if (!compilationUnit.isWorkingCopy()) {
                // open an editor of the corresponding unit to "show" the
                // quickfix change
                JavaUI.openInEditor(compilationUnit);
            }
            ASTParser parser = ASTParser.newParser(AST.JLS8);
            parser.setSource(compilationUnit);
            if (intValue <= 0) {
                // try to use the name range of the corresponding element
                if (handleElement instanceof IMember) {
                    IMember member = (IMember) handleElement;
                    ISourceRange range = member.getNameRange();
                    if (range != null) {
                        intValue = range.getOffset();
                    } else {
                        range = member.getSourceRange();
                        if (range != null && range.getOffset() > 0) {
                            intValue = range.getOffset();
                        } else {
                            return;
                        }
                    }
                } else {
                    return;
                }
            }
            parser.setFocalPosition(intValue);
            parser.setResolveBindings(true);
            Map<String, String> options = compilationUnit.getJavaProject().getOptions(true);
            options.put(JavaCore.COMPILER_DOC_COMMENT_SUPPORT, JavaCore.ENABLED);
            parser.setCompilerOptions(options);
            final CompilationUnit unit = (CompilationUnit) parser.createAST(new NullProgressMonitor());
            BodyDeclaration node = null;
            NodeFinder nodeFinder = new NodeFinder(intValue);
            unit.accept(nodeFinder);
            if (monitor != null) {
                monitor.worked(1);
            }
            node = nodeFinder.getNode();
            if (node != null) {
                unit.recordModifications();
                AST ast = unit.getAST();
                ASTRewrite rewrite = ASTRewrite.create(ast);
                if (IApiProblem.SINCE_TAG_MISSING == this.sinceTagType) {
                    Javadoc docnode = node.getJavadoc();
                    if (docnode == null) {
                        docnode = ast.newJavadoc();
                        // we do not want to create a new empty Javadoc node
                        // in
                        // the AST if there are no missing tags
                        rewrite.set(node, node.getJavadocProperty(), docnode, null);
                    } else {
                        List<TagElement> tags = docnode.tags();
                        boolean found = false;
                        loop: for (Iterator<TagElement> iterator = tags.iterator(); iterator.hasNext();) {
                            TagElement element = iterator.next();
                            String tagName = element.getTagName();
                            if (TagElement.TAG_SINCE.equals(tagName)) {
                                found = true;
                                break loop;
                            }
                        }
                        if (found) {
                            return;
                        }
                    }
                    ListRewrite lrewrite = rewrite.getListRewrite(docnode, Javadoc.TAGS_PROPERTY);
                    // check the existing tags list
                    TagElement newtag = ast.newTagElement();
                    newtag.setTagName(TagElement.TAG_SINCE);
                    TextElement textElement = ast.newTextElement();
                    textElement.setText(this.sinceTagVersion);
                    newtag.fragments().add(textElement);
                    lrewrite.insertLast(newtag, null);
                } else {
                    Javadoc docnode = node.getJavadoc();
                    List<TagElement> tags = docnode.tags();
                    TagElement sinceTag = null;
                    for (Iterator<TagElement> iterator = tags.iterator(); iterator.hasNext();) {
                        TagElement tagElement = iterator.next();
                        if (TagElement.TAG_SINCE.equals(tagElement.getTagName())) {
                            sinceTag = tagElement;
                            break;
                        }
                    }
                    if (sinceTag != null) {
                        List<TextElement> fragments = sinceTag.fragments();
                        if (fragments.size() >= 1) {
                            TextElement textElement = fragments.get(0);
                            StringBuffer buffer = new StringBuffer();
                            buffer.append(' ').append(this.sinceTagVersion);
                            rewrite.set(textElement, TextElement.TEXT_PROPERTY, String.valueOf(buffer), null);
                        } else {
                            ListRewrite lrewrite = rewrite.getListRewrite(docnode, Javadoc.TAGS_PROPERTY);
                            // check the existing tags list
                            TagElement newtag = ast.newTagElement();
                            newtag.setTagName(TagElement.TAG_SINCE);
                            TextElement textElement = ast.newTextElement();
                            textElement.setText(this.sinceTagVersion);
                            newtag.fragments().add(textElement);
                            lrewrite.replace(sinceTag, newtag, null);
                        }
                    }
                }
                try {
                    if (monitor != null) {
                        monitor.worked(1);
                    }
                    TextEdit edit = rewrite.rewriteAST();
                    compilationUnit.applyTextEdit(edit, monitor);
                    if (monitor != null) {
                        monitor.worked(1);
                    }
                } finally {
                    compilationUnit.reconcile(ICompilationUnit.NO_AST, false /*
                                                                             * don
                                                                             * 't
                                                                             * force
                                                                             * problem
                                                                             * detection
                                                                             */, null /*
                                                                                       * use
                                                                                       * primary
                                                                                       * owner
                                                                                       */, null /*
                                                                                                 * no
                                                                                                 * progress
                                                                                                 * monitor
                                                                                                 */);
                }
            }
        }
    } catch (CoreException e) {
        ApiUIPlugin.log(e);
    } finally {
        if (monitor != null) {
            monitor.done();
        }
    }
}

From source file:org.eclipseguru.gwt.core.internal.codegen.AsyncServiceCodeGenerator.java

License:Open Source License

private void updateMethodJavadoc(final ASTRewrite cuRewrite, final MethodDeclaration md,
        final TextEditGroup textEditGroup) {
    // create javadoc
    final Javadoc javadoc = createJavadocIfNecessary(cuRewrite, md, textEditGroup);
    final ListRewrite javadocRewrite = cuRewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY);

    // find last @param tag and remove @throws tags and @gwt.typeArgs tags
    ASTNode lastParamPos = null;/* ww  w  . j a va2 s  .c o  m*/
    boolean hasReturnTag = false;
    for (final Iterator stream = javadocRewrite.getOriginalList().iterator(); stream.hasNext();) {
        final TagElement element = (TagElement) stream.next();
        if (null != element.getTagName()) {
            final String tagName = element.getTagName();
            if (tagName.equals(TAG_PARAM)) {
                lastParamPos = element;
            } else if (tagName.equals(TAG_RETURN) && !element.fragments().isEmpty()) {
                hasReturnTag = true;
                cuRewrite.set(element, TagElement.TAG_NAME_PROPERTY, TAG_GWT_CALLBACK_RETURN, textEditGroup);
            } else if (tagName.equals(TAG_THROWS) || tagName.equals(TAG_GWT_TYPE_ARGS)) {
                javadocRewrite.remove(element, textEditGroup);
            }
        }
    }

    // create @param callback
    final TagElement callbackParamTag = cuRewrite.getAST().newTagElement();
    if (null != lastParamPos) {
        javadocRewrite.insertAfter(callbackParamTag, lastParamPos, textEditGroup);
    } else {
        javadocRewrite.insertLast(callbackParamTag, textEditGroup);
    }
    cuRewrite.set(callbackParamTag, TagElement.TAG_NAME_PROPERTY, TAG_PARAM, textEditGroup);
    final ListRewrite tagRewrite = cuRewrite.getListRewrite(callbackParamTag, TagElement.FRAGMENTS_PROPERTY);
    final TextElement space = cuRewrite.getAST().newTextElement();
    tagRewrite.insertFirst(space, textEditGroup);
    final SimpleName callbackName = cuRewrite.getAST().newSimpleName(CALLBACK);
    tagRewrite.insertAfter(callbackName, space, textEditGroup);
    final TextElement callbackDescription = cuRewrite.getAST().newTextElement();
    callbackDescription.setText("the callback that will be called to receive the return value");
    tagRewrite.insertAfter(callbackDescription, callbackName, textEditGroup);
    if (hasReturnTag) {
        final TextElement text = cuRewrite.getAST().newTextElement();
        text.setText(NLS.bind("(see <code>{0}</code> tag)", TAG_GWT_CALLBACK_RETURN));
        tagRewrite.insertAfter(text, callbackDescription, textEditGroup);
    }

    // add @generated tag
    javadocRewrite.insertLast(createGeneratedTagForMethod(cuRewrite), textEditGroup);
}

From source file:org.eclipseguru.gwt.core.internal.codegen.AsyncServiceCodeGenerator.java

License:Open Source License

private void updateTypeJavaDoc(final ASTRewrite cuRewrite, final TypeDeclaration td,
        final TextEditGroup textEditGroup) {
    // add @generated tag to JavaDoc
    final Javadoc javadoc = createJavadocIfNecessary(cuRewrite, td, textEditGroup);
    final ListRewrite javadocRewrite = cuRewrite.getListRewrite(javadoc, Javadoc.TAGS_PROPERTY);
    javadocRewrite.insertLast(createGeneratedTagForType(cuRewrite), textEditGroup);

    // rewrite methods
    final ListRewrite bodyRewrite = cuRewrite.getListRewrite(td, TypeDeclaration.BODY_DECLARATIONS_PROPERTY);
    for (final Iterator stream = bodyRewrite.getOriginalList().iterator(); stream.hasNext();) {
        final ASTNode node = (ASTNode) stream.next();
        switch (node.getNodeType()) {
        case ASTNode.METHOD_DECLARATION:
            // rewrite method
            updateMethodJavadoc(cuRewrite, (MethodDeclaration) node, textEditGroup);
            break;
        }/*from   w w  w  .  j av a2 s. com*/
    }
}

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

License:Apache License

private void addTag(Javadoc doc, ASTRewrite rewrite, String tag, String string) {
    if (string == null)
        return;/*w w w. j  a va2  s .co  m*/

    ListRewrite lrw = rewrite.getListRewrite(doc, Javadoc.TAGS_PROPERTY);

    TagElement t = rewrite.getAST().newTagElement();
    lrw.insertLast(t, editGroup);
    if (tag != null) {
        rewrite.set(t, TagElement.TAG_NAME_PROPERTY, tag, editGroup);
    }

    ListRewrite fragments = rewrite.getListRewrite(t, TagElement.FRAGMENTS_PROPERTY);
    TextElement text = rewrite.getAST().newTextElement();
    fragments.insertLast(text, editGroup);
    rewrite.set(text, TextElement.TEXT_PROPERTY, string, editGroup);
}