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

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

Introduction

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

Prototype

IPackageFragmentRoot findPackageFragmentRoot(IPath path) throws JavaModelException;

Source Link

Document

Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or null if one does not exist.

Usage

From source file:org.eclipse.e4.internal.tools.wizards.classes.AbstractNewClassPage.java

License:Open Source License

private IPackageFragmentRoot choosePackageRoot() {
    IJavaElement initElement = clazz.getFragmentRoot();
    Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override/*from w  w w. j  a  v  a  2  s .  c o  m*/
        public boolean isSelectedValid(Object element) {
            try {
                if (element instanceof IJavaProject) {
                    IJavaProject jproject = (IJavaProject) element;
                    IPath path = jproject.getProject().getFullPath();
                    return (jproject.findPackageFragmentRoot(path) != null);
                } else if (element instanceof IPackageFragmentRoot) {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                }
                return true;
            } catch (JavaModelException e) {
                JavaPlugin.log(e.getStatus()); // just log, no UI in validation
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    JavaPlugin.log(e.getStatus()); // just log, no UI in validation
                    return false;
                }
            }
            return super.select(viewer, parent, element);
        }
    };

    StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setValidator(validator);
    dialog.setComparator(new JavaElementComparator());
    dialog.setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title);
    dialog.setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description);
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(fWorkspaceRoot));
    dialog.setInitialSelection(initElement);
    dialog.setHelpAvailable(false);

    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            return jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            return (IPackageFragmentRoot) element;
        }
        return null;
    }
    return null;
}

From source file:org.eclipse.e4.xwt.tools.ui.designer.dialogs.AccessorConfigurationDialog.java

License:Open Source License

/**
 * Uses the standard container selection dialog to choose the new value for the container field.
 *//*from   ww  w.  java2  s.com*/
private IPackageFragmentRoot chooseSourceContainer(IPackageFragmentRoot root) {
    Class[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        public boolean isSelectedValid(Object element) {
            try {
                if (element instanceof IJavaProject) {
                    IJavaProject jproject = (IJavaProject) element;
                    IPath path = jproject.getProject().getFullPath();
                    return (jproject.findPackageFragmentRoot(path) != null);
                } else if (element instanceof IPackageFragmentRoot) {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                }
                return true;
            } catch (JavaModelException e) {
                JavaPlugin.log(e.getStatus()); // just log, no ui in validation
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        public boolean select(Viewer viewer, Object parent, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    JavaPlugin.log(e.getStatus()); // just log, no ui in validation
                    return false;
                }
            }
            return super.select(viewer, parent, element);
        }
    };

    StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setValidator(validator);
    dialog.setComparator(new JavaElementComparator());
    dialog.setTitle("Source Folder Selection");
    dialog.setMessage("Choose a source folder:");
    dialog.addFilter(filter);
    dialog.setInput(JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()));

    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            return jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            return (IPackageFragmentRoot) element;
        }
        return null;
    }
    return root;
}

From source file:org.eclipse.gmf.internal.common.codegen.GeneratorBase.java

License:Open Source License

/**
 * @param javaSource workspace absolute path to java source folder of the generated project, e.g. '/org.sample.aaa/sources'. 
 * @param projectLocation {@link IPath} to folder where <code>.project</code> file would reside. Use <code>null</code> to use default workspace location.
 * @param referencedProjects collection of {@link IProject}
 * @throws UnexpectedBehaviourException something goes really wrong 
 * @throws InterruptedException user canceled operation
 *//*from w  w w. j a  v  a  2  s  .  c  om*/
protected final void initializeEditorProject(IPath javaSource, IPath projectLocation,
        List<IProject> referencedProjects) throws UnexpectedBehaviourException, InterruptedException {
    myDestProject = ResourcesPlugin.getWorkspace().getRoot().getProject(javaSource.segment(0));
    final int style = org.eclipse.emf.codegen.ecore.Generator.EMF_PLUGIN_PROJECT_STYLE;
    // pluginVariables is NOT used when style is EMF_PLUGIN_PROJECT_STYLE
    final List<?> pluginVariables = null;
    final IProgressMonitor pm = getNextStepMonitor();
    setProgressTaskName(Messages.initproject);

    org.eclipse.emf.codegen.ecore.Generator.createEMFProject(javaSource, projectLocation, referencedProjects,
            pm, style, pluginVariables);

    try {
        final IJavaProject jp = JavaCore.create(myDestProject);
        myDestRoot = jp.findPackageFragmentRoot(javaSource);
        // createEMFProject doesn't create source entry in case project exists and has some classpath entries already, 
        // though the folder gets created. 
        if (myDestRoot == null) {
            IClasspathEntry[] oldCP = jp.getRawClasspath();
            IClasspathEntry[] newCP = new IClasspathEntry[oldCP.length + 1];
            System.arraycopy(oldCP, 0, newCP, 0, oldCP.length);
            newCP[oldCP.length] = JavaCore.newSourceEntry(javaSource);
            jp.setRawClasspath(newCP, new NullProgressMonitor());
            myDestRoot = jp.findPackageFragmentRoot(javaSource);
        }
    } catch (JavaModelException ex) {
        throw new UnexpectedBehaviourException(ex.getMessage());
    }
    if (myDestRoot == null) {
        throw new UnexpectedBehaviourException("no source root can be found");
    }
}

From source file:org.eclipse.jpt.jaxb.ui.internal.wizards.classesgen.ClassesGeneratorWizardPage.java

License:Open Source License

/** 
 * Override to allow selection of source folder in current project only
 * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer()
 * Only 1 line in this code is different from the parent
 *//*ww  w  . j a  v  a2  s  .  c o  m*/
@Override
protected IPackageFragmentRoot chooseContainer() {
    Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override
        public boolean isSelectedValid(Object element) {
            try {
                if (element instanceof IJavaProject) {
                    IJavaProject jproject = (IJavaProject) element;
                    IPath path = jproject.getProject().getFullPath();
                    return (jproject.findPackageFragmentRoot(path) != null);
                } else if (element instanceof IPackageFragmentRoot) {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                }
                return true;
            } catch (JavaModelException e) {
                JptJaxbUiPlugin.instance().logError(e); // just log, no UI in validation
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                try {
                    return (((IPackageFragmentRoot) element).getKind() == IPackageFragmentRoot.K_SOURCE);
                } catch (JavaModelException e) {
                    JptJaxbUiPlugin.instance().logError(e); // just log, no UI in validation
                    return false;
                }
            }
            return super.select(viewer, parent, element);
        }
    };

    StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setValidator(validator);
    dialog.setComparator(new JavaElementComparator());
    dialog.setTitle(JptJaxbUiMessages.CLASSES_GENERATOR_WIZARD_PAGE_SOURCE_FOLDER_SELECTION_DIALOG_TITLE);
    dialog.setMessage(JptJaxbUiMessages.CLASSES_GENERATOR_WIZARD_PAGE_CHOOSE_SOURCE_FOLDER_DIALOG_DESC);
    dialog.addFilter(filter);
    //set the java project as the input instead of the workspace like the NewContainerWizardPage was doing
    //******************************************************//
    dialog.setInput(this.getJavaProject()); //
    //******************************************************//
    dialog.setInitialSelection(getPackageFragmentRoot());
    dialog.setHelpAvailable(false);

    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            return jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            return (IPackageFragmentRoot) element;
        }
        return null;
    }
    return null;
}

From source file:org.eclipse.jpt.jpa.ui.internal.wizards.gen.DefaultTableGenerationWizardPage.java

License:Open Source License

/** Override to allow select source folder in current project only
 * @see org.eclipse.jdt.ui.wizards.NewContainerWizardPage#chooseContainer()
 *//*w  w w.ja va 2 s.  c  om*/
@Override
protected IPackageFragmentRoot chooseContainer() {
    Class<?>[] acceptedClasses = new Class[] { IPackageFragmentRoot.class, IJavaProject.class };
    TypedElementSelectionValidator validator = new TypedElementSelectionValidator(acceptedClasses, false) {
        @Override
        public boolean isSelectedValid(Object element) {
            try {
                if (element instanceof IJavaProject) {
                    IJavaProject jproject = (IJavaProject) element;
                    IPath path = jproject.getProject().getFullPath();
                    return (jproject.findPackageFragmentRoot(path) != null);
                } else if (element instanceof IPackageFragmentRoot) {
                    return PackageFragmentRootTools.isSourceFolder((IPackageFragmentRoot) element);
                }
                return true;
            } catch (JavaModelException e) {
                JptJpaUiPlugin.instance().logError(e); // just log, no UI in validation
            }
            return false;
        }
    };

    acceptedClasses = new Class[] { IJavaModel.class, IPackageFragmentRoot.class, IJavaProject.class };
    ViewerFilter filter = new TypedViewerFilter(acceptedClasses) {
        @Override
        public boolean select(Viewer viewer, Object parent, Object element) {
            if (element instanceof IPackageFragmentRoot) {
                return PackageFragmentRootTools.isSourceFolder((IPackageFragmentRoot) element);
            }
            return super.select(viewer, parent, element);
        }
    };

    StandardJavaElementContentProvider provider = new StandardJavaElementContentProvider();
    ILabelProvider labelProvider = new JavaElementLabelProvider(JavaElementLabelProvider.SHOW_DEFAULT);
    ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(getShell(), labelProvider, provider);
    dialog.setValidator(validator);
    dialog.setComparator(new JavaElementComparator());
    dialog.setTitle(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_title);
    dialog.setMessage(NewWizardMessages.NewContainerWizardPage_ChooseSourceContainerDialog_description);
    dialog.addFilter(filter);
    dialog.setInput(jpaProject.getJavaProject());
    dialog.setInitialSelection(getPackageFragmentRoot());
    dialog.setHelpAvailable(false);

    if (dialog.open() == Window.OK) {
        Object element = dialog.getFirstResult();
        if (element instanceof IJavaProject) {
            IJavaProject jproject = (IJavaProject) element;
            return jproject.getPackageFragmentRoot(jproject.getProject());
        } else if (element instanceof IPackageFragmentRoot) {
            return (IPackageFragmentRoot) element;
        }
        return null;
    }
    return null;
}

From source file:org.eclipse.jst.jsp.ui.internal.hyperlink.XMLJavaHyperlinkDetector.java

License:Open Source License

private IHyperlink createHyperlink(String elementName, IRegion region, IDocument document) {
    // try file buffers
    ITextFileBuffer textFileBuffer = FileBuffers.getTextFileBufferManager().getTextFileBuffer(document);
    if (textFileBuffer != null) {
        IPath basePath = textFileBuffer.getLocation();
        if (basePath != null && !basePath.isEmpty()) {
            IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0));
            try {
                if (basePath.segmentCount() > 1 && project.isAccessible()
                        && project.hasNature(JavaCore.NATURE_ID)) {
                    return createJavaElementHyperlink(JavaCore.create(project), elementName, region);
                }/* w  ww .ja  v  a2 s . co m*/
            } catch (CoreException e) {
                Logger.logException(e);
            }
        }
    }

    // fallback to SSE-specific knowledge
    IStructuredModel model = null;
    try {
        model = StructuredModelManager.getModelManager().getExistingModelForRead(document);
        if (model != null) {
            String baseLocation = model.getBaseLocation();
            // URL fixup from the taglib index record
            if (baseLocation.startsWith("jar:/file:")) { //$NON-NLS-1$
                baseLocation = StringUtils.replace(baseLocation, "jar:/", "jar:"); //$NON-NLS-1$ //$NON-NLS-2$
            }
            /*
             * Handle opened TLD files from JARs on the Java Build Path by
             * finding a package fragment root for the same .jar file and
             * opening the class from there. Note that this might be from
             * a different Java project's build path than the TLD.
             */
            if (baseLocation.startsWith(JAR_FILE_PROTOCOL)
                    && baseLocation.indexOf('!') > JAR_FILE_PROTOCOL.length()) {
                String baseFile = baseLocation.substring(JAR_FILE_PROTOCOL.length(), baseLocation.indexOf('!'));
                IPath basePath = new Path(baseFile);
                IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
                for (int i = 0; i < projects.length; i++) {
                    try {
                        if (projects[i].isAccessible() && projects[i].hasNature(JavaCore.NATURE_ID)) {
                            IJavaProject javaProject = JavaCore.create(projects[i]);
                            if (javaProject.exists()) {
                                IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(basePath);
                                if (root != null) {
                                    return createJavaElementHyperlink(javaProject, elementName, region);
                                }
                            }
                        }
                    } catch (CoreException e) {
                        Logger.logException(e);
                    }
                }
            } else {
                IPath basePath = new Path(baseLocation);
                if (basePath.segmentCount() > 1) {
                    return createJavaElementHyperlink(
                            JavaCore.create(
                                    ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0))),
                            elementName, region);
                }
            }
        }
    } finally {
        if (model != null)
            model.releaseFromRead();
    }
    return null;
}

From source file:org.eclipse.jst.jsp.ui.internal.taginfo.XMLJavadocHoverProcessor.java

License:Open Source License

public String getHoverInfo(ITextViewer textViewer, IRegion hoverRegion) {
    String elementName = null;//  w w w.  j av a  2s. c  om
    try {
        elementName = textViewer.getDocument().get(hoverRegion.getOffset(), hoverRegion.getLength());
    } catch (BadLocationException e) {
        return null;
    }

    IStructuredModel model = null;
    try {
        model = StructuredModelManager.getModelManager().getExistingModelForRead(textViewer.getDocument());
        if (model != null) {
            String baseLocation = model.getBaseLocation();
            // URL fixup from the taglib index record
            if (baseLocation.startsWith("jar:/file:")) {
                baseLocation = StringUtils.replace(baseLocation, "jar:/", "jar:");
            }
            /*
             * Handle opened TLD files from JARs on the Java Build Path by
             * finding a package fragment root for the same .jar file and
             * opening the class from there. Note that this might be from
             * a different Java project's build path than the TLD.
             */
            if (baseLocation.startsWith("jar:file:") && baseLocation.indexOf('!') > 9) {
                String baseFile = baseLocation.substring(9, baseLocation.indexOf('!'));
                IPath basePath = new Path(baseFile);
                IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
                for (int i = 0; i < projects.length; i++) {
                    try {
                        if (projects[i].isAccessible() && projects[i].hasNature(JavaCore.NATURE_ID)) {
                            IJavaProject javaProject = JavaCore.create(projects[i]);
                            if (javaProject.exists()) {
                                IPackageFragmentRoot root = javaProject.findPackageFragmentRoot(basePath);
                                if (root != null) {
                                    // TLDs don't reference method names
                                    IType type = javaProject.findType(elementName);
                                    if (type != null) {
                                        return getHoverInfo(new IJavaElement[] { type });
                                    }
                                }
                            }
                        }
                    } catch (CoreException e) {
                        Logger.logException(e);
                    }
                }
            } else {
                IPath basePath = new Path(baseLocation);
                if (basePath.segmentCount() > 1) {
                    IJavaProject javaProject = JavaCore
                            .create(ResourcesPlugin.getWorkspace().getRoot().getProject(basePath.segment(0)));
                    if (javaProject.exists()) {
                        try {
                            // TLDs don't reference method names
                            IType type = javaProject.findType(elementName);
                            if (type != null) {
                                return getHoverInfo(new IJavaElement[] { type });
                            }
                        } catch (JavaModelException e) {
                            Logger.logException(e);
                        }
                    }
                }
            }
        }

    } finally {
        if (model != null)
            model.releaseFromRead();
    }
    return null;
}

From source file:org.eclipse.jst.ws.internal.common.ResourceUtils.java

License:Open Source License

/**
 * Returns a build source package fragment root of the <code>project</code>
 * as an <code>IPackageFragmentRoot</code>, or null if the project either
 * has no Java nature or if the project's build classpath contains no
 * folders local to the project. If the project has more than one of its own
 * folders on the build classpath, then one of them is chosen arbitrarily as
 * the build source location./*from  www. j  a va  2s . com*/
 * 
 * @param project
 *            The project.
 * @return A build source package fragment root of the <code>project</code>
 *         or null if the project has no Java nature or if the project's
 *         build classpath contains no folders local to the project.
 *         
 * @deprecated not used
 */
public static IPackageFragmentRoot getJavaSourcePackageFragmentRoot(IProject project) {
    IPackageFragmentRoot packageFragmentRoot = null;
    IPath javaSourceLocation = getJavaSourceLocation(project);
    try {
        IJavaProject javaProject = JavaCore.create(project);
        if (javaProject != null) {
            packageFragmentRoot = javaProject.findPackageFragmentRoot(javaSourceLocation);
        }
    } catch (JavaModelException e) {
    }
    return packageFragmentRoot;
}

From source file:org.eclipse.m2e.tests.BuildPathManagerTest.java

License:Open Source License

private IPackageFragmentRoot getPackageFragmentRoot(IJavaProject javaProject, IClasspathEntry cp)
        throws JavaModelException {
    return javaProject.findPackageFragmentRoot(cp.getPath());
}

From source file:org.eclipse.m2e.tests.BuildPathManagerTest.java

License:Open Source License

public void testDownloadSources_006_nonMavenProject() throws Exception {
    RepositoryRegistry repositoryRegistry = (RepositoryRegistry) MavenPlugin.getRepositoryRegistry();
    repositoryRegistry.updateRegistry(monitor);

    NexusIndexManager indexManager = (NexusIndexManager) MavenPlugin.getIndexManager();
    indexManager.getIndexUpdateJob().join();
    IMutableIndex localIndex = indexManager.getLocalIndex();
    localIndex.updateIndex(true, monitor);

    for (IRepository repository : repositoryRegistry.getRepositories(IRepositoryRegistry.SCOPE_SETTINGS)) {
        if ("file:repositories/remoterepo".equals(repository.getUrl())) {
            NexusIndex remoteIndex = indexManager.getIndex(repository);
            remoteIndex.updateIndex(true, monitor); // actually scan the repo
        }/*from   ww w .java2 s . c om*/
    }

    IProject project = createExisting("downloadsources-p006", "projects/downloadsources/p006");

    File log4jJar = new File("repositories/remoterepo/log4j/log4j/1.2.13/log4j-1.2.13.jar");
    Path log4jPath = new Path(log4jJar.getAbsolutePath());

    File junitJar = new File("repositories/remoterepo/junit/junit/3.8.1/junit-3.8.1.jar");
    Path junitPath = new Path(junitJar.getAbsolutePath());

    IJavaProject javaProject = JavaCore.create(project);
    IClasspathEntry[] origCp = javaProject.getRawClasspath();
    IClasspathEntry[] cp = new IClasspathEntry[origCp.length + 2];
    System.arraycopy(origCp, 0, cp, 0, origCp.length);

    cp[cp.length - 2] = JavaCore.newLibraryEntry(log4jPath, null, null, true);
    cp[cp.length - 1] = JavaCore.newLibraryEntry(junitPath, null, null, false);

    javaProject.setRawClasspath(cp, monitor);

    getBuildPathManager().scheduleDownload(javaProject.findPackageFragmentRoot(log4jPath), true, false);
    waitForJobsToComplete();

    cp = javaProject.getRawClasspath();

    assertEquals(log4jJar.getAbsoluteFile(), cp[cp.length - 2].getPath().toFile());
    assertEquals("log4j-1.2.13-sources.jar", cp[cp.length - 2].getSourceAttachmentPath().lastSegment());
    assertEquals(true, cp[cp.length - 2].isExported());

    getBuildPathManager().scheduleDownload(javaProject.findPackageFragmentRoot(junitPath), true, false);
    waitForJobsToComplete();

    assertEquals(junitJar.getAbsoluteFile(), cp[cp.length - 1].getPath().toFile());
    assertEquals("junit-3.8.1-sources.jar", cp[cp.length - 1].getSourceAttachmentPath().lastSegment());
    assertEquals(false, cp[cp.length - 1].isExported());
}