Example usage for org.eclipse.jdt.core IPackageFragmentRoot isArchive

List of usage examples for org.eclipse.jdt.core IPackageFragmentRoot isArchive

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IPackageFragmentRoot isArchive.

Prototype

public boolean isArchive();

Source Link

Document

Returns whether this package fragment root's underlying resource is a binary archive (a JAR or zip file).

Usage

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;
}