List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot isArchive
public boolean isArchive();
From source file:org.eclipse.wst.xml.ui.internal.contentassist.tapestry.TapestryRootComponentsProposalComputer.java
License:Open Source License
private List<String> getCustomComponentsNameList(IPackageFragmentRoot[] roots, ComponentPackage cp) { List<String> componentNameList = new ArrayList<String>(); try {/* w w w. ja v a 2 s . c om*/ for (IPackageFragmentRoot root : roots) { if (root instanceof JarPackageFragmentRoot == cp.isArchive() && root.getElementName().equals(cp.getFragmentRoot())) { if (!root.isArchive()) { // Load custom components from source directory IPackageFragment packInstance = root.getPackageFragment(cp.getPath()); if (packInstance != null) { IJavaElement[] elements = packInstance.getChildren(); for (IJavaElement ele : elements) { if (ele.getElementType() == IJavaElement.COMPILATION_UNIT && ele.getElementName().endsWith(".java")) { String name = ele.getElementName().substring(0, ele.getElementName().indexOf('.')); componentNameList.add(name); } } } } else { // Load custom components from jar files for (IJavaElement pack : root.getChildren()) { if (pack != null && pack instanceof PackageFragment && pack.getElementName().equals(cp.getPath())) { for (Object packo : ((PackageFragment) pack) .getChildrenOfType(IJavaElement.CLASS_FILE)) { ClassFile packi = (ClassFile) packo; String itemName = packi.getElementName(); if (itemName.indexOf('$') < 0 && itemName.endsWith(".class")) componentNameList.add(itemName.substring(0, itemName.length() - 6)); } break; } } } return componentNameList; } } } catch (JavaModelException e) { e.printStackTrace(); } return componentNameList; }
From source file:org.eclipse.xtend.ide.validator.XtendUIValidator.java
License:Open Source License
protected String getExpectedPackageName(XtendFile xtendFile) { URI fileURI = xtendFile.eResource().getURI(); for (Pair<IStorage, IProject> storage : storage2UriMapper.getStorages(fileURI)) { if (storage.getFirst() instanceof IFile) { IPath fileWorkspacePath = storage.getFirst().getFullPath(); IJavaProject javaProject = JavaCore.create(storage.getSecond()); if (javaProject != null && javaProject.exists() && javaProject.isOpen()) { try { for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) { if (!root.isArchive() && !root.isExternal()) { IResource resource = root.getResource(); if (resource != null) { IPath sourceFolderPath = resource.getFullPath(); if (sourceFolderPath.isPrefixOf(fileWorkspacePath)) { IPath claspathRelativePath = fileWorkspacePath .makeRelativeTo(sourceFolderPath); return claspathRelativePath.removeLastSegments(1).toString().replace("/", "."); }/* w ww . j av a 2 s . co m*/ } } } } catch (JavaModelException e) { LOG.error("Error resolving expected path for XtendFile", e); } } } } return null; }
From source file:org.eclipse.xtend.shared.ui.core.builder.XtendXpandBuilder.java
License:Open Source License
protected void fullBuild(final IProgressMonitor monitor) throws CoreException { final IXtendXpandProject project = Activator.getExtXptModelManager() .findProject(getProject().getFullPath()); if (project != null) { getProject().accept(new XtendXpandDeltaVisitor(monitor)); final IJavaProject jp = JavaCore.create(getProject()); final IPackageFragmentRoot[] roots = jp.getPackageFragmentRoots(); final Set<String> extensions = new HashSet<String>(); final ResourceContributor[] contributors = Activator.getRegisteredResourceContributors(); for (final ResourceContributor resourceContributor : contributors) { extensions.add(resourceContributor.getFileExtension()); }//from w w w.j a v a 2 s.c o m for (final IPackageFragmentRoot root : roots) { if (root.isArchive()) { try { root.open(monitor); try { final ZipFile zip = ((JarPackageFragmentRoot) root).getJar(); final Enumeration<? extends ZipEntry> entries = zip.entries(); while (entries.hasMoreElements()) { final ZipEntry entry = entries.nextElement(); for (final String ext : extensions) { final String name = entry.getName(); if (name.endsWith(ext)) { final String fqn = name.substring(0, name.length() - ext.length() - 1) .replaceAll("/", "::"); final ResourceID resourceID = new ResourceID(fqn, ext); final IStorage findStorage = JDTUtil.loadFromJar(resourceID, root); project.findXtendXpandResource(findStorage); } } } } finally { root.close(); } } catch (CoreException ex) { XtendLog.logError(ex); } } } } else { XtendLog.logInfo("Couldn't create Xpand project for project " + getProject().getName()); } }
From source file:org.eclipse.xtend.shared.ui.core.internal.JDTUtil.java
License:Open Source License
/** * find the path for the oaw name space and extension * /*from www . j a v a 2 s . com*/ * @param project * - the javaproject * @param oawns * - oaw name space (i.e. 'my::xtend::File') * @param ext * - file extension (i.e. 'ext') * @return */ public static IStorage findStorage(IJavaProject project, ResourceID id, boolean searchJars) { IPath p = path(id); try { IPackageFragmentRoot[] roots = project.getPackageFragmentRoots(); for (int i = 0; i < roots.length; i++) { IPackageFragmentRoot root = roots[i]; if (!root.isArchive()) { IContainer rootFolder = null; IResource correspondingResource = root.getCorrespondingResource(); if (correspondingResource instanceof IContainer) { rootFolder = (IContainer) correspondingResource; } else if (root instanceof ExternalPackageFragmentRoot) { IResource resource = ((ExternalPackageFragmentRoot) root).resource(); if (resource instanceof IContainer) { rootFolder = (IContainer) resource; IStorage member = (IStorage) rootFolder.findMember(p); if (member != null) { return member; } } } if (rootFolder != null) { IResource r = project.getProject() .findMember(rootFolder.getProjectRelativePath().append(p)); if (r instanceof IFile) return (IFile) r; } } else if (searchJars) { IStorage storage = loadFromJar(id, root); if (storage != null) return storage; } } } catch (JavaModelException e) { XtendLog.logInfo(e); } return null; }
From source file:org.eclipse.xtend.typesystem.emf.ui.ProjectAnalyzer.java
License:Open Source License
private void loadMetamodelsForProject(final IJavaProject javaProject, final ResourceSet rs, final IProgressMonitor monitor) { try {/*from ww w . j a va 2 s . com*/ final String ext = Messages.ProjectAnalyzer_2; if (!javaProject.exists()) return; for (final IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) { if (!root.isArchive()) { IResource rootResource = null; if (root instanceof ExternalPackageFragmentRoot) { rootResource = ((ExternalPackageFragmentRoot) root).resource(); } else { rootResource = root.getUnderlyingResource(); } if (rootResource != null) { try { // if (!rootResource.exists() || !rootResource.isAccessible()) rootResource.refreshLocal(IResource.DEPTH_INFINITE, monitor); rootResource.accept(new IResourceVisitor() { public boolean visit(final IResource resource) throws CoreException { if (resource instanceof IFile && ext.equals(((IFile) resource).getFileExtension())) { loadModelFromStorage(rs, (IFile) resource); } return true; } }); } catch (final CoreException e) { EmfToolsLog.logError(e); } } } else { // skip JRE jars if (((JarPackageFragmentRoot) root).getPath().toString().contains(Messages.ProjectAnalyzer_3)) { if (EmfToolsPlugin.trace) { System.out.println(Messages.ProjectAnalyzer_4 + ((JarPackageFragmentRoot) root).getPath().toString()); } continue; } root.open(monitor); try { final ZipFile zip = ((JarPackageFragmentRoot) root).getJar(); final Enumeration<? extends ZipEntry> entries = zip.entries(); while (entries.hasMoreElements()) { final ZipEntry entry = entries.nextElement(); final String name = entry.getName(); if (name.endsWith(ext)) { final String fqn = name.substring(0, name.length() - ext.length() - 1) .replaceAll(Messages.ProjectAnalyzer_5, Messages.ProjectAnalyzer_6); final ResourceID resourceID = new ResourceID(fqn, ext); final IStorage findStorage = JDTUtil.loadFromJar(resourceID, root); if (findStorage != null) { loadModelFromStorage(rs, findStorage); } } } } catch (final CoreException e) { EmfToolsLog.logError(e); } finally { root.close(); } } } } catch (final JavaModelException e) { EmfToolsLog.logError(e); } }
From source file:org.eclipse.xtext.builder.impl.javasupport.JdtToBeBuiltComputer.java
License:Open Source License
/** * Handle all fragment roots that are on the classpath and not a source folder. *//*from w ww.jav a2 s . co m*/ private boolean shouldHandle(IPackageFragmentRoot root) { try { boolean result = !JavaRuntime.newDefaultJREContainerPath() .isPrefixOf(root.getRawClasspathEntry().getPath()); result &= (root.isArchive() || root.isExternal()); return result; } catch (JavaModelException ex) { if (!ex.isDoesNotExist()) log.error(ex.getMessage(), ex); return false; } }
From source file:org.eclipse.xtext.ui.resource.JarEntryLocator.java
License:Open Source License
/** * @return a URI for the given jarEntry, can be <code>null</code>. *//* www . ja v a 2 s. c o m*/ public URI getURI(IPackageFragmentRoot root, IJarEntryResource jarEntry, TraversalState state) { if (root.isArchive()) { URI jarURI = JarEntryURIHelper.getUriForPackageFragmentRoot(root); URI storageURI = URI.createURI(jarEntry.getFullPath().toString()); return createJarURI(root.isArchive(), jarURI, storageURI); } else if (root instanceof ExternalPackageFragmentRoot) { IResource resource = ((ExternalPackageFragmentRoot) root).resource(); IPath result = resource.getFullPath(); for (int i = 1; i < state.getParents().size(); i++) { Object obj = state.getParents().get(i); if (obj instanceof IPackageFragment) { result = result.append(new Path(((IPackageFragment) obj).getElementName().replace('.', '/'))); } else if (obj instanceof IJarEntryResource) { result = result.append(((IJarEntryResource) obj).getName()); } } result = result.append(jarEntry.getName()); return URI.createPlatformResourceURI(result.toString(), true); } else { throw new IllegalStateException("Unexpeced root type: " + root.getClass().getName()); } }
From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java
License:Open Source License
/** * @since 2.4// w w w. jav a 2 s . c o m */ @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 getData(IPackageFragmentRoot root) { final boolean isCachable = root.isArchive() || root.isExternal(); if (isCachable) { return getCachedData(root); }/*ww w. j av a 2s . c om*/ PackageFragmentRootData data = initializeData(root); return data; }
From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java
License:Open Source License
/** * @since 2.5//from www . ja va 2 s .c om */ @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; }