Example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoots

List of usage examples for org.eclipse.jdt.core IJavaProject getPackageFragmentRoots

Introduction

In this page you can find the example usage for org.eclipse.jdt.core IJavaProject getPackageFragmentRoots.

Prototype

IPackageFragmentRoot[] getPackageFragmentRoots() throws JavaModelException;

Source Link

Document

Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath.

Usage

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());
        }/* www. j a v  a  2 s  .  co  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. java  2  s.  co m*/
 * @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.shared.ui.core.internal.JDTUtil.java

License:Open Source License

public static ResourceID findXtendXpandResourceID(IJavaProject project, IStorage file) {
    if (file == null)
        return null;
    try {/* w  w  w.  j  a  v  a  2 s .  c om*/
        IPackageFragmentRoot[] roots = project.getPackageFragmentRoots();
        for (int i = 0; i < roots.length; i++) {
            IPackageFragmentRoot root = roots[i];
            if (root.getPath().isPrefixOf(file.getFullPath())) {
                IPath shortOne = file.getFullPath().removeFirstSegments(root.getPath().segmentCount());
                String ns = shortOne.removeFileExtension().toString();
                ns = patternSlash.matcher(ns).replaceAll("::");
                return new ResourceID(ns, shortOne.getFileExtension());
            }
        }
    } catch (JavaModelException e1) {
        XtendLog.logInfo(e1);
    }
    return null;
}

From source file:org.eclipse.xtend.shared.ui.core.internal.JDTUtil.java

License:Open Source License

public static IJavaProject getJProject(IStorage s) {
    if (s instanceof IFile) {
        return JavaCore.create(((IFile) s).getProject());
    } else {/*www .j ava2 s  .  c  o  m*/
        IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
        for (int i = 0; i < projects.length; i++) {
            IProject project = projects[i];
            IJavaProject p = JavaCore.create(project);
            if (p.exists()) {
                IPackageFragmentRoot[] roots;
                try {
                    roots = p.getPackageFragmentRoots();
                    for (int j = 0; j < roots.length; j++) {
                        IPackageFragmentRoot root = roots[j];
                        if (root.getPath().isPrefixOf(s.getFullPath()))
                            return p;
                    }
                } catch (JavaModelException e) {
                    XtendLog.logError(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  w ww .  j av  a  2s  .c  o  m*/
        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

@Override
public void updateProject(ToBeBuilt toBeBuilt, IProject project, IProgressMonitor monitor)
        throws CoreException {
    SubMonitor progress = SubMonitor.convert(monitor, 2);
    if (progress.isCanceled()) {
        throw new OperationCanceledException();
    }/*from w w w  .  ja va2 s .  c  om*/
    if (!project.isAccessible())
        return;
    IJavaProject javaProject = JavaCore.create(project);
    if (javaProject.exists()) {
        IPackageFragmentRoot[] roots = javaProject.getPackageFragmentRoots();
        progress.setWorkRemaining(roots.length);
        final Map<String, Long> updated = Maps.newHashMap();
        ProjectOrder orderedProjects = workspace.computeProjectOrder(workspace.getRoot().getProjects());
        for (final IPackageFragmentRoot root : roots) {
            if (progress.isCanceled())
                throw new OperationCanceledException();
            if (shouldHandle(root) && !isBuiltByUpstream(root, project, orderedProjects.projects)) {
                Map<URI, IStorage> rootData = jdtUriMapperExtension.getAllEntries(root);
                for (Map.Entry<URI, IStorage> e : rootData.entrySet())
                    if (uriValidator.canBuild(e.getKey(), e.getValue())) {
                        toBeBuilt.getToBeDeleted().add(e.getKey());
                        toBeBuilt.getToBeUpdated().add(e.getKey());
                    }
            }
            progress.worked(1);
        }
        synchronized (modificationStampCache) {
            modificationStampCache.projectToModificationStamp.putAll(updated);
        }
    }
}

From source file:org.eclipse.xtext.common.types.ui.trace.JarEntryAwareTrace.java

License:Open Source License

protected AbsoluteURI resolvePath(IJavaProject javaProject, SourceRelativeURI path) {
    try {/*  w w w. j  a va2s  .  com*/
        for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots())
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                IResource resource = root.getResource();
                if (resource instanceof IFolder) {
                    IFolder folder = (IFolder) resource;
                    String decodedPath = URI.decode(path.toString());
                    IResource candidate = folder.findMember(decodedPath);
                    if (candidate != null && candidate.exists())
                        return new AbsoluteURI(URI
                                .createPlatformResourceURI(resource.getFullPath() + "/" + decodedPath, true));
                }
            }
    } catch (JavaModelException e) {
        log.error("Error resolving path", e);
    }
    return null;
}

From source file:org.eclipse.xtext.ui.containers.JavaProjectsStateHelper.java

License:Open Source License

protected IPackageFragmentRoot getJavaElement(final IFile file) {
    IJavaProject jp = JavaCore.create(file.getProject());
    if (!jp.exists())
        return null;
    IPackageFragmentRoot[] roots;// www .  j  av  a  2s  . co  m
    try {
        roots = jp.getPackageFragmentRoots();
        for (IPackageFragmentRoot root : roots) {
            if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
                IResource resource2 = root.getUnderlyingResource();
                if (resource2.contains(file))
                    return root;
            }
        }
    } catch (JavaModelException e) {
        if (!e.isDoesNotExist())
            log.error(e.getMessage(), e);
    }
    return null;
}

From source file:org.eclipse.xtext.ui.generator.trace.DefaultUITraceURIConverter.java

License:Open Source License

protected URI computeTraceURI(URI uri, IJavaProject javaProject) throws JavaModelException {
    for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots())
        if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
            URI prefix = URI.createPlatformResourceURI(
                    root.getResource().getFullPath().addTrailingSeparator().toString(), true);
            if (isPrefix(prefix, uri))
                return uri.deresolve(prefix).trimFragment().trimQuery();
        }//w  w  w.j a v a  2  s  .c o  m
    return super.getURIForTrace(uri);
}

From source file:org.eclipse.xtext.ui.generator.trace.JavaProjectAwareTraceContribution.java

License:Open Source License

@Nullable
protected URI computeTraceURI(URI uri, IJavaProject javaProject) throws JavaModelException {
    for (IPackageFragmentRoot root : javaProject.getPackageFragmentRoots()) {
        if (root.getKind() == IPackageFragmentRoot.K_SOURCE) {
            URI prefix = URI.createPlatformResourceURI(
                    root.getResource().getFullPath().addTrailingSeparator().toString(), true);
            if (traceURIHelper.isPrefix(prefix, uri))
                return uri.deresolve(prefix).trimFragment().trimQuery();
        }//  w w  w.ja va2s .  com
    }
    return null;
}