Example usage for org.eclipse.jdt.core IMember getResource

List of usage examples for org.eclipse.jdt.core IMember getResource

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IMember getResource.

Prototype

IResource getResource();

Source Link

Document

Returns the innermost resource enclosing this element.

Usage

From source file:org.eclim.plugin.jdt.command.hierarchy.CallHierarchyCommand.java

License:Open Source License

private HashMap<String, Object> formatRoot(MethodWrapper root, Comparator<MethodWrapper> comparator,
        boolean callees) throws Exception {
    IMember member = root.getMember();/*from   w w  w  . j a  v  a  2s  . co  m*/
    String memberName = JavaElementLabels.getTextLabel(member, AppearanceAwareLabelProvider.DEFAULT_TEXTFLAGS
            | JavaElementLabels.ALL_POST_QUALIFIED | JavaElementLabels.P_COMPRESSED);
    CallLocation location = root.getMethodCall().getFirstCallLocation();

    HashMap<String, Object> result = new HashMap<String, Object>();
    result.put("name", memberName);

    if (location != null) {
        // If caller, locationMember == member. If callee, locationMember
        // is the function where the callee is called.
        IMember locationMember = location.getMember();
        IResource resource = locationMember.getResource();

        if (resource != null) {
            String file = resource.getLocation().toOSString().replace('\\', '/');
            int offset = location.getStart();

            result.put("position", Position.fromOffset(file, null, offset, location.getEnd() - offset));
        }
    }

    result.put(callees ? "callees" : "callers",
            formatRoots(root.getCalls(new NullProgressMonitor()), comparator, callees));

    return result;
}

From source file:org.eclipse.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.java

License:Open Source License

/** API for {@link RoleBindingChangedListener}. */
public void updateCallinMarker(final IMember member, IStatusLineManager statusLine) {
    if (!isEnabled())
        return;//from  w w w .j  a  va2  s  .  c  om

    if (!isCached(member.getResource()) && !isCreatingMarkersFor(member.getResource()))
        return;

    final IMarkableJavaElement target = MarkableFactory.createMarkable(member.getResource());
    CallinMarkerJob job = new CallinMarkerJob(target) {
        protected void updateMarkers(IProgressMonitor monitor) throws Exception {
            updateCallinMarker(target, member, monitor);
        }
    };

    // updating just one single method will not set current _currentJob
    schedule(job, statusLine);
}

From source file:org.eclipse.objectteams.otdt.internal.ui.callinmarkers.CallinMarkerCreator2.java

License:Open Source License

private void updateCallinMarker(IMarkableJavaElement target, IMember member, IProgressMonitor monitor)
        throws CoreException {
    // TODO(SH): in this scenario a search for all callins mentioning method should be faster.
    try {/*from   w w  w .  jav  a 2 s  .  c o  m*/
        monitor.beginTask(
                NLS.bind(OTDTUIPlugin.getResourceString("CallinMarkerCreator2.updating_for_method_message"), //$NON-NLS-1$
                        new Object[] { member.getElementName() }),
                45);

        IResource resource = member.getResource();
        if (resource != null) // only called when base class changed -> source only.
        {
            CallinMarkerRemover.removeCallinMarker(member, resource);
            monitor.worked(5);

            // find direct roles:
            ArrayList<IType> allTypes = new ArrayList<IType>(1);
            allTypes.add((IType) member.getAncestor(IJavaElement.TYPE)); // TODO(SH): could be IOTType?
            Map<IMember, Set<IType>> playedByMap = OTSearchHelper.searchPlayedByBindings(allTypes,
                    new IJavaProject[] { member.getJavaProject() }, new MySubProgressMonitor(monitor, 20));
            if (playedByMap == null || playedByMap.isEmpty())
                return; // no base types or cancelled

            // collect all roles w/ subroles for use as search scope:
            IMember[] allRoleTypes = collectRolesAndSubroles(playedByMap,
                    new MySubProgressMonitor(monitor, 10));
            if (monitor.isCanceled())
                return;

            ArrayList<IMember> memberSet = new ArrayList<IMember>(1);
            memberSet.add(member);
            updateMethodMarkers(target, allRoleTypes, memberSet, new SubProgressMonitor(monitor, 10));
        }
    } finally {
        monitor.done();
    }
}

From source file:org.eclipse.objectteams.otdt.internal.ui.callinmarkers.RoleBindingChangedListener.java

License:Open Source License

private void handleDeltaKind(IJavaElementDelta delta, IMember baseMember, Set<IMember> addedBaseMembers) {
    if (delta.getKind() == IJavaElementDelta.ADDED) {
        // don't yet handle, first count how many additions we have
        addedBaseMembers.add(baseMember);
    } else if (delta.getKind() == IJavaElementDelta.REMOVED) {
        baseMemberRemoved(baseMember, baseMember.getResource());
    }/*  ww w.  java 2  s.c o m*/
}

From source file:org.eclipse.xtext.builder.smap.XbaseBreakpointUtil.java

License:Open Source License

protected IResource getBreakpointResource(IMember member) {
    ICompilationUnit cu = member.getCompilationUnit();
    if (cu != null && cu.isWorkingCopy()) {
        member = (IMember) member.getPrimaryElement();
    }//from   www .j a va2  s.  c om
    IResource res = member.getResource();
    if (res == null) {
        res = ResourcesPlugin.getWorkspace().getRoot();
    } else if (!res.getProject().exists()) {
        res = ResourcesPlugin.getWorkspace().getRoot();
    }
    return res;
}

From source file:org.eclipse.xtext.common.types.ui.navigation.LinkToOriginDetector.java

License:Open Source License

@Override
public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region,
        boolean canShowMultipleHyperlinks) {
    try {/*from   www .  j a  va  2 s.c om*/
        // very pessimistic guards - most things should never happen
        ITextEditor textEditor = (ITextEditor) getAdapter(ITextEditor.class);
        if (textEditor == null)
            return null;
        IEditorInput editorInput = textEditor.getEditorInput();
        if (editorInput == null)
            return null;
        IJavaElement adaptedJavaElement = (IJavaElement) Platform.getAdapterManager().getAdapter(editorInput,
                IJavaElement.class);
        if (adaptedJavaElement == null)
            return null;
        ICompilationUnit compilationUnit = (ICompilationUnit) adaptedJavaElement
                .getAncestor(IJavaElement.COMPILATION_UNIT);
        if (compilationUnit == null)
            return null;
        try {
            IRegion selectedWord = org.eclipse.jdt.internal.ui.text.JavaWordFinder
                    .findWord(textViewer.getDocument(), region.getOffset());
            // the actual implementation - find the referenced Java type under the cursor and link
            // to its origin if it's contained in a 'derived' resource
            IJavaElement[] javaElements = compilationUnit.codeSelect(selectedWord.getOffset(),
                    selectedWord.getLength());
            for (IJavaElement javaElement : javaElements) {
                /**
                 * if IDE 3.8 is available the default 'Open Declaration' navigation will already open the original editor
                 * So we don't need the additional hyperlinks.
                 */
                boolean provideHyperlinkOnReferences = !is_ORG_ECLIPSE_UI_IDE_3_8_Enabled()
                        || compilationUnit.equals(((IMember) javaElement).getCompilationUnit());
                if (javaElement instanceof IMember && provideHyperlinkOnReferences) {
                    IMember selectedMember = (IMember) javaElement;
                    IResource resource = selectedMember.getResource();
                    if (resource instanceof IFile) {
                        ITrace traceToSource = traceInformation.getTraceToSource((IStorage) resource);
                        if (traceToSource == null) {
                            return null;
                        }
                        ILocationInResource sourceInformation = IterableExtensions
                                .head(traceToSource.getAllAssociatedLocations());
                        if (sourceInformation != null) {
                            try {
                                URI resourceURI = sourceInformation.getAbsoluteResourceURI().getURI();
                                if (resourceURI != null) {
                                    IResourceServiceProvider serviceProvider = serviceProviderRegistry
                                            .getResourceServiceProvider(resourceURI);
                                    if (serviceProvider == null)
                                        return null;
                                    LinkToOriginProvider provider = serviceProvider
                                            .get(LinkToOriginProvider.class);
                                    LinkToOrigin hyperlink = provider.createLinkToOrigin(sourceInformation,
                                            selectedWord, selectedMember, compilationUnit,
                                            Collections.<LinkToOrigin>emptyList());
                                    if (hyperlink != null) {
                                        return new IHyperlink[] { hyperlink };
                                    }
                                }
                            } catch (IllegalArgumentException e) {
                                /* invalid URI - ignore */ }
                        }
                        return null;
                    }
                }
            }
            return null;
        } catch (JavaModelException e) {
            return null;
        }
    } catch (Throwable t) {
        return null;
    }
}

From source file:org.jboss.tools.batch.internal.core.impl.definition.AbstractMemberDefinition.java

License:Open Source License

protected void addDependency(IMember reference, IRootDefinitionContext context) {
    if (reference == null || reference.isBinary())
        return;// w  ww  .ja  va  2 s . c om
    IResource resource = getResource();
    if (!(resource instanceof IFile))
        return;
    IFile target = (IFile) resource;
    IFile source = (IFile) reference.getResource();
    if (target.exists() && source != null && source.exists()) {
        context.addDependency(source.getFullPath(), target.getFullPath());
    }
}

From source file:org.jboss.tools.cdi.core.CDIUtil.java

License:Open Source License

/**
 * Converts ISourceRange to ITextSourceReference
 * /*from w  w  w  .  j  a  v a 2s. c  om*/
 * @param range
 * @return
 */
public static ITextSourceReference convertToSourceReference(final ISourceRange range, final IResource resource,
        final IMember javaElement) {
    if (javaElement == null || javaElement.getResource() == null
            || !javaElement.getResource().equals(resource)) {
        return new ITextSourceReference() {

            public int getStartPosition() {
                return range.getOffset();
            }

            public int getLength() {
                return range.getLength();
            }

            public IResource getResource() {
                return resource;
            }
        };
    } else {
        return new IJavaSourceReference() {
            public IMember getSourceMember() {
                return javaElement;
            }

            public IJavaElement getSourceElement() {
                return javaElement;
            }

            public int getStartPosition() {
                return range.getOffset();
            }

            public IResource getResource() {
                return resource;
            }

            public int getLength() {
                return range.getLength();
            }
        };
    }
}

From source file:org.jboss.tools.cdi.core.CDIUtil.java

License:Open Source License

/**
 * Converts ITypeDeclaration reference to IJavaSourceReference if
 * 1) javaElement is not null,/*from w  w w  .  j  a  v  a  2  s .  co m*/
 * 2) reference and javaElement are declared in the same resource
 * 
 * @param reference
 * @param javaElement
 * @return
 */
public static ITextSourceReference convertToJavaSourceReference(final ITextSourceReference reference,
        final IMember javaElement) {
    if (reference instanceof IJavaSourceReference || javaElement == null || (reference.getResource() != null
            && !(reference.getResource().equals(javaElement.getResource())))) {
        return reference;
    }
    return new IJavaSourceReference() {
        public IMember getSourceMember() {
            return javaElement;
        }

        public IJavaElement getSourceElement() {
            return javaElement;
        }

        public int getStartPosition() {
            return reference.getStartPosition();
        }

        public IResource getResource() {
            return reference.getResource();
        }

        public int getLength() {
            return reference.getLength();
        }
    };
}

From source file:org.jboss.tools.common.java.ParametedTypeFactory.java

License:Open Source License

public ParametedType getParametedTypeForParameter(IMember context, String typeParameterSignature,
        ParametedType result) throws JavaModelException {
    IType contextType = context instanceof IType ? (IType) context : context.getDeclaringType();
    String key = context == null ? typeParameterSignature
            : contextType.getFullyQualifiedName() + "+" + typeParameterSignature;

    String t = Signature.getTypeVariable(typeParameterSignature);
    String[] bounds = Signature.getTypeParameterBounds(typeParameterSignature);

    t = Signature.C_RESOLVED + t + Signature.C_SEMICOLON;
    if (result == null || t.equals(result.getSignature()) || result.getSignature().endsWith("[" + t)) {
        if (bounds.length > 0 && bounds[0].length() > 0) {
            ParametedType st = getParametedType(contextType, bounds[0]);
            if (st != null) {
                result = new TypeDeclaration(st, context.getResource(), 0, 0);
                result.setUpper(true);/*from  www.  ja  va  2  s  .c om*/
            }
        } else if (result != null) {
            result.setSignature(t);
        }
        if (result == null) {
            result = new ParametedType();
            result.setFactory(this);
            result.setSignature(t);
        }
        result.setVariable(true);
        cache.put(key, result);
        return result;
    }
    return null;
}