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

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

Introduction

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

Prototype

IPath getPath();

Source Link

Document

Returns the path of this classpath entry.

Usage

From source file:com.google.cloud.tools.eclipse.appengine.libraries.AppEngineLibraryContainerInitializer.java

License:Apache License

private void validateJarPaths(LibraryClasspathContainer container) throws LibraryRepositoryServiceException {
    IClasspathEntry[] classpathEntries = container.getClasspathEntries();
    for (int i = 0; i < classpathEntries.length; i++) {
        IClasspathEntry classpathEntry = classpathEntries[i];
        if (!classpathEntry.getPath().toFile().exists()) {
            classpathEntries[i] = repositoryService.rebuildClasspathEntry(classpathEntry);
        }/*from   ww  w  .ja va  2s  . c o m*/
    }
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.AppEngineLibraryContainerInitializerTest.java

License:Apache License

/**
 * This test relies on the {@link TestAppEngineLibraryContainerInitializer} defined in the fragment.xml for
 * <code>TEST_CONTAINER_PATH</code>. When the test is launched, the Platform will try to initialize the container
 * defined for the test project (field <code>testProject</code>), but due to the empty implementation of
 * {@link TestAppEngineLibraryContainerInitializer#initialize(org.eclipse.core.runtime.IPath, org.eclipse.jdt.core.IJavaProject)}
 * the container will remain unresolved.
 * Then the {@link AppEngineLibraryContainerInitializer} instance created in this method will initialize the container
 * and the test will verify it./*from w w w  . j  a v a 2 s  .  c om*/
 * This approach is required by the fact that the production {@link AppEngineLibraryContainerInitializer} is defined
 * in the host project's plugin.xml and it is not possible to remove/override it.
 */
@Test
public void testInitialize_resolvesContainerToJar() throws CoreException {
    AppEngineLibraryContainerInitializer containerInitializer = new AppEngineLibraryContainerInitializer(
            new IConfigurationElement[] { configurationElement }, libraryFactory, TEST_CONTAINER_PATH,
            serializer, repositoryService);
    containerInitializer.initialize(new Path(TEST_LIBRARY_PATH), testProject.getJavaProject());

    IClasspathEntry[] resolvedClasspath = testProject.getJavaProject().getResolvedClasspath(false);
    assertThat(resolvedClasspath.length, is(2));
    IClasspathEntry libJar = resolvedClasspath[1];
    assertThat(libJar.getPath().toOSString(), is("/test/path/artifactId.jar"));
    assertThat(libJar.getSourceAttachmentPath().toOSString(), is("/test/path/artifactId-sources.jar"));
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.AppEngineLibraryContainerInitializerTest.java

License:Apache License

@Test
public void testInitialize_libraryFactoryErrorDoesNotPreventOtherLibraries() throws Exception {
    Library library = new Library(TEST_LIBRARY_ID);
    library.setLibraryFiles(//from w  ww  .  j a  va2s  .  c  om
            Collections.singletonList(new LibraryFile(new MavenCoordinates("groupId", "artifactId"))));
    // this will override what is set in setupLibraryFactory() when setUp() is executed
    doThrow(LibraryFactoryException.class).doReturn(library).when(libraryFactory)
            .create(any(IConfigurationElement.class));

    AppEngineLibraryContainerInitializer containerInitializer = new AppEngineLibraryContainerInitializer(
            new IConfigurationElement[] { configurationElement, configurationElement }, libraryFactory,
            TEST_CONTAINER_PATH, serializer, repositoryService);
    containerInitializer.initialize(new Path(TEST_LIBRARY_PATH), testProject.getJavaProject());

    IClasspathEntry[] resolvedClasspath = testProject.getJavaProject().getResolvedClasspath(false);
    assertThat(resolvedClasspath.length, is(2));
    IClasspathEntry libJar = resolvedClasspath[1];
    assertThat(libJar.getPath().toOSString(), is("/test/path/artifactId.jar"));
    assertThat(libJar.getSourceAttachmentPath().toOSString(), is("/test/path/artifactId-sources.jar"));
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.AppEngineLibraryContainerResolverJob.java

License:Apache License

@Override
protected IStatus run(IProgressMonitor monitor) {
    // TODO parse library definition in ILibraryConfigService (or similar) started when the plugin/bundle starts
    // https://github.com/GoogleCloudPlatform/google-cloud-eclipse/issues/856
    try {//from  www.  java  2s  .c o m
        if (libraries == null) {
            // in tests libraries will be initialized via the test constructor, this would override mocks/stubs.
            IConfigurationElement[] configurationElements = RegistryFactory.getRegistry()
                    .getConfigurationElementsFor(LIBRARIES_EXTENSION_POINT);
            initializeLibraries(configurationElements, new LibraryFactory());
        }
        IClasspathEntry[] rawClasspath = javaProject.getRawClasspath();
        SubMonitor subMonitor = SubMonitor.convert(monitor, Messages.TaskResolveLibraries,
                getTotalwork(rawClasspath));
        for (int i = 0; i < rawClasspath.length; i++) {
            IClasspathEntry classpathEntry = rawClasspath[i];
            String libraryId = classpathEntry.getPath().segment(1);
            Library library = libraries.get(libraryId);
            if (library != null) {
                LibraryClasspathContainer container = resolveLibraryFiles(classpathEntry, library,
                        subMonitor.newChild(1));
                JavaCore.setClasspathContainer(classpathEntry.getPath(), new IJavaProject[] { javaProject },
                        new IClasspathContainer[] { container }, null);
                serializer.saveContainer(javaProject, container);
            }
        }
    } catch (LibraryRepositoryServiceException | CoreException | IOException ex) {
        return StatusUtil.error(this, Messages.TaskResolveLibrariesError, ex);
    }
    return Status.OK_STATUS;
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.AppEngineLibraryContainerResolverJob.java

License:Apache License

private LibraryClasspathContainer resolveLibraryFiles(IClasspathEntry classpathEntry, Library library,
        IProgressMonitor monitor) throws LibraryRepositoryServiceException {
    List<LibraryFile> libraryFiles = library.getLibraryFiles();
    SubMonitor subMonitor = SubMonitor.convert(monitor, libraryFiles.size());
    subMonitor.subTask(NLS.bind(Messages.TaskResolveArtifacts, getLibraryDescription(library)));
    SubMonitor child = subMonitor.newChild(libraryFiles.size());

    IClasspathEntry[] entries = new IClasspathEntry[libraryFiles.size()];
    int idx = 0;/*from  w  ww. jav a 2 s  . com*/
    for (LibraryFile libraryFile : libraryFiles) {
        entries[idx++] = repositoryService.getLibraryClasspathEntry(libraryFile);
        child.worked(1);
    }
    monitor.done();
    LibraryClasspathContainer container = new LibraryClasspathContainer(classpathEntry.getPath(),
            getLibraryDescription(library), entries);
    return container;
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.AppEngineLibraryContainerResolverJob.java

License:Apache License

private static int getTotalwork(IClasspathEntry[] rawClasspath) {
    int sum = 0;//from  w  ww  .  j ava  2 s.c om
    for (IClasspathEntry element : rawClasspath) {
        if (isLibraryClasspathEntry(element.getPath())) {
            ++sum;
        }
    }
    return sum;
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.LibraryClasspathContainerInitializer.java

License:Apache License

private static boolean jarPathsAreValid(LibraryClasspathContainer container) {
    IClasspathEntry[] classpathEntries = container.getClasspathEntries();
    for (int i = 0; i < classpathEntries.length; i++) {
        IClasspathEntry classpathEntry = classpathEntries[i];
        if (!classpathEntry.getPath().toFile().exists() || (classpathEntry.getSourceAttachmentPath() != null
                && !classpathEntry.getSourceAttachmentPath().toFile().exists())) {
            return false;
        }//from  w  w w  . j a v  a 2  s  .co m
    }
    return true;
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.LibraryClasspathContainerInitializerTest.java

License:Apache License

@Test
public void testInitialize_ifArtifactJarPathIsInvalidContainerResolvedFromScratch()
        throws CoreException, IOException {
    assertFalse(new File(NON_EXISTENT_FILE).exists());

    IClasspathEntry entry = mock(IClasspathEntry.class);
    when(entry.getPath()).thenReturn(new Path(NON_EXISTENT_FILE));
    IClasspathEntry[] entries = new IClasspathEntry[] { entry };
    LibraryClasspathContainer container = mock(LibraryClasspathContainer.class);
    when(container.getClasspathEntries()).thenReturn(entries);
    when(serializer.loadContainer(any(IJavaProject.class), any(IPath.class))).thenReturn(container);

    LibraryClasspathContainerInitializer containerInitializer = new LibraryClasspathContainerInitializer(
            TEST_CONTAINER_PATH, serializer, resolverService);
    containerInitializer.initialize(new Path(TEST_LIBRARY_PATH), testProject.getJavaProject());

    verifyContainerResolvedFromScratch();
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.LibraryClasspathContainerInitializerTest.java

License:Apache License

@Test
public void testInitialize_ifSourceArtifactJarPathInvalidContainerResolvedFromScratch()
        throws CoreException, IOException {
    File artifactFile = temporaryFolder.newFile();
    assertFalse(new File(NON_EXISTENT_FILE).exists());

    IClasspathEntry entry = mock(IClasspathEntry.class);
    when(entry.getPath()).thenReturn(new Path(artifactFile.getAbsolutePath()));
    when(entry.getSourceAttachmentPath()).thenReturn(new Path(NON_EXISTENT_FILE));
    IClasspathEntry[] entries = new IClasspathEntry[] { entry };
    LibraryClasspathContainer container = mock(LibraryClasspathContainer.class);
    when(container.getClasspathEntries()).thenReturn(entries);
    when(serializer.loadContainer(any(IJavaProject.class), any(IPath.class))).thenReturn(container);

    LibraryClasspathContainerInitializer containerInitializer = new LibraryClasspathContainerInitializer(
            TEST_CONTAINER_PATH, serializer, resolverService);
    containerInitializer.initialize(new Path(TEST_LIBRARY_PATH), testProject.getJavaProject());

    verifyContainerResolvedFromScratch();
}

From source file:com.google.cloud.tools.eclipse.appengine.libraries.persistence.LibraryClasspathContainerSerializerTest.java

License:Apache License

private void compare(LibraryClasspathContainer container, LibraryClasspathContainer otherContainer) {
    assertEquals(container.getPath(), otherContainer.getPath());
    assertEquals(container.getKind(), otherContainer.getKind());
    assertEquals(container.getDescription(), otherContainer.getDescription());
    for (int i = 0; i < container.getClasspathEntries().length; i++) {
        IClasspathEntry classpathEntry = container.getClasspathEntries()[i];
        IClasspathEntry otherClasspathEntry = otherContainer.getClasspathEntries()[i];
        assertEquals(classpathEntry.getPath(), otherClasspathEntry.getPath());
        assertEquals(classpathEntry.getEntryKind(), otherClasspathEntry.getEntryKind());
        assertEquals(classpathEntry.getSourceAttachmentPath(), otherClasspathEntry.getSourceAttachmentPath());
        assertEquals(classpathEntry.isExported(), otherClasspathEntry.isExported());
        for (int j = 0; j < classpathEntry.getAccessRules().length; j++) {
            IAccessRule accessRule = classpathEntry.getAccessRules()[j];
            IAccessRule otherAccessRule = otherClasspathEntry.getAccessRules()[j];
            assertEquals(accessRule.getKind(), otherAccessRule.getKind());
            assertEquals(accessRule.getPattern(), otherAccessRule.getPattern());
        }/*from  w  ww . j  a v a  2 s  . c o  m*/
        for (int k = 0; k < classpathEntry.getExtraAttributes().length; k++) {
            IClasspathAttribute classpathAttribute = classpathEntry.getExtraAttributes()[k];
            IClasspathAttribute otherClasspathAttribute = otherClasspathEntry.getExtraAttributes()[k];
            assertEquals(classpathAttribute.getName(), otherClasspathAttribute.getName());
            assertEquals(classpathAttribute.getValue(), otherClasspathAttribute.getValue());
        }
    }
}