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.xtext.ui.resource.Storage2UriMapperJavaImpl.java

License:Open Source License

/**
 * @since 2.4/* w  w  w  .  ja  va2  s .  c om*/
 */
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);
    }
}

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;
                                }/*from   w w w  .  jav a2s. 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.fastcode.util.SourceUtil.java

License:Open Source License

/**
 *
 * @param project//from  w ww  . jav  a  2s.  c  o  m
 * @return
 */
public static String[][] getSourcePathsForProject(final String project) {
    final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();

    final List<String> paths = new ArrayList<String>();
    try {
        for (final IProject prjct : projects) {
            if (project == null || prjct.getName().equals(project)) {
                final IJavaProject javaProject = JavaCore.create(prjct);
                if (javaProject == null || !javaProject.exists()) {
                    continue;
                }
                if (isProjectBinary(javaProject)) {
                    continue;
                }
                for (final IPackageFragmentRoot packageFragmentRoot : javaProject
                        .getAllPackageFragmentRoots()) {
                    if (packageFragmentRoot == null || !packageFragmentRoot.exists()
                            || packageFragmentRoot.isArchive() || packageFragmentRoot.isExternal()) {
                        continue;
                    }
                    if (!packageFragmentRoot.getParent().equals(javaProject)) { // discard
                        // roots
                        // which
                        // come
                        // from
                        // another
                        // project.
                        continue;
                    }
                    final String fullSrcPath = packageFragmentRoot.getPath().toString();
                    final String srcPath = fullSrcPath
                            .replaceFirst(FORWARD_SLASH + javaProject.getElementName(), EMPTY_STR);
                    if (!paths.contains(srcPath)) {
                        paths.add(srcPath);
                    }
                }
            }
        }
    } catch (final Exception ex) {
        ex.printStackTrace();
    }

    return getStringArrayFromList(paths, true);
}

From source file:org.fastcode.util.SourceUtil.java

License:Open Source License

/**
 *
 * @param javaProject/*from   ww w .  j a va2 s .c  o m*/
 * @return
 * @throws Exception
 */
private static boolean isProjectBinary(final IJavaProject javaProject) throws Exception {
    for (final IPackageFragmentRoot packageFragmentRoot : javaProject.getAllPackageFragmentRoots()) {
        if (packageFragmentRoot != null && packageFragmentRoot.exists() && !packageFragmentRoot.isArchive()) {
            return false;
        }
    }
    return true;
}

From source file:org.fastcode.util.SourceUtil.java

License:Open Source License

/**
 *
 * @return//from   www .  j a v a2 s. com
 */
public static String[][] getAllSourcePaths(final String filter) {
    final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();

    final List<String> paths = new ArrayList<String>();

    try {
        for (final IProject project : projects) {
            final IJavaProject javaProject = JavaCore.create(project);
            if (javaProject != null && javaProject.exists() && isJunitEnabled(javaProject)
                    && javaProject.isOpen() && !javaProject.isReadOnly()) {
                for (final IPackageFragmentRoot packageFragmentRoot : javaProject
                        .getAllPackageFragmentRoots()) {
                    if (!(packageFragmentRoot.isArchive() || packageFragmentRoot.isReadOnly())) {
                        String sourcePath = packageFragmentRoot.getPath().toString();
                        sourcePath = sourcePath.replace(FORWARD_SLASH + project.getName(), "${project}");
                        if (filter == null || sourcePath.toUpperCase().contains(filter.toUpperCase())) {
                            boolean include = true;
                            for (final String path : paths) {
                                if (path.equals(sourcePath)) {
                                    include = false;
                                    break;
                                }
                            }
                            if (include) {
                                paths.add(sourcePath);
                            }
                        }
                    }
                }
            }
        }
    } catch (final JavaModelException ex) {
        ex.printStackTrace();
        return new String[0][0];
    }

    return getStringArrayFromList(paths, false);
}

From source file:org.fastcode.util.SourceUtil.java

License:Open Source License

/**
 * @param workingJavaProject/*ww w .j  a  v a  2  s.  c  o m*/
 * @param pkgFrgmRoots
 * @param allPackages
 * @param defaultPath
 * @throws JavaModelException
 */
private static void getPackagesForFragment(final IJavaProject workingJavaProject,
        final IPackageFragmentRoot[] pkgFrgmRoots, final List<IPackageFragment> allPackages,
        final String defaultPath) throws JavaModelException {
    for (final IPackageFragmentRoot packageFragmentRoot : pkgFrgmRoots) {
        if (!packageFragmentRoot.isArchive()) {
            for (final IJavaElement pkg : packageFragmentRoot.getChildren()) {
                if (pkg != null && !isEmpty(pkg.getElementName()) && pkg instanceof IPackageFragment
                        && !(pkg instanceof IFolder)) {
                    final IClassFile classFile[] = ((IPackageFragment) pkg).getClassFiles();
                    final GlobalSettings globalSettings = getInstance();
                    //final String defaultPath = getDefaultPathFromProject(workingJavaProject);
                    /*String defaultPath = globalSettings.getSourcePathJava();
                    final String[][] entryNamesAndValues = getSourcePathsForProject(workingJavaProject.getElementName());
                    for (int i = 0; i < entryNamesAndValues.length; i++) {
                       if (!entryNamesAndValues[i][0].trim().equals(EMPTY_STR)) {
                          if (defaultPath.contains(entryNamesAndValues[i][0])) {
                             defaultPath = entryNamesAndValues[i][0];
                             break;
                            
                          }
                       }
                    }*/
                    if (globalSettings.isUseDefaultForPath()) {
                        if (((IPackageFragment) pkg).getPath().toString().contains(defaultPath)) {
                            allPackages.add((IPackageFragment) pkg);
                        }
                    } else {
                        allPackages.add((IPackageFragment) pkg);
                    }
                }
            }
        }
    }
}

From source file:org.hibernate.eclipse.jdt.ui.wizards.NewHibernateMappingFileWizard.java

License:Open Source License

public void init(IWorkbench workbench, IStructuredSelection selection) {
    Set<IJavaElement> filteredElements = new HashSet<IJavaElement>();
    Object[] elements = selection.toArray();
    for (int i = 0; i < elements.length; i++) {
        if (elements[i] instanceof JavaProject) {
            JavaProject project = (JavaProject) elements[i];
            try {
                IPackageFragmentRoot[] roots = project.getPackageFragmentRoots();
                for (int j = 0; j < roots.length; j++) {
                    if (!roots[j].isArchive()) {
                        IJavaElement[] rootChildren = roots[j].getChildren();
                        for (int k = 0; k < rootChildren.length; k++) {
                            if (rootChildren[k] instanceof IPackageFragment) {
                                IPackageFragment pkg = (IPackageFragment) rootChildren[k];
                                try {
                                    if (pkg.containsJavaResources())
                                        filteredElements.add(rootChildren[k]);
                                } catch (JavaModelException e1) {
                                    e1.printStackTrace();
                                }//from  w  w w  .jav a  2 s  . c  o  m
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }
        } else if (elements[i] instanceof IPackageFragmentRoot) {
            IPackageFragmentRoot root = (IPackageFragmentRoot) elements[i];
            if (!root.isArchive()) {
                try {
                    IJavaElement[] rootChildren = root.getChildren();
                    for (int k = 0; k < rootChildren.length; k++) {
                        if (rootChildren[k] instanceof IPackageFragment) {
                            IPackageFragment pkg = (IPackageFragment) rootChildren[k];
                            try {
                                if (pkg.containsJavaResources())
                                    filteredElements.add(rootChildren[k]);
                            } catch (JavaModelException e1) {
                                e1.printStackTrace();
                            }
                        }
                    }
                } catch (JavaModelException e) {
                    e.printStackTrace();
                }
            }
        } else if (elements[i] instanceof ICompilationUnit) {
            ICompilationUnit cu = (ICompilationUnit) elements[i];
            IType[] types;
            try {
                types = cu.getTypes();
                //remove java extension.
                //String typeName = cu.getElementName().substring(0, cu.getElementName().length() - 5);
                for (int j = 0; j < types.length; j++) {
                    //if (types[j].getElementName().equals(typeName)){
                    filteredElements.add(types[j]);
                    //   break;
                    //}
                }
            } catch (JavaModelException e) {
                e.printStackTrace();
            }

        } else if (elements[i] instanceof IJavaElement) {
            filteredElements.add((IJavaElement) elements[i]);
        }
    }
    this.selection = new StructuredSelection(filteredElements.toArray());
}

From source file:org.jboss.tools.arquillian.core.internal.builder.ArquillianBuilder.java

License:Open Source License

private List<ICompilationUnit> getCompilationUnits() throws JavaModelException {
    List<ICompilationUnit> units = new ArrayList<ICompilationUnit>();
    IJavaProject javaProject = JavaCore.create(currentProject);
    if (ArquillianSearchEngine.hasArquillianType(javaProject)) {
        IClasspathEntry[] entries = javaProject.getRawClasspath();
        for (IClasspathEntry entry : entries) {
            if (entry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
                IPackageFragmentRoot[] roots = javaProject.findPackageFragmentRoots(entry);
                for (IPackageFragmentRoot root : roots) {
                    if (root.isArchive()) {
                        continue;
                    }/*from  ww  w  .j  av  a 2 s.c  o m*/
                    IJavaElement[] children = root.getChildren();
                    for (IJavaElement child : children) {
                        if (child instanceof IPackageFragment) {
                            IPackageFragment packageFragment = (IPackageFragment) child;
                            ICompilationUnit[] cus = packageFragment.getCompilationUnits();
                            for (ICompilationUnit cu : cus) {
                                if (!units.contains(cu)
                                        && ArquillianSearchEngine.isArquillianJUnitTest(cu, false, false)) {
                                    units.add(cu);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return units;
}

From source file:org.jboss.tools.as.sourcelookup.ui.actions.AttachSourcesActionDelegate.java

License:Open Source License

@Override
public void setActiveEditor(IAction action, IEditorPart targetEditor) {
    if (targetEditor != null) {
        try {//from ww  w .  j  a  v a 2  s.c  om
            boolean isAuto = SourceLookupActivator.getDefault().isAutoAddSourceContainer();
            if (!isAuto) {
                return;
            }
            IClassFileEditorInput input = (IClassFileEditorInput) targetEditor.getEditorInput();
            IJavaElement element = input.getClassFile();
            while (element.getParent() != null) {
                element = element.getParent();
                if (element instanceof IPackageFragmentRoot) {
                    final IPackageFragmentRoot fragment = (IPackageFragmentRoot) element;
                    IPath attachmentPath = fragment.getSourceAttachmentPath();
                    if (attachmentPath != null && !attachmentPath.isEmpty()
                            && attachmentPath.toFile().exists()) {
                        break;
                    }
                    if (fragment.isArchive()) {
                        IFile iFile = ResourcesPlugin.getWorkspace().getRoot().getFile(fragment.getPath());
                        File file = iFile == null || iFile.getLocation() == null ? fragment.getPath().toFile()
                                : iFile.getLocation().toFile();
                        ZipFile jar = new ZipFile(file);
                        final ArtifactKey artifact = JBossSourceContainer.getArtifact(file, jar);
                        if (artifact != null) {
                            IPath sourcePath = JBossSourceContainer.getSourcePath(artifact);
                            if (sourcePath == null || !sourcePath.toFile().exists()) {
                                Job job = JBossSourceContainer.downloadArtifact(file, artifact);
                                job.addJobChangeListener(new IJobChangeListener() {

                                    @Override
                                    public void sleeping(IJobChangeEvent event) {
                                    }

                                    @Override
                                    public void scheduled(IJobChangeEvent event) {
                                    }

                                    @Override
                                    public void running(IJobChangeEvent event) {
                                    }

                                    @Override
                                    public void done(IJobChangeEvent event) {
                                        IPath sourcePath = JBossSourceContainer.getSourcePath(artifact);
                                        if (sourcePath != null && sourcePath.toFile().exists()) {
                                            attachSource(fragment, sourcePath);
                                        }
                                    }

                                    @Override
                                    public void awake(IJobChangeEvent event) {
                                    }

                                    @Override
                                    public void aboutToRun(IJobChangeEvent event) {
                                    }
                                });
                                job.schedule();
                            } else {
                                attachSource(fragment, sourcePath);
                            }
                        }
                    }
                }
            }
        } catch (Exception e) {
            SourceLookupUIActivator.log(e);
        }
    }
}

From source file:org.jboss.tools.hibernate.jpt.core.internal.context.HibernatePersistenceUnit.java

License:Open Source License

@Override
protected void validateProperties(List<IMessage> messages, IReporter reporter) {
    String configFile = this.hibernateProperties.getConfigurationFile();
    if (configFile != null && configFile.length() > 0) {
        IPath path = new Path(configFile);

        try {//from ww  w .ja  v  a  2s .  c  o m
            IJavaProject jp = getJpaProject().getJavaProject();
            IPackageFragmentRoot[] pfrs = jp.getPackageFragmentRoots();
            for (int i = 0; i < pfrs.length; i++) {
                if (pfrs[i].isArchive())
                    continue;
                if (((IContainer) pfrs[i].getResource()).findMember(path) != null) {
                    return;
                }
            }
        } catch (JavaModelException e) {
            HibernateJptPlugin.logException(e);
        }

        IJavaProject jProject = getJpaProject().getJavaProject();
        IResource res = null;
        if (jProject != null) {
            try {
                IPackageFragmentRoot[] allPackageFragmentRoots = jProject.getAllPackageFragmentRoots();
                for (IPackageFragmentRoot iPackageFragmentRoot : allPackageFragmentRoots) {
                    if (!iPackageFragmentRoot.isArchive()) {
                        IResource sourceFolder = iPackageFragmentRoot.getResource();
                        if (sourceFolder instanceof IContainer) {
                            IContainer folder = (IContainer) sourceFolder;
                            if ((res = folder.findMember(path)) != null) {
                                break;
                            }
                        }
                    }
                }
            } catch (JavaModelException e) {
                //ignore
            }
        }
        if (res != null) {
            int resType = res.getType();
            if (resType != IResource.FILE) {
                Property prop = getProperty(BasicHibernateProperties.HIBERNATE_CONFIG_FILE);
                IMessage message = HibernateJpaValidationMessage.buildMessage(IMessage.HIGH_SEVERITY,
                        NOT_A_FILE, new String[] { configFile }, getResource());
                message.setLineNo(prop.getValidationTextRange().getLineNumber());
                messages.add(message);
            }
        } else {
            Property prop = getProperty(BasicHibernateProperties.HIBERNATE_CONFIG_FILE);
            IMessage message = HibernateJpaValidationMessage.buildMessage(IMessage.HIGH_SEVERITY,
                    CONFIG_FILE_NOT_FOUND, new String[] { configFile }, getResource());
            message.setLineNo(prop.getValidationTextRange().getLineNumber());
            messages.add(message);
        }
    }
}