List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot getPath
IPath getPath();
From source file:org.eclipse.xtext.common.types.ui.trace.TraceForTypeRootProvider.java
License:Open Source License
protected IPath getSourcePath(final ITypeRoot derivedJavaType) { IJavaElement current = derivedJavaType.getParent(); while (current != null) { if (current instanceof IPackageFragmentRoot) { IPackageFragmentRoot fragmentRoot = (IPackageFragmentRoot) current; try { IPath attachmentPath = fragmentRoot.getSourceAttachmentPath(); if (attachmentPath != null) return attachmentPath; } catch (JavaModelException e) { }/* w w w . j a va 2 s. co m*/ if (current instanceof JarPackageFragmentRoot) return fragmentRoot.getPath(); } current = current.getParent(); } return null; }
From source file:org.eclipse.xtext.ui.containers.JavaProjectsStateHelper.java
License:Open Source License
protected IPackageFragmentRoot getJarWithEntry(URI uri) { Iterable<Pair<IStorage, IProject>> storages = getStorages(uri); IPackageFragmentRoot result = null;//w w w . j av a 2 s .c o m for (Pair<IStorage, IProject> storage2Project : storages) { IStorage storage = storage2Project.getFirst(); if (storage instanceof IJarEntryResource) { IPackageFragmentRoot fragmentRoot = ((IJarEntryResource) storage).getPackageFragmentRoot(); if (fragmentRoot != null) { // IPackageFragmentRoot has some unexpected caching - it may return a different project // thus we use the one that was used to record the IPackageFragmentRoot IProject actualProject = storage2Project.getSecond(); IJavaProject javaProject = JavaCore.create(actualProject); if (!javaProject.exists()) { javaProject = fragmentRoot.getJavaProject(); } if (isAccessibleXtextProject(javaProject.getProject())) { // if both projects are the same - fine if (javaProject.equals(fragmentRoot.getJavaProject())) return fragmentRoot; // otherwise re-obtain the fragment root from the real project if (fragmentRoot.isExternal()) { IPackageFragmentRoot actualRoot = javaProject .getPackageFragmentRoot(fragmentRoot.getPath().toString()); if (actualProject.exists()) { return actualRoot; } } else { IPackageFragmentRoot actualRoot = javaProject .getPackageFragmentRoot(fragmentRoot.getResource()); if (actualRoot.exists()) { return actualRoot; } } result = fragmentRoot; } if (result == null) result = fragmentRoot; } } } return result; }
From source file:org.eclipse.xtext.ui.resource.JarEntryURIHelper.java
License:Open Source License
public static URI getUriForPackageFragmentRoot(IPackageFragmentRoot root) { IResource underlyingResource = root.getResource(); if (underlyingResource == null) { return URI.createFileURI(root.getPath().toString()); } else {//from w w w . j a v a 2s .com return URI.createPlatformResourceURI(underlyingResource.getFullPath().toString(), true); } }
From source file:org.eclipse.xtext.ui.resource.PackageFragmentRootWalker.java
License:Open Source License
private boolean existsPhysically(IPackageFragmentRoot root) throws JavaModelException { if (root.isExternal()) return root.getPath().toFile().exists(); else/*w w w . j a v a 2 s . c om*/ return root.getUnderlyingResource().exists(); }
From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java
License:Open Source License
/** * @since 2.4//from w w w . j a v a 2s .c om */ @Override public Pair<URI, URI> getURIMapping(IPackageFragmentRoot root) throws JavaModelException { PackageFragmentRootData data = getData(root); if (data.uriPrefix == null) return null; IPath path = root.isExternal() ? root.getPath() : root.getUnderlyingResource().getLocation(); URI physical = null; if (root.isArchive()) { String archiveScheme = "zip".equalsIgnoreCase(root.getPath().getFileExtension()) ? "zip" : "jar"; physical = URI.createURI(archiveScheme + ":file:" + path.toFile().getPath() + "!/"); } else { physical = URI.createFileURI(path.toFile().getPath() + "/"); } return Tuples.create(data.uriPrefix, physical); }
From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java
License:Open Source License
private PackageFragmentRootData getCachedData(IPackageFragmentRoot root) { final String path = root.getPath().toString(); synchronized (cachedPackageFragmentRootData) { if (cachedPackageFragmentRootData.containsKey(path)) { final PackageFragmentRootData data = cachedPackageFragmentRootData.get(path); if (isUpToDate(data, root)) { data.addRoot(root);//from ww w.j a va 2 s .c o m return data; } else { cachedPackageFragmentRootData.remove(path); } } } PackageFragmentRootData data = initializeData(root); synchronized (cachedPackageFragmentRootData) { cachedPackageFragmentRootData.put(path, data); } return data; }
From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java
License:Open Source License
private Object computeModificationStamp(IPackageFragmentRoot root) { try {//from w w w .j a va 2 s .com if (root.exists()) { IResource resource = root.getUnderlyingResource(); if (resource != null) { Object result = getLastModified(resource); if (result != null) { return result; } } return root.getPath().toFile().lastModified(); } } catch (CoreException e) { log.error(e.getMessage(), e); } return new Object(); }
From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java
License:Open Source License
/** * @since 2.5//from w ww .j a v a 2s.c o m */ @Override public URI getUri(/* @NonNull */ IStorage storage) { if (storage instanceof IJarEntryResource) { final IJarEntryResource casted = (IJarEntryResource) storage; IPackageFragmentRoot packageFragmentRoot = casted.getPackageFragmentRoot(); Map<URI, IStorage> data = getAllEntries(packageFragmentRoot); for (Map.Entry<URI, IStorage> entry : data.entrySet()) { if (entry.getValue().equals(casted)) return entry.getKey(); } if (packageFragmentRoot.exists() && packageFragmentRoot.isArchive()) { IPath jarPath = packageFragmentRoot.getPath(); URI jarURI; if (packageFragmentRoot.isExternal()) { jarURI = URI.createFileURI(jarPath.toOSString()); } else { jarURI = URI.createPlatformResourceURI(jarPath.toString(), true); } URI result = URI.createURI("archive:" + jarURI + "!" + storage.getFullPath()); return result; } } return null; }
From source file:org.eclipse.xtext.ui.util.JdtClasspathUriResolver.java
License:Open Source License
protected URI findResourceInWorkspace(IJavaProject javaProject, URI classpathUri) throws CoreException { if (javaProject.exists()) { String packagePath = classpathUri.trimSegments(1).path(); String fullPath = classpathUri.path(); String fileName = classpathUri.lastSegment(); IPath filePath = new Path(fileName); String packageName = isEmpty(packagePath) ? "" : packagePath.substring(1).replace('/', '.'); for (IPackageFragmentRoot packageFragmentRoot : javaProject.getAllPackageFragmentRoots()) { IPackageFragment packageFragment = packageFragmentRoot.getPackageFragment(packageName); if (packageFragment.exists()) { IResource packageFragmentResource = packageFragment.getResource(); if (packageFragmentResource instanceof IContainer) { IFile file = ((IContainer) packageFragmentResource).getFile(filePath); if (file.exists()) return createPlatformResourceURI(file); } else { // jar file or external class folder if (packageFragmentRoot.isArchive()) { // jar file Object[] nonJavaResources = getNonJavaResources(packageFragmentRoot, packageFragment); for (Object nonJavaResource : nonJavaResources) { IJarEntryResource jarEntryResource = (IJarEntryResource) nonJavaResource; if (fullPath.equals(jarEntryResource.getFullPath().toString())) { IResource packageFragmentRootResource = packageFragmentRoot.getResource(); if (packageFragmentRootResource != null) { // we have a resource - use nested platform/resource URI packageFragmentRootURI = createPlatformResourceURI( packageFragmentRootResource); URI result = createArchiveURI(packageFragmentRootURI, fullPath); return result; } else { // no resource - use file uri IPath packageFragmentRootPath = packageFragmentRoot.getPath(); URI packageFragmentRootURI = URI .createFileURI(packageFragmentRootPath.toString()); URI result = createArchiveURI(packageFragmentRootURI, fullPath); return result; }// ww w . j a va 2 s .c o m } } } else if (packageFragmentRoot.isExternal()) { // external class folder Object[] nonJavaResources = getNonJavaResources(packageFragmentRoot, packageFragment); for (Object nonJavaResource : nonJavaResources) { IJarEntryResource jarEntryResource = (IJarEntryResource) nonJavaResource; if (fileName.equals(jarEntryResource.getName())) { IResource packageFragmentRootResource = ((ExternalPackageFragmentRoot) packageFragmentRoot) .resource(); IPath absolutePath = packageFragmentRootResource.getFullPath(); absolutePath = absolutePath.append(fullPath); return createPlatformResourceURI(absolutePath); } } } } } } // not found in a source folder - look for a resource relative to project root // of this project or one of its dependencies URI result = findResourceInProjectRoot(javaProject, classpathUri.path(), Sets.<String>newHashSet()); if (result != null) { return result; } } return classpathUri; }
From source file:org.eclipse.xtext.xbase.ui.validation.XbaseUIValidator.java
License:Open Source License
protected IClasspathEntry getResolvedClasspathEntry(IJavaProject javaProject, /* @NonNull */ IPackageFragmentRoot root) throws JavaModelException { IClasspathEntry result = null;/*from w w w . j av a2s .c om*/ JavaProject castedProject = (JavaProject) javaProject; castedProject.getResolvedClasspath(); // force the resolved entry cache to be populated @SuppressWarnings("rawtypes") Map rootPathToResolvedEntries = castedProject.getPerProjectInfo().rootPathToResolvedEntries; if (rootPathToResolvedEntries != null) { result = (IClasspathEntry) rootPathToResolvedEntries.get(root.getPath()); if (result == null) result = (IClasspathEntry) rootPathToResolvedEntries.get(root.getJavaProject().getPath()); } return result; }