Example usage for org.eclipse.jdt.core IJavaElement METHOD

List of usage examples for org.eclipse.jdt.core IJavaElement METHOD

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaElement METHOD.

Prototype

int METHOD

To view the source code for org.eclipse.jdt.core IJavaElement METHOD.

Click Source Link

Document

Constant representing a method or constructor.

Usage

From source file:org.eclipse.objectteams.otdt.ui.tests.refactoring.pullup.PullUpTests.java

License:Open Source License

private static IMethod[] getMethods(IMember[] members) {
    List<IJavaElement> l = Arrays.asList(JavaElementUtil.getElementsOfType(members, IJavaElement.METHOD));
    return l.toArray(new IMethod[l.size()]);
}

From source file:org.eclipse.objectteams.otdt.ui.Util.java

License:Open Source License

/** 
 * Is the given java element generated by the compiler (i.e., synthetic)?
 * This function operates on all kinds of java elements applying appropriate
 * heuristics (mostly name based). /*  w w  w  .  j  a v  a2s.c o m*/
 * @param elem
 * @return
 */
@SuppressWarnings("nls")
public static boolean isGenerated(IJavaElement elem) {
    // TODO (SH): check whether ViewerFilters can do the job better.

    // all kinds of generated features determined by name:
    String name = elem.getElementName();
    final String[] patterns = new String[] { "_OT$", "TSuper__OT__", // general OT-prefix 
            "class$", "access$", "val$", "this$" // std. java synthetics.
    };
    for (int i = 0; i < patterns.length; i++) {
        if (name.indexOf(patterns[i]) >= 0)
            return true;
    }

    switch (elem.getElementType()) {
    case IJavaElement.TYPE:
    case IOTJavaElement.ROLE:
        // Predefined role types (non-overridable)?
        final String[] fullPatterns = new String[] { "IConfined", "Confined", "__OT__Confined", "ILowerable", // special OT types       
        };
        for (int i = 0; i < fullPatterns.length; i++) {
            if (name.equals(fullPatterns[i]))
                return true;
        }
        break;
    case IJavaElement.METHOD:
        // tsuper-method?
        IMethod method = (IMethod) elem;
        String[] paramTypes = method.getParameterTypes();
        if (paramTypes.length > 0) {
            String lastType = Signature.getSimpleName(Signature.toString(paramTypes[paramTypes.length - 1]));
            if (lastType.startsWith("TSuper__OT__"))
                return true;
        }
        break;
    }

    // Synthetic role interface?
    if (elem.getElementType() == IOTJavaElement.ROLE) {
        IType type = (IType) elem;
        try {
            if (Flags.isSynthetic(type.getFlags()))
                return true;
        } catch (JavaModelException ex) {
            // nop
        }
    }
    return false;
}

From source file:org.eclipse.pde.api.tools.internal.builder.AbstractProblemDetector.java

License:Open Source License

/**
 * Performs a quick look-up using the offset into the the
 * {@link ICompilationUnit}//from  ww  w  . j av  a2 s. com
 * 
 * @param jtype
 * @param document
 * @param reference
 * @param offset
 * @return
 * @throws JavaModelException
 */
protected IMethod quickLookup(final IType jtype, IDocument document, IReference reference, int offset)
        throws JavaModelException {
    if (offset > -1) {
        IJavaElement element = jtype.getCompilationUnit().getElementAt(offset);
        if (element != null) {
            IJavaElement ancestor = element.getAncestor(IJavaElement.METHOD);
            if (ancestor != null) {
                return (IMethod) ancestor;
            }
        }
    }
    return null;
}

From source file:org.eclipse.pde.api.tools.internal.builder.IllegalExtendsProblemDetector.java

License:Open Source License

private IMethod quickLookup(final IType jtype, IDocument document, IReference reference, int offset)
        throws JavaModelException {
    if (offset > -1) {
        IJavaElement element = jtype.getCompilationUnit().getElementAt(offset);
        if (element != null) {
            IJavaElement ancestor = element.getAncestor(IJavaElement.METHOD);
            if (ancestor != null) {
                return (IMethod) ancestor;
            }/*from   w  ww.j  a  v a  2  s .  co  m*/
        }
    }
    return null;
}

From source file:org.eclipse.pde.api.tools.ui.internal.completion.APIToolsJavadocCompletionProposalComputer.java

License:Open Source License

/**
 * Computes all of the Javadoc completion proposals
 * /*  w w  w  . j a v  a 2 s. co m*/
 * @param jcontext
 * @param corecontext
 * @return the complete list of Javadoc completion proposals or an empty
 *         list, never <code>null</code>
 * @since 1.0.500
 */
List<ICompletionProposal> computeJavadocProposals(JavaContentAssistInvocationContext jcontext,
        CompletionContext corecontext) {
    ICompilationUnit cunit = jcontext.getCompilationUnit();
    if (cunit != null) {
        try {
            int offset = jcontext.getInvocationOffset();
            IJavaElement element = cunit.getElementAt(offset);
            if (!isVisible(element)) {
                return Collections.EMPTY_LIST;
            }
            ImageDescriptor imagedesc = jcontext.getLabelProvider()
                    .createImageDescriptor(org.eclipse.jdt.core.CompletionProposal
                            .create(org.eclipse.jdt.core.CompletionProposal.JAVADOC_BLOCK_TAG, offset));
            fImageHandle = (imagedesc == null ? null : imagedesc.createImage());
            int type = getType(element);
            int member = IApiJavadocTag.MEMBER_NONE;
            switch (element.getElementType()) {
            case IJavaElement.METHOD: {
                IMethod method = (IMethod) element;
                member = IApiJavadocTag.MEMBER_METHOD;
                if (method.isConstructor()) {
                    member = IApiJavadocTag.MEMBER_CONSTRUCTOR;
                }
                break;
            }
            case IJavaElement.FIELD: {
                member = IApiJavadocTag.MEMBER_FIELD;
                break;
            }
            default:
                break;
            }
            IApiJavadocTag[] tags = ApiPlugin.getJavadocTagManager().getTagsForType(type, member);
            int tagcount = tags.length;
            if (tagcount > 0) {
                ArrayList<ICompletionProposal> list = null;
                collectExistingTags(element, jcontext);
                String completiontext = null;
                int tokenstart = corecontext.getTokenStart();
                int length = offset - tokenstart;
                for (int i = 0; i < tagcount; i++) {
                    if (!acceptTag(tags[i], element)) {
                        continue;
                    }
                    completiontext = tags[i].getCompleteTag(type, member);
                    if (appliesToContext(jcontext.getDocument(), completiontext, tokenstart,
                            (length > 0 ? length : 1))) {
                        if (list == null) {
                            list = new ArrayList<ICompletionProposal>(tagcount - i);
                        }
                        list.add(new APIToolsJavadocCompletionProposal(corecontext, completiontext,
                                tags[i].getTagName(), fImageHandle));
                    }
                }
                if (list != null) {
                    return list;
                }
            }
        } catch (JavaModelException e) {
            fErrorMessage = e.getMessage();
        }
    }
    return Collections.EMPTY_LIST;
}

From source file:org.eclipse.pde.api.tools.ui.internal.completion.APIToolsJavadocCompletionProposalComputer.java

License:Open Source License

/**
 * Returns if the given {@link IJavaElement} is externally visible <br>
 * <br>/* www .  j a  v  a2  s .c  o  m*/
 * Changes to the logic here must also be made in the {@link TagValidator}
 * to ensure the visibility is computed equally.
 * 
 * @see TagValidator
 * @param element
 * @return <code>true</code> if the given element is visible
 *         <code>false</code> otherwise
 * @throws JavaModelException if a model lookup fails
 */
boolean isVisible(IJavaElement element) throws JavaModelException {
    if (element != null) {
        switch (element.getElementType()) {
        case IJavaElement.FIELD:
        case IJavaElement.METHOD: {
            IMember member = (IMember) element;
            int flags = member.getFlags();
            IType type = member.getDeclaringType();
            if (Flags.isPublic(flags) || Flags.isProtected(flags) || (type != null && type.isInterface())) {
                return isVisible(type);
            }
            break;
        }
        case IJavaElement.TYPE: {
            IType type = (IType) element;
            int flags = type.getFlags();
            if (type.isLocal() && !type.isAnonymous() || Flags.isPrivate(flags)) {
                return false;
            }
            if (type.isMember()) {
                if ((Flags.isPublic(flags) && Flags.isStatic(flags)) || Flags.isPublic(flags)
                        || Flags.isProtected(flags) || type.isInterface()) {
                    return isVisible(type.getDeclaringType());
                }
            } else {
                return Flags.isPublic(flags) || type.isInterface();
            }
            break;
        }
        default: {
            break;
        }

        }
    }
    return false;
}

From source file:org.eclipse.pde.api.tools.ui.internal.completion.APIToolsJavadocCompletionProposalComputer.java

License:Open Source License

/**
 * Method to post process returned flags from the
 * {@link org.eclipse.pde.api.tools.internal.JavadocTagManager}
 * //from  ww w .j av a 2s  .  co  m
 * @param tag the tag to process
 * @param element the {@link IJavaElement} the tag will appear on
 * @return true if the tag should be included in completion proposals, false
 *         otherwise
 */
private boolean acceptTag(IApiJavadocTag tag, IJavaElement element) throws JavaModelException {
    if (fExistingTags != null) {
        Boolean fragments = fExistingTags.get(tag.getTagName());
        // if the tag has a fragment don't overwrite / propose again
        if (fragments != null && Boolean.FALSE.equals(fragments)) {
            return false;
        }
    }
    switch (element.getElementType()) {
    case IJavaElement.TYPE: {
        IType type = (IType) element;
        int flags = type.getFlags();
        String tagname = tag.getTagName();
        if (Flags.isAbstract(flags)) {
            return !tagname.equals(JavadocTagManager.TAG_NOINSTANTIATE);
        }
        if (Flags.isFinal(flags)) {
            return !tagname.equals(JavadocTagManager.TAG_NOEXTEND);
        }
        break;
    }
    case IJavaElement.METHOD: {
        IMethod method = (IMethod) element;
        if (Flags.isFinal(method.getFlags()) || Flags.isStatic(method.getFlags())) {
            return !tag.getTagName().equals(JavadocTagManager.TAG_NOOVERRIDE);
        }
        IType type = method.getDeclaringType();
        if (type != null && Flags.isFinal(type.getFlags())) {
            return !tag.getTagName().equals(JavadocTagManager.TAG_NOOVERRIDE);
        }
        break;
    }
    default:
        break;
    }
    return true;
}

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

License:Open Source License

/**
 * @see org.eclipse.ui.IActionFilter#testAttribute(Object, String, String)
 *///w w  w .  j a va  2s. co  m
@Override
public boolean testAttribute(Object target, String name, String value) {
    if (name.equals("JavaElementActionFilter")) { //$NON-NLS-1$
        if (target instanceof IJavaElement) {
            IJavaElement javaElement = (IJavaElement) target;
            if (value.equals("isEnabled")) { //$NON-NLS-1$
                while (javaElement != null) {
                    switch (javaElement.getElementType()) {
                    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
                        IPackageFragmentRoot root = (IPackageFragmentRoot) javaElement;
                        return !root.isArchive();
                    case IJavaElement.PACKAGE_FRAGMENT:
                    case IJavaElement.COMPILATION_UNIT:
                    case IJavaElement.CLASS_FILE:
                    case IJavaElement.TYPE:
                        javaElement = javaElement.getParent();
                        break;
                    case IJavaElement.ANNOTATION:
                    case IJavaElement.FIELD:
                    case IJavaElement.IMPORT_CONTAINER:
                    case IJavaElement.IMPORT_DECLARATION:
                    case IJavaElement.INITIALIZER:
                    case IJavaElement.JAVA_MODEL:
                    case IJavaElement.LOCAL_VARIABLE:
                    case IJavaElement.METHOD:
                    case IJavaElement.PACKAGE_DECLARATION:
                    case IJavaElement.TYPE_PARAMETER:
                        return false;
                    case IJavaElement.JAVA_PROJECT:
                        return true;
                    default:
                        break;
                    }
                }
                return true;
            }
        }
    }
    return false;
}

From source file:org.eclipse.recommenders.codesearch.rcp.index.extdoc.ContentProvider.java

License:Open Source License

@Override
public void updateElement(final int index) {
    try {/*  www. jav  a  2 s. c  o  m*/
        s.submit(new Runnable() {
            private IMethod jdtMethod;
            private MethodDeclaration astMethod;
            private IJavaElement element;

            @Override
            public void run() {
                try {
                    final Document doc = searchResults.scoreDoc(index);
                    if (!findHandle(doc)) {
                        final IllegalStateException e = new IllegalStateException(
                                "Could not find handle " + doc.get(Fields.JAVA_ELEMENT_HANDLE));
                        updateIndex(new Selection(e), index);
                        return;
                    }
                    if (!findJdtMethod()) {
                        updateIndex(new Selection(EMPTY, "", doc), index);
                        return;
                    }
                    if (!findAstMethod()) {
                        updateIndex(new Selection(EMPTY, "", doc), index);
                        return;
                    }
                    updateIndex(new Selection(astMethod, doc.get(Fields.VARIABLE_NAME), doc), index);
                } catch (final Exception e) {
                    updateIndex(new Selection(e), index);
                }
            }

            private boolean findHandle(final Document doc) {
                final String handle = doc.get(Fields.JAVA_ELEMENT_HANDLE);
                element = JavaCore.create(handle);
                return element != null;
            }

            private boolean findJdtMethod() {
                jdtMethod = (IMethod) element.getAncestor(IJavaElement.METHOD);
                return jdtMethod != null;
            }

            private boolean findAstMethod() {
                try {
                    final ITypeRoot cu = jdtMethod.getTypeRoot();
                    if (cu == null) {
                        return false;
                    }
                    final CompilationUnit ast = SharedASTProvider.getAST(cu, SharedASTProvider.WAIT_YES, null);
                    if (ast == null) {
                        return false;
                    }

                    // caused NPEs:
                    // ASTNodeSearchUtil.getMethodDeclarationNode(jdtMethod,
                    // ast);
                    astMethod = ASTNodeUtils.find(ast, jdtMethod).orNull();
                } catch (final Exception e) {
                    RecommendersPlugin.logError(e, "failed to find declaring method %s", jdtMethod);
                }
                return astMethod != null;
            }
        });
    } catch (final RejectedExecutionException e) {
        updateIndex(new Selection(new RuntimeException(
                "Too many rendering requests at once. Select this item again to refresh.")), index);
        // the user was just scrolling to fast...
        // to prevent ui freezes we ignore too many requests...
    }
}

From source file:org.eclipse.recommenders.internal.rcp.JavaElementSelections.java

License:Open Source License

public static JavaElementSelectionLocation resolveSelectionLocationFromJavaElement(final IJavaElement element) {
    ensureIsNotNull(element);/*from  w ww.j  av a 2  s  . c  om*/

    switch (element.getElementType()) {
    case IJavaElement.CLASS_FILE:
    case IJavaElement.COMPILATION_UNIT:
    case IJavaElement.PACKAGE_DECLARATION:
    case IJavaElement.IMPORT_DECLARATION:
    case IJavaElement.IMPORT_CONTAINER:
    case IJavaElement.TYPE:
        return TYPE_DECLARATION;
    case IJavaElement.METHOD:
    case IJavaElement.INITIALIZER:
        return METHOD_DECLARATION;
    case IJavaElement.FIELD:
        return FIELD_DECLARATION;
    case IJavaElement.LOCAL_VARIABLE:
        // shouldn't happen in a viewer selection, right?
        return METHOD_BODY;
    case IJavaElement.JAVA_MODEL:
    case IJavaElement.PACKAGE_FRAGMENT:
    case IJavaElement.PACKAGE_FRAGMENT_ROOT:
    case IJavaElement.ANNOTATION:
    default:
        return JavaElementSelectionLocation.UNKNOWN;
    }
}