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

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

Introduction

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

Prototype

IClasspathEntry getRawClasspathEntry() throws JavaModelException;

Source Link

Document

Returns the first raw classpath entry that corresponds to this package fragment root.

Usage

From source file:org.limy.eclipse.qalab.common.LimyQalabJavaUtils.java

License:Open Source License

/**
 * PackageFragmentRoot?pX?B/*from  ww  w. jav a2s  . com*/
 * @param fragment PackageFragmentRoot
 * @return
 * @throws CoreException 
 */
public static String getExternalLocation(IPackageFragmentRoot fragment) throws CoreException {

    String location = null;
    if (fragment.getKind() == IPackageFragmentRoot.K_SOURCE) {
        // v?WFNgQ?v?WFNg\?[XfBNg
        IPath outputLocation = fragment.getRawClasspathEntry().getOutputLocation();
        if (outputLocation != null) {
            // \?[XpXL?o?w??
            location = LimyQalabUtils.createFullPath(fragment.getJavaProject(), outputLocation);
        } else {
            // \?[XpXL?o?w???Av?WFNgftHg?o?gp
            location = LimyQalabUtils.createFullPath(fragment.getJavaProject(),
                    fragment.getJavaProject().getOutputLocation());
        }
    } else {
        // v?WFNgclasspathQ?v?WFNgExportCu
        IResource resource = fragment.getResource();
        if (resource != null) {
            location = resource.getLocation().toString();
        } else {
            // Variablewjart@Cresource = null 
            IPath path = fragment.getRawClasspathEntry().getPath();
            if (!path.toString().startsWith("org.eclipse.jdt.launching.JRE_CONTAINER")) {
                // JREOJARt@C?iVariablew?jNXpX
                location = fragment.getPath().toString();
            }
        }
    }
    return location;
}

From source file:org.maven.ide.eclipse.actions.DownloadSourcesAction.java

License:Apache License

public void run(IAction action) {
    IPackageFragmentRoot root = (IPackageFragmentRoot) this.selection.getFirstElement();

    IJavaElement parent = root.getParent();
    if (parent instanceof IJavaProject) {
        IJavaProject project = (IJavaProject) parent;
        try {/*from www  . j  a  va2s .  co m*/
            IClasspathEntry classpathEntry = root.getRawClasspathEntry();
            IClasspathContainer classpathContainer = JavaCore.getClasspathContainer(classpathEntry.getPath(),
                    project);
            IClasspathEntry[] classpathEntries = classpathContainer.getClasspathEntries();
            for (int i = 0; i < classpathEntries.length; i++) {
                IClasspathEntry entry = classpathEntries[i];
                if (entry.getPath().equals(root.getPath())) {
                    String actionDefinitionId = action.getActionDefinitionId();
                    String id = action.getId();
                    System.err.println("### DownloadSourcesAction.run()");

                }
            }
        } catch (JavaModelException ex) {
            //
        }
    }
}

From source file:org.nuxeo.ide.sdk.java.ClasspathEditor.java

License:Open Source License

/**
 * Extends classpath target project with src folder
 *
 * @param name/*ww w . j a  v  a  2s .  c  om*/
 * @throws JavaModelException
 */
public void extendClasspath(String name) throws JavaModelException {
    IProject project = java.getProject();
    IFolder folder = project.getFolder("src/main/" + name);
    IPackageFragmentRoot root = java.getPackageFragmentRoot(folder);
    if (root.exists()) {
        IClasspathEntry entry = root.getRawClasspathEntry();
        if (entry.getOutputLocation() != null) {
            return;
        }
        entries.remove(entry);
    }
    // extend project class path
    IFolder binFolder = project.getFolder("bin/" + name);
    IClasspathEntry newEntry = JavaCore.newSourceEntry(folder.getFullPath(), new IPath[0], new IPath[0],
            binFolder.getFullPath());
    entries.add(newEntry);
    dirty = true;
}

From source file:org.nuxeo.ide.sdk.java.ProjectDeployer.java

License:Open Source License

protected void copy(IProgressMonitor monitor, Appendable devbundle)
        throws CoreException, IOException, StorageException, BackingStoreException {
    devFolder.delete(true, monitor);//  w  ww  . j  a  va  2s  .  c o m
    devFolder.create(IResource.FORCE | IResource.DERIVED, true, monitor);
    mainFolder.create(IResource.FORCE | IResource.DERIVED, true, monitor);
    seamFolder.create(IResource.FORCE | IResource.DERIVED, true, monitor);
    mergeOutputLocation(project.getOutputLocation(), monitor);
    for (IPackageFragmentRoot root : project.getPackageFragmentRoots()) {
        if (root.getKind() != IPackageFragmentRoot.K_SOURCE) {
            continue;
        }
        if (!"main".equals(root.getCorrespondingResource().getParent().getName())) {
            continue;
        }
        IPath outputLocation = root.getRawClasspathEntry().getOutputLocation();
        if (outputLocation != null) {
            if (outputLocation.lastSegment().equals("test-classes")) {
                continue;
            }
            mergeOutputLocation(outputLocation, monitor);
        }
        copyRoot(root, monitor);
    }
    if (mainFolder.members().length != 0) {
        devbundle.append("bundle:" + mainFolder.getLocation().toOSString()).append("\n");
    }
    if (seamFolder.members().length != 0) {
        devbundle.append("seam:" + seamFolder.getLocation().toOSString()).append("\n");
    }
    IFolder l10n = project.getProject().getFolder("src/main/resources/OSGI-INF/l10n");
    if (l10n.exists()) {
        for (IResource m : l10n.members()) {
            if (IResource.FILE == m.getType()) {
                devbundle.append("resourceBundleFragment:").append(m.getLocation().toOSString()).append("\n");
            }
        }
    }
    IConnectProvider connectProvider = SDKPlugin.getDefault().getConnectProvider();
    if (connectProvider != null) {
        for (IConnectProvider.Infos infos : SDKPlugin.getDefault().getConnectProvider()
                .getLibrariesInfos(project.getProject(), monitor)) {
            devbundle.append("bundle:").append(infos.file.getPath()).append("\n");
        }
    }
}

From source file:org.nuxeo.ide.sdk.java.ProjectDeployer.java

License:Open Source License

protected void moveSeamCompilationUnit(IPackageFragmentRoot root, ICompilationUnit unit,
        IProgressMonitor monitor) throws JavaModelException, CoreException {
    if (!isSeam(unit)) {
        return;/*  www .ja  va2  s.  com*/
    }
    IPath outputLocation = root.getRawClasspathEntry().getOutputLocation();
    if (outputLocation == null) {
        outputLocation = project.getOutputLocation();
    }
    IPath path = unit.getPath().removeFirstSegments(root.getPath().segmentCount()).removeLastSegments(1);
    path = path.append(
            org.eclipse.jdt.internal.core.util.Util.getNameWithoutJavaLikeExtension(unit.getElementName())
                    + ".class");
    IResource mainMember = mainFolder.findMember(path);
    if (mainMember == null) {
        throw new Error("Cannot find binary class " + path + " in project " + project.getElementName());
    }
    IResource seamMember = seamFolder.findMember(path);
    if (seamMember != null) {
        seamMember.delete(true, monitor);
    }
    seamMember = seamFolder.getFile(path);
    mkdirs((IFolder) seamMember.getParent(), monitor);
    mainMember.move(seamMember.getFullPath(), IResource.FORCE | IResource.HIDDEN | IResource.DERIVED, monitor);
}

From source file:org.org.eclipse.dws.core.internal.jobs.UpdateJavadocAndSourcesJob.java

License:Open Source License

/**
 * Update sources.//  w ww  .java  2s  .co  m
 * 
 * @param project
 *            the project
 * @param packageFragmentRoot
 *            the package fragment root
 * @param file
 *            the file
 * @param monitor
 *            the monitor
 */
@SuppressWarnings("restriction")
private void updateSources(IJavaProject project, IPackageFragmentRoot packageFragmentRoot, File file,
        IProgressMonitor monitor) {
    try {
        logger.info("updating source attachment of " + packageFragmentRoot.getElementName() + " with " + file);
        IClasspathEntry rawClasspathEntry = packageFragmentRoot.getRawClasspathEntry();
        IPath containerPath = null;
        if (rawClasspathEntry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
            containerPath = rawClasspathEntry.getPath();
            rawClasspathEntry = handleContainerEntry(containerPath, project, packageFragmentRoot.getPath());
        }
        CPListElement cpElem = CPListElement.createFromExisting(rawClasspathEntry, project);
        String loc = file.getAbsolutePath();
        cpElem.setAttribute(CPListElement.SOURCEATTACHMENT, Path.fromOSString(loc).makeAbsolute());
        IClasspathEntry newEntry = cpElem.getClasspathEntry();
        String[] changedAttributes = { CPListElement.SOURCEATTACHMENT };
        BuildPathSupport.modifyClasspathEntry(null, newEntry, changedAttributes, project, containerPath, true,
                monitor);
    } catch (JavaModelException e) {
        throw new MavenRepositoryInteractionException(
                "Impossible to attach source jar:" + file.getAbsolutePath(), e);
    } catch (CoreException e) {
        throw new MavenRepositoryInteractionException(
                "Impossible to attach source jar:" + file.getAbsolutePath(), e);
    }
}

From source file:org.org.eclipse.dws.core.internal.jobs.UpdateJavadocAndSourcesJob.java

License:Open Source License

/**
 * Update javadoc./*from w w w  .  j a  v  a  2 s . com*/
 * 
 * @param project
 *            the project
 * @param packageFragmentRoot
 *            the package fragment root
 * @param file
 *            the file
 * @param monitor
 *            the monitor
 * 
 * @throws CoreException
 *             the core exception
 */
@SuppressWarnings("restriction")
private void updateJavadoc(IJavaProject project, IPackageFragmentRoot packageFragmentRoot, File file,
        IProgressMonitor monitor) throws CoreException {
    try {
        logger.info("updating javadoc location of " + packageFragmentRoot.getElementName() + " with " + file);
        IClasspathEntry rawClasspathEntry = packageFragmentRoot.getRawClasspathEntry();
        IPath containerPath = null;
        if (rawClasspathEntry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) {
            containerPath = rawClasspathEntry.getPath();
            rawClasspathEntry = handleContainerEntry(containerPath, project, packageFragmentRoot.getPath());
        }
        CPListElement cpElem = CPListElement.createFromExisting(rawClasspathEntry, project);
        String loc = "jar:file:/" + file.getAbsolutePath() + "!/";
        cpElem.setAttribute(CPListElement.JAVADOC, loc);
        IClasspathEntry newEntry = cpElem.getClasspathEntry();
        String[] changedAttributes = { CPListElement.JAVADOC };
        BuildPathSupport.modifyClasspathEntry(null, newEntry, changedAttributes, project, containerPath, true,
                monitor);
    } catch (JavaModelException e) {
        throw new MavenRepositoryInteractionException(
                "Impossible to set javadoc location:" + file.getAbsolutePath(), e);
    } catch (CoreException e) {
        throw new MavenRepositoryInteractionException(
                "Impossible to set javadoc location:" + file.getAbsolutePath(), e);
    }

}

From source file:org.org.eclipse.dws.ui.internal.wizards.pages.DependenciesFromClasspathPage.java

License:Open Source License

/**
 * Checks if is possible dependency./*w w w.  java  2s  .  c om*/
 * 
 * @param packageFragmentRoot
 *            the package fragment root
 * 
 * @return the boolean
 * 
 * @throws JavaModelException
 *             the java model exception
 */
private Boolean isPossibleDependency(IPackageFragmentRoot packageFragmentRoot) throws JavaModelException {
    boolean isArchive = packageFragmentRoot.isArchive();
    int entryKind = packageFragmentRoot.getRawClasspathEntry().getEntryKind();
    boolean isFiltered = isFiltered(packageFragmentRoot);
    return isArchive && (entryKind != IClasspathEntry.CPE_PROJECT) && entryKind != IClasspathEntry.CPE_SOURCE
            && !isFiltered;
}

From source file:org.org.eclipse.dws.ui.internal.wizards.pages.LookupJavadocAndSourcesForLibrariesInClasspathPage.java

License:Open Source License

/**
 * Checks if is library with missing javadoc or source.
 * //from w w w.j  a  v  a2  s.  c om
 * @param packageFragmentRoot
 *            the package fragment root
 * 
 * @return the boolean
 * 
 * @throws JavaModelException
 *             the java model exception
 */
private Boolean isLibraryWithMissingJavadocOrSource(IPackageFragmentRoot packageFragmentRoot)
        throws JavaModelException {
    boolean isArchive = packageFragmentRoot.isArchive();
    int entryKind = packageFragmentRoot.getRawClasspathEntry().getEntryKind();
    boolean isFiltered = isFiltered(packageFragmentRoot);
    boolean missesSources = missesSources(packageFragmentRoot);
    boolean missesJavadoc = missesJavadoc(packageFragmentRoot);
    return isArchive && (entryKind != IClasspathEntry.CPE_PROJECT) && entryKind != IClasspathEntry.CPE_SOURCE
            && !isFiltered && (missesJavadoc || missesSources);
}

From source file:org.org.eclipse.dws.ui.internal.wizards.pages.LookupJavadocAndSourcesForLibrariesInClasspathPage.java

License:Open Source License

/**
 * Misses javadoc.// ww  w .j  a v a  2 s .c om
 * 
 * @param packageFragmentRoot
 *            the package fragment root
 * 
 * @return true, if successful
 * 
 * @throws JavaModelException
 *             the java model exception
 */
private boolean missesJavadoc(IPackageFragmentRoot packageFragmentRoot) throws JavaModelException {
    int entryKind = packageFragmentRoot.getRawClasspathEntry().getEntryKind();
    boolean missesJavadoc = false;
    if (entryKind == IClasspathEntry.CPE_LIBRARY || entryKind == IClasspathEntry.CPE_VARIABLE) {
        missesJavadoc = JavaUI.getLibraryJavadocLocation(packageFragmentRoot.getRawClasspathEntry()) == null;
    }
    if (entryKind == IClasspathEntry.CPE_CONTAINER) {
        missesJavadoc = JavaUI.getJavadocLocation(packageFragmentRoot.getPrimaryElement(), false) == null;
    }
    return missesJavadoc;
}