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

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

Introduction

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

Prototype

boolean isExternal();

Source Link

Document

Returns whether this package fragment root is external to the workbench (that is, a local file), and has no underlying resource.

Usage

From source file:org.eclipse.virgo.ide.export.ParExportWizardPage.java

License:Open Source License

@Override
protected ViewerFilter getTreeViewerFilter() {
    return new ViewerFilter() {

        @Override// w w  w. ja  v a 2 s . c o  m
        public boolean select(Viewer viewer, Object parentElement, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                IPackageFragmentRoot root = (IPackageFragmentRoot) element;
                return !root.isArchive() && !root.isExternal();
            } else if (element instanceof IProject) {
                IProject project = (IProject) element;
                try {
                    IFacetedProject facetedProject = ProjectFacetsManager.create(project);
                    if (facetedProject == null) {
                        return false;
                    }
                    return facetedProject.hasProjectFacet(ProjectFacetsManager
                            .getProjectFacet(FacetCorePlugin.PAR_FACET_ID).getDefaultVersion());
                } catch (CoreException e) {
                    return false;
                }
            }
            return false;
        }
    };
}

From source file:org.eclipse.virgo.ide.manifest.internal.core.validation.rules.ExportPackageRule.java

License:Open Source License

private void validateExportPackage(BundleManifestHeader header, ManifestElement element,
        BundleManifestValidationContext context) {
    boolean found = false;
    try {//  w  w  w  .java 2s.  c om
        IPackageFragmentRoot[] roots = JdtUtils.getJavaProject(context.getRootElement().getElementResource())
                .getPackageFragmentRoots();

        for (IPackageFragmentRoot root : roots) {
            int kind = root.getKind();
            if (kind == IPackageFragmentRoot.K_SOURCE
                    || (kind == IPackageFragmentRoot.K_BINARY && !root.isExternal())) {
                IJavaElement[] javaElements = root.getChildren();
                for (int j = 0; j < javaElements.length; j++)
                    if (javaElements[j] instanceof IPackageFragment) {
                        IPackageFragment fragment = (IPackageFragment) javaElements[j];
                        String name = fragment.getElementName();
                        if (name.length() == 0) {
                            name = ".";
                        }
                        if (fragment.containsJavaResources() || fragment.getNonJavaResources().length > 0) {
                            if (name.equals(element.getValue())) {
                                found = true;
                            }
                        }
                    }
            }
        }
    } catch (JavaModelException e) {
    }

    // if we actually have packages to add
    if (!found) {
        context.warning("MISSING_PACKAGE_EXPORT", "Bundle does export non-existing package",
                header.getLineNumber() + 1);
    }
}

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("/",
                                            ".");
                                }/*from  ww w  .ja v  a 2s .  c o  m*/
                            }
                        }
                    }
                } catch (JavaModelException e) {
                    LOG.error("Error resolving expected path for XtendFile", e);
                }
            }
        }
    }
    return null;
}

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.
 */// w ww. j  a  va  2s  .c  om
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.containers.JavaProjectsStateHelper.java

License:Open Source License

protected IPackageFragmentRoot getJarWithEntry(URI uri) {
    Iterable<Pair<IStorage, IProject>> storages = getStorages(uri);
    IPackageFragmentRoot result = null;//from  w w  w .  j a  v a 2  s .  c om
    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.PackageFragmentRootWalker.java

License:Open Source License

private boolean existsPhysically(IPackageFragmentRoot root) throws JavaModelException {
    if (root.isExternal())
        return root.getPath().toFile().exists();
    else//from  w w  w .j a  va  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 ww w . j ava 2 s .co 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);
    }/*from   w  w w . ja  va 2  s.com*/
    PackageFragmentRootData data = initializeData(root);
    return data;
}

From source file:org.eclipse.xtext.ui.resource.Storage2UriMapperJavaImpl.java

License:Open Source License

/**
 * @since 2.5/*w w w . j a  va  2  s  .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.resource.Storage2UriMapperJavaImpl.java

License:Open Source License

/**
 * @since 2.4/*from   w  w  w  .j  av  a2  s.co m*/
 */
private void updateCache(IJavaProject project) {
    Set<PackageFragmentRootData> datas = newHashSet();
    try {
        if (project.exists() && project.getProject().isAccessible()) {
            for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
                boolean isCachable = root.isArchive() || root.isExternal();
                if (isCachable)
                    datas.add(getCachedData(root));
            }
        }
    } catch (JavaModelException e) {
        if (!e.isDoesNotExist())
            log.error("Error getting package fragments roots of " + project.getElementName(), e);
    } finally {
        clearCache(project, datas);
    }
}