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

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

Introduction

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

Prototype

IPath getPath();

Source Link

Document

Returns the path to the innermost resource enclosing this element.

Usage

From source file:org.eclipse.buildship.core.workspace.internal.SourceFolderUpdater.java

License:Open Source License

private IClasspathEntry createSourceFolderEntry(OmniEclipseSourceDirectory directory,
        List<IClasspathEntry> rawClasspath) throws CoreException {
    // pre-condition: in case of linked resources, the linked folder must have been created already
    Optional<IFolder> linkedFolder = getLinkedFolderIfExists(directory.getDirectory());
    IFolder sourceDirectory = linkedFolder.isPresent() ? linkedFolder.get()
            : SourceFolderUpdater.this.project.getProject().getFolder(Path.fromOSString(directory.getPath()));
    FileUtils.ensureFolderHierarchyExists(sourceDirectory);
    final IPackageFragmentRoot root = SourceFolderUpdater.this.project.getPackageFragmentRoot(sourceDirectory);

    // find the source folder among the sources currently configured on the project
    Optional<IClasspathEntry> currentClasspathEntry = FluentIterable.from(rawClasspath)
            .firstMatch(new Predicate<IClasspathEntry>() {

                @Override//from   w  w w.  ja va2s .c o m
                public boolean apply(IClasspathEntry entry) {
                    return root.getPath().equals(entry.getPath());
                }
            });

    // preserve the includes/excludes defined by the user
    IPath[] includes = currentClasspathEntry.isPresent() ? currentClasspathEntry.get().getInclusionPatterns()
            : new IPath[] {};
    IPath[] excludes = currentClasspathEntry.isPresent() ? currentClasspathEntry.get().getExclusionPatterns()
            : new IPath[] {};

    // @formatter:off
    IClasspathAttribute fromGradleModel = JavaCore.newClasspathAttribute(CLASSPATH_ATTRIBUTE_FROM_GRADLE_MODEL,
            "true");
    return JavaCore.newSourceEntry(root.getPath(), includes, // use manually defined inclusion patterns, include all if none exist
            excludes, // use manually defined exclusion patterns, exclude none if none exist
            null, // use the same output folder as defined on the project
            new IClasspathAttribute[] { fromGradleModel } // the source folder is loaded from the current Gradle model
    );
    // @formatter:on
}

From source file:org.eclipse.capra.testsuite.TestHelper.java

License:Open Source License

public static IType createJavaProjectWithASingleJavaClass(String projectName) throws CoreException {
    IProject project = getProject(projectName);

    // Create project
    IProgressMonitor progressMonitor = new NullProgressMonitor();
    project.create(progressMonitor);//from  w w w. java  2 s  .  co m
    project.open(progressMonitor);

    // Add Java nature
    IProjectDescription description = project.getDescription();
    description.setNatureIds(new String[] { JavaCore.NATURE_ID });
    project.setDescription(description, null);

    // Create as Java project and set up build path etc.
    IJavaProject javaProject = JavaCore.create(project);
    IFolder binFolder = project.getFolder("bin");
    binFolder.create(false, true, null);
    javaProject.setOutputLocation(binFolder.getFullPath(), null);
    List<IClasspathEntry> entries = new ArrayList<IClasspathEntry>();
    IVMInstall vmInstall = JavaRuntime.getDefaultVMInstall();
    LibraryLocation[] locations = JavaRuntime.getLibraryLocations(vmInstall);
    for (LibraryLocation element : locations)
        entries.add(JavaCore.newLibraryEntry(element.getSystemLibraryPath(), null, null));

    javaProject.setRawClasspath(entries.toArray(new IClasspathEntry[entries.size()]), null);

    // Create a src file
    IFolder sourceFolder = project.getFolder("src");
    sourceFolder.create(false, true, null);
    IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(sourceFolder);
    IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
    IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
    System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
    newEntries[oldEntries.length] = JavaCore.newSourceEntry(root.getPath());
    javaProject.setRawClasspath(newEntries, null);

    IPackageFragment pack = javaProject.getPackageFragmentRoot(sourceFolder)
            .createPackageFragment("org.amalthea.test", false, null);

    StringBuffer buffer = new StringBuffer();
    buffer.append("package " + pack.getElementName() + ";\n");
    buffer.append("\n");
    buffer.append("public class TestClass {}");

    ICompilationUnit icu = pack.createCompilationUnit("TestClass.java", buffer.toString(), false, null);
    return icu.getType("TestClass");
}

From source file:org.eclipse.cft.server.standalone.ui.internal.application.JarArchivingUIHandler.java

License:Open Source License

protected void bootRepackage(final IPackageFragmentRoot[] roots, File packagedFile) throws CoreException {
    Repackager bootRepackager = new Repackager(packagedFile);
    try {/*from www . j  a v  a2  s .  c  o m*/
        bootRepackager.repackage(new Libraries() {

            public void doWithLibraries(LibraryCallback callBack) throws IOException {
                for (IPackageFragmentRoot root : roots) {

                    if (root.isArchive()) {

                        File rootFile = new File(root.getPath().toOSString());
                        if (rootFile.exists()) {
                            callBack.library(new Library(rootFile, LibraryScope.COMPILE));
                        }
                    }
                }
            }
        });
    } catch (IOException e) {
        errorHandler.handleApplicationDeploymentFailure(
                NLS.bind(Messages.JavaCloudFoundryArchiver_ERROR_REPACKAGE_SPRING, e.getMessage()));
    }
}

From source file:org.eclipse.che.jdt.internal.core.SourceMapper.java

License:Open Source License

private synchronized void computeAllRootPaths(IType type) {
    if (this.areRootPathsComputed) {
        return;//from w w  w.  j a v  a2s . co m
    }
    IPackageFragmentRoot root = (IPackageFragmentRoot) type.getPackageFragment().getParent();
    IPath pkgFragmentRootPath = root.getPath();
    final HashSet tempRoots = new HashSet();
    long time = 0;
    if (VERBOSE) {
        System.out.println("compute all root paths for " + root.getElementName()); //$NON-NLS-1$
        time = System.currentTimeMillis();
    }
    final HashSet firstLevelPackageNames = new HashSet();
    boolean containsADefaultPackage = false;
    boolean containsJavaSource = !pkgFragmentRootPath.equals(this.sourcePath); // used to optimize zip file reading only if source path and root path are equals, otherwise
    // assume that attachment contains Java source

    String sourceLevel = null;
    String complianceLevel = null;
    if (root.isArchive()) {
        //         org.eclipse.jdt.internal.core.JavaModelManager manager = org.eclipse.jdt.internal.core.JavaModelManager.getJavaModelManager();
        ZipFile zip = null;
        try {
            zip = manager.getZipFile(pkgFragmentRootPath);
            for (Enumeration entries = zip.entries(); entries.hasMoreElements();) {
                ZipEntry entry = (ZipEntry) entries.nextElement();
                String entryName = entry.getName();
                if (!entry.isDirectory()) {
                    if (org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(entryName)) {
                        int index = entryName.indexOf('/');
                        if (index != -1) {
                            String firstLevelPackageName = entryName.substring(0, index);
                            if (!firstLevelPackageNames.contains(firstLevelPackageName)) {
                                if (sourceLevel == null) {
                                    IJavaProject project = root.getJavaProject();
                                    sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
                                    complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
                                }
                                IStatus status = Status.OK_STATUS;// JavaConventions
                                //                                 .validatePackageName(firstLevelPackageName, sourceLevel, complianceLevel);
                                if (status.isOK() || status.getSeverity() == IStatus.WARNING) {
                                    firstLevelPackageNames.add(firstLevelPackageName);
                                }
                            }
                        } else {
                            containsADefaultPackage = true;
                        }
                    } else if (!containsJavaSource
                            && org.eclipse.che.jdt.internal.core.util.Util.isJavaLikeFileName(entryName)) {
                        containsJavaSource = true;
                    }
                }
            }
        } catch (CoreException e) {
            // ignore
        } finally {
            manager.closeZipFile(zip); // handle null case
        }
    } /*else {
      Object target = JavaModel.getTarget(root.getPath(), true);
      if (target instanceof IResource) {
      IResource resource = (IResource) target;
      if (resource instanceof IContainer) {
         try {
            IResource[] members = ((IContainer) resource).members();
            for (int i = 0, max = members.length; i < max; i++) {
               IResource member = members[i];
               String resourceName = member.getName();
               if (member.getType() == IResource.FOLDER) {
                  if (sourceLevel == null) {
                     IJavaProject project = root.getJavaProject();
                     sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true);
                     complianceLevel = project.getOption(JavaCore.COMPILER_COMPLIANCE, true);
                  }
                  IStatus status = JavaConventions.validatePackageName(resourceName, sourceLevel, complianceLevel);
                  if (status.isOK() || status.getSeverity() == IStatus.WARNING) {
                     firstLevelPackageNames.add(resourceName);
                  }
               } else if (org.eclipse.jdt.internal.compiler.util.Util.isClassFileName(resourceName)) {
                  containsADefaultPackage = true;
               } else if (!containsJavaSource && Util.isJavaLikeFileName(resourceName)) {
                  containsJavaSource = true;
               }
            }
         } catch (CoreException e) {
            // ignore
         }
      }
      }
      }*/

    if (containsJavaSource) { // no need to read source attachment if it contains no Java source (see https://bugs.eclipse
        // .org/bugs/show_bug.cgi?id=190840 )
        //         Object target = JavaModel.getTarget(this.sourcePath, true);
        //         if (target instanceof IContainer) {
        //            IContainer folder = (IContainer)target;
        //            computeRootPath(folder, firstLevelPackageNames, containsADefaultPackage, tempRoots, folder.getFullPath().segmentCount()
        // /*if external folder, this is the linked folder path*/);
        //         } else {
        //            JavaModelManager
        //                  manager = JavaModelManager.getJavaModelManager();
        ZipFile zip = null;
        try {
            zip = manager.getZipFile(this.sourcePath);
            for (Enumeration entries = zip.entries(); entries.hasMoreElements();) {
                ZipEntry entry = (ZipEntry) entries.nextElement();
                String entryName;
                if (!entry.isDirectory() && Util.isJavaLikeFileName(entryName = entry.getName())) {
                    IPath path = new Path(entryName);
                    int segmentCount = path.segmentCount();
                    if (segmentCount > 1) {
                        for (int i = 0, max = path.segmentCount() - 1; i < max; i++) {
                            if (firstLevelPackageNames.contains(path.segment(i))) {
                                tempRoots.add(path.uptoSegment(i));
                                // don't break here as this path could contain other first level package names (see https://bugs
                                // .eclipse.org/bugs/show_bug.cgi?id=74014)
                            }
                            if (i == max - 1 && containsADefaultPackage) {
                                tempRoots.add(path.uptoSegment(max));
                            }
                        }
                    } else if (containsADefaultPackage) {
                        tempRoots.add(new Path("")); //$NON-NLS-1$
                    }
                }
            }
        } catch (CoreException e) {
            // ignore
        } finally {
            manager.closeZipFile(zip); // handle null case
        }
        //         }
    }
    int size = tempRoots.size();
    if (this.rootPaths != null) {
        for (Iterator iterator = this.rootPaths.iterator(); iterator.hasNext();) {
            tempRoots.add(new Path((String) iterator.next()));
        }
        this.rootPaths.clear();
    } else {
        this.rootPaths = new ArrayList(size);
    }
    size = tempRoots.size();
    if (size > 0) {
        ArrayList sortedRoots = new ArrayList(tempRoots);
        if (size > 1) {
            Collections.sort(sortedRoots, new Comparator() {
                public int compare(Object o1, Object o2) {
                    IPath path1 = (IPath) o1;
                    IPath path2 = (IPath) o2;
                    return path1.segmentCount() - path2.segmentCount();
                }
            });
        }
        for (Iterator iter = sortedRoots.iterator(); iter.hasNext();) {
            IPath path = (IPath) iter.next();
            this.rootPaths.add(path.toString());
        }
    }
    this.areRootPathsComputed = true;
    if (VERBOSE) {
        System.out.println("Spent " + (System.currentTimeMillis() - time) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
        System.out.println("Found " + size + " root paths"); //$NON-NLS-1$ //$NON-NLS-2$
        int i = 0;
        for (Iterator iterator = this.rootPaths.iterator(); iterator.hasNext();) {
            System.out.println("root[" + i + "]=" + ((String) iterator.next()));//$NON-NLS-1$ //$NON-NLS-2$
            i++;
        }
    }
}

From source file:org.eclipse.che.jdt.search.JavaElementToDtoConverter.java

License:Open Source License

private List<PackageFragmentRoot> getPackageFragmentRoots(Object parent, String projectPath)
        throws JavaModelException {
    List<PackageFragmentRoot> result = new ArrayList<>();
    Set<Object> objects = childrens.get(parent);
    if (objects == null) {
        return result;
    }//from   w  w w .  java2 s .c  o m
    for (Object object : objects) {
        if (object instanceof IPackageFragmentRoot) {
            PackageFragmentRoot root = DtoFactory.newDto(PackageFragmentRoot.class);
            IPackageFragmentRoot fragmentRoot = (IPackageFragmentRoot) object;
            root.setProjectPath(projectPath);
            root.setKind(fragmentRoot.getKind());
            root.setPath(fragmentRoot.getPath().toOSString());
            root.setElementName(fragmentRoot.getElementName());
            root.setHandleIdentifier(fragmentRoot.getHandleIdentifier());
            root.setPackageFragments(getPackageFragments(fragmentRoot, projectPath));
            result.add(root);
        }
    }

    return result;
}

From source file:org.eclipse.che.jdt.testplugin.JavaProjectHelper.java

License:Open Source License

/**
 * Adds a source container to a IJavaProject.
 * @param jproject The parent project//from www .  j a  v a2 s  .c om
 * @param containerName The name of the new source container
 * @param inclusionFilters Inclusion filters to set
 * @param exclusionFilters Exclusion filters to set
 * @param outputLocation The location where class files are written to, <b>null</b> for project output folder
 * @return The handle to the new source container
 * @throws CoreException Creation failed
 */
public static IPackageFragmentRoot addSourceContainer(IJavaProject jproject, String containerName,
        IPath[] inclusionFilters, IPath[] exclusionFilters, String outputLocation) throws CoreException {
    IProject project = jproject.getProject();
    IContainer container = null;
    if (containerName == null || containerName.length() == 0) {
        container = project;
    } else {
        IFolder folder = project.getFolder(containerName);
        if (!folder.exists()) {
            CoreUtility.createFolder(folder, false, true, null);
        }
        container = folder;
    }
    IPackageFragmentRoot root = jproject.getPackageFragmentRoot(container);

    IPath outputPath = null;
    if (outputLocation != null) {
        IFolder folder = project.getFolder(outputLocation);
        if (!folder.exists()) {
            CoreUtility.createFolder(folder, false, true, null);
        }
        outputPath = folder.getFullPath();
    }
    IClasspathEntry cpe = JavaCore.newSourceEntry(root.getPath(), inclusionFilters, exclusionFilters,
            outputPath);
    addToClasspath(jproject, cpe);
    return root;
}

From source file:org.eclipse.che.jdt.testplugin.JavaProjectHelper.java

License:Open Source License

/**
 * Adds a source container to a IJavaProject and imports all files contained
 * in the given ZIP file.// ww  w.j  av a  2s. co  m
 * @param jproject The parent project
 * @param containerName Name of the source container
 * @param zipFile Archive to import
 * @param containerEncoding encoding for the generated source container
 * @param exclusionFilters Exclusion filters to set
 * @return The handle to the new source container
 * @throws InvocationTargetException Creation failed
 * @throws CoreException Creation failed
 * @throws IOException Creation failed
 */
public static IPackageFragmentRoot addSourceContainerWithImport(IJavaProject jproject, String containerName,
        File zipFile, String containerEncoding, IPath[] exclusionFilters)
        throws InvocationTargetException, CoreException, IOException {
    ZipFile file = new ZipFile(zipFile);
    try {
        IPackageFragmentRoot root = addSourceContainer(jproject, containerName, exclusionFilters);
        ((IContainer) root.getCorrespondingResource()).setDefaultCharset(containerEncoding, null);
        importFilesFromZip(file, root.getPath(), null);
        return root;
    } finally {
        file.close();
    }
}

From source file:org.eclipse.che.plugin.java.server.JavaNavigation.java

License:Open Source License

private List<PackageFragmentRoot> toPackageRoots(IJavaProject javaProject, boolean includePackages)
        throws JavaModelException {
    IPackageFragmentRoot[] packageFragmentRoots = javaProject.getPackageFragmentRoots();
    List<PackageFragmentRoot> result = new ArrayList<>();
    for (IPackageFragmentRoot packageFragmentRoot : packageFragmentRoots) {
        if (packageFragmentRoot.getKind() == IPackageFragmentRoot.K_SOURCE) {
            PackageFragmentRoot root = DtoFactory.newDto(PackageFragmentRoot.class);
            root.setPath(packageFragmentRoot.getPath().toOSString());
            root.setProjectPath(packageFragmentRoot.getJavaProject().getPath().toOSString());
            if (includePackages) {
                root.setPackageFragments(toPackageFragments(packageFragmentRoot));
            }//from   w w w  .  jav a2  s.c o  m
            result.add(root);
        }
    }
    return result;
}

From source file:org.eclipse.contribution.weaving.jdt.tests.WeavingTestCase.java

License:Open Source License

private IPackageFragmentRoot createDefaultSourceFolder(IJavaProject javaProject) throws CoreException {
    IProject project = javaProject.getProject();
    IFolder folder = project.getFolder("src");
    if (!folder.exists())
        ensureExists(folder);//from  w  ww .j a  v a2s.c o  m
    final IClasspathEntry[] entries = javaProject.getResolvedClasspath(false);
    final IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(folder);
    for (int i = 0; i < entries.length; i++) {
        final IClasspathEntry entry = entries[i];
        if (entry.getPath().equals(folder.getFullPath()))
            return root;
    }
    IClasspathEntry[] oldEntries = javaProject.getRawClasspath();
    IClasspathEntry[] newEntries = new IClasspathEntry[oldEntries.length + 1];
    System.arraycopy(oldEntries, 0, newEntries, 0, oldEntries.length);
    newEntries[oldEntries.length] = JavaCore.newSourceEntry(root.getPath());
    javaProject.setRawClasspath(newEntries, null);
    return root;
}

From source file:org.eclipse.e4.demo.simpleide.jdt.internal.editor.viewer.JavaElementLabelComposer.java

License:Open Source License

private void appendExternalArchiveLabel(IPackageFragmentRoot root, long flags) {
    IPath path;//from w w w .  ja v  a  2s  . c  om
    IClasspathEntry classpathEntry = null;
    try {
        classpathEntry = JavaModelUtil.getClasspathEntry(root);
        IPath rawPath = classpathEntry.getPath();
        if (classpathEntry.getEntryKind() != IClasspathEntry.CPE_CONTAINER && !rawPath.isAbsolute())
            path = rawPath;
        else
            path = root.getPath();
    } catch (JavaModelException e) {
        path = root.getPath();
    }
    if (getFlag(flags, JavaElementLabels.REFERENCED_ROOT_POST_QUALIFIED)) {
        int segements = path.segmentCount();
        if (segements > 0) {
            fBuffer.append(path.segment(segements - 1));
            int offset = fBuffer.length();
            if (segements > 1 || path.getDevice() != null) {
                fBuffer.append(JavaElementLabels.CONCAT_STRING);
                fBuffer.append(path.removeLastSegments(1).toOSString());
            }
            if (classpathEntry != null) {
                IClasspathEntry referencingEntry = classpathEntry.getReferencingEntry();
                if (referencingEntry != null) {
                    fBuffer.append(messages.JavaElementLabels_onClassPathOf(Name.CLASS_PATH.toString(),
                            referencingEntry.getPath().lastSegment()));
                }
            }
            if (getFlag(flags, JavaElementLabels.COLORIZE)) {
                fBuffer.setStyle(offset, fBuffer.length() - offset, QUALIFIER_STYLE);
            }
        } else {
            fBuffer.append(path.toOSString());
        }
    } else {
        fBuffer.append(path.toOSString());
    }
}