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

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

Introduction

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

Prototype

IResource getResource();

Source Link

Document

Returns the innermost resource enclosing this element.

Usage

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElement11ChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldRemoveProviderWhenRemovingSourceFolder() throws CoreException {
    // pre-conditions: remove noise from other folders
    metamodelMonitor.removeFolder("src", "main", "webapp");
    metamodelMonitor.removePackageFragmentRoot("src/test/java");
    final IType type = metamodelMonitor
            .resolveType("org.jboss.tools.ws.jaxrs.sample.services.providers.EntityNotFoundExceptionMapper");
    metamodelMonitor.createProvider(type);
    metamodelMonitor.resetElementChangesNotifications();
    // operation/*from   w  ww  . j  a v  a2s  .c  o  m*/
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    sourceFolder.getResource().delete(true, null);
    metamodelMonitor.processEvent(sourceFolder, REMOVED);
    // verifications: only 6 built-in HTTP Methodsleft in the metamodel
    assertThat(metamodel.findAllElements().size(), equalTo(6));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementDeltaFilterTestCase.java

License:Open Source License

@Test
public void shouldNotAcceptChangesInJarFile() {
    final IPackageFragmentRoot element = createMock(IPackageFragmentRoot.class, PACKAGE_FRAGMENT_ROOT);
    final IResource resource = mock(IResource.class);
    when(element.getResource()).thenReturn(resource);
    when(element.isArchive()).thenReturn(true);
    when(resource.getType()).thenReturn(IResource.FILE);
    when(resource.getName()).thenReturn("somearchive.jar");
    assertFalse("Wrong result", filter.apply(createEvent(element, ADDED, POST_RECONCILE, Flags.NONE)));
    assertFalse("Wrong result", filter.apply(createEvent(element, ADDED, POST_CHANGE, Flags.NONE)));
    assertFalse("Wrong result", filter.apply(createEvent(element, CHANGED, POST_RECONCILE, Flags.NONE)));
    assertFalse("Wrong result", filter.apply(createEvent(element, CHANGED, POST_CHANGE, Flags.NONE)));
    assertFalse("Wrong result", filter.apply(createEvent(element, REMOVED, POST_RECONCILE, Flags.NONE)));
    assertFalse("Wrong result", filter.apply(createEvent(element, REMOVED, POST_CHANGE, Flags.NONE)));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.JavaElementDeltaScanner.java

License:Open Source License

/**
 * Recursively analyse the given Java Element Delta.
 * // w ww .j av  a  2 s .c o m
 * @param delta
 * @param eventType
 * @throws CoreException
 * @see https://bugs.eclipse.org/bugs/show_bug.cgi?id=100267
 */
private List<JavaElementChangedEvent> scanDelta(final IJavaElementDelta delta, final int eventType)
        throws CoreException {
    final List<JavaElementChangedEvent> events = new ArrayList<JavaElementChangedEvent>();
    final IJavaElement element = delta.getElement();
    // skip as the project is closed
    if (element == null) {
        Logger.debug("** skipping this build because the delta element is null **");
        return Collections.emptyList();
    } else if (element.getElementType() == IJavaElement.JAVA_PROJECT
            && !element.getJavaProject().getProject().isOpen() && delta.getFlags() != F_OPENED) {
        Logger.debug("** skipping this build because the java project is closed. **");
        return Collections.emptyList();
    } else if ((element.getElementType() == IJavaElement.PACKAGE_FRAGMENT_ROOT)) {
        final IPackageFragmentRoot packageFragmentRoot = (IPackageFragmentRoot) element;
        if (!packageFragmentRoot.isExternal()
                && (packageFragmentRoot.getResource() == null || !packageFragmentRoot.getResource().exists())) {
            return Collections.emptyList();
        }
    } else if (element.getResource() == null || !element.getResource().exists()) {
        return Collections.emptyList();
    }
    final int elementKind = element.getElementType();
    final int deltaKind = retrieveDeltaKind(delta);
    final Flags flags = new Flags(delta.getFlags());
    if (elementKind == JAVA_PROJECT) {
        final JavaElementChangedEvent event = new JavaElementChangedEvent(element, delta.getKind(), eventType,
                null, new Flags(delta.getFlags()));
        if (javaElementChangedEventFilter.apply(event)) {
            events.add(event);
            // skip anything below
            return events;
        }
    }
    final CompilationUnit compilationUnitAST = getCompilationUnitAST(delta);
    if (elementKind == COMPILATION_UNIT) {
        final ICompilationUnit compilationUnit = (ICompilationUnit) element;
        // compilationUnitAST is null when the given compilation unit'w
        // working copy is being commited (ie, Java Editor is being closed
        // for the given compilation unit, etc.)
        if (compilationUnit.exists() // see https://issues.jboss.org/browse/JBIDE-12760: compilationUnit may not exist
                && compilationUnit.isWorkingCopy() && compilationUnitAST != null) {
            // assuming possible changes in the method signatures (return type,
            // param types and param annotations). Other changes in methods
            // (renaming, adding/removing params) result in add+remove
            // events on the given method itself.
            if (requiresDiffsComputation(flags)) {
                for (IType type : compilationUnit.getAllTypes()) {
                    for (IMethod javaMethod : type.getMethods()) {
                        final JavaElementChangedEvent event = new JavaElementChangedEvent(javaMethod, CHANGED,
                                eventType, compilationUnitAST, new Flags(F_SIGNATURE));
                        if (javaElementChangedEventFilter.apply(event)) {
                            events.add(event);
                        }
                    }
                }
            }
        }
    }
    // element is part of the compilation unit
    else if (compilationUnitAST != null) {
        final JavaElementChangedEvent event = new JavaElementChangedEvent(element, deltaKind, eventType,
                compilationUnitAST, flags);
        if (javaElementChangedEventFilter.apply(event)) {
            events.add(event);
        }
    }
    // continue with children elements, both on annotations and other java
    // elements.
    for (IJavaElementDelta affectedChild : delta.getAffectedChildren()) {
        events.addAll(scanDelta(affectedChild, eventType));
    }
    for (IJavaElementDelta annotation : delta.getAnnotationDeltas()) {
        events.addAll(scanDelta(annotation, eventType));
    }
    return events;
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldAddApplicationHttpMethodsResourcesAndProvidersWhenAddingSourceFolderWithExistingMetamodel()
        throws CoreException {
    // pre-conditions
    metamodelMonitor.resetElementChangesNotifications();
    // operation//from  w  ww . j a  va2s. com
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    metamodelMonitor.processResourceEvent(sourceFolder.getResource(), ADDED);
    // verifications
    // 1 application + 1 HttpMethod + 7 Resources and their methods + 2
    // Providers
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(42));
    // all HttpMethods, Resources, ResourceMethods and ResourceFields. only
    // application is available: the java-based
    // one found in src/main/java
    assertThat(metamodel.findElements(javaProject).size(), equalTo(47));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
@Ignore("Ignoring for now: removing and creating a new metamodel should be tested in JaxrsMetamodelTestCase")
public void shouldAddHttpMethodsAndResourcesWhenAddingSourceFolderWithoutExistingMetamodel()
        throws CoreException, IOException {
    // pre-conditions
    // remove the metamodel
    metamodel.remove();//ww  w .  ja  va 2 s.  c o  m
    metamodel = JaxrsMetamodel.create(javaProject);
    metamodelMonitor.resetElementChangesNotifications();
    // operation
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    metamodelMonitor.processResourceEvent(sourceFolder.getResource(), ADDED);
    // verifications
    // 1 application + 1 HttpMethod + 3 RootResources + 2 Subresources + 5
    // Providers: the whole project is used to build the metamodel.
    assertThat(metamodel, notNullValue());
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(14));
    // all Applications, HttpMethods, Resources, ResourceMethods and
    // ResourceFields specific to the project
    assertThat(metamodel.findElements(javaProject).size(), equalTo(41));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldNotAddAnythingAddingBinaryLib() throws CoreException {
    // pre-conditions
    final IPackageFragmentRoot lib = metamodelMonitor.resolvePackageFragmentRoot("lib/jaxrs-api-2.0.1.GA.jar");
    metamodelMonitor.resetElementChangesNotifications();
    // operation// ww  w.j a  v  a2s. c o m
    metamodelMonitor.processResourceEvent(lib.getResource(), ADDED);
    // verifications: jar should not be taken into account, even if if it
    // contains matching elements...
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(0));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldRemoveJavaApplicationWhenRemovingSourceFolder() throws CoreException {
    // pre-conditions
    metamodelMonitor.createJavaApplication("org.jboss.tools.ws.jaxrs.sample.services.RestApplication");
    metamodelMonitor.resetElementChangesNotifications();
    // operation//www .j av a 2 s.c  o  m
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    metamodelMonitor.processResourceEvent(sourceFolder.getResource(), REMOVED);
    // verifications
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(1));
    assertThat(metamodelMonitor.getElementChanges().get(0).getElement().getElementKind().getCategory(),
            equalTo(EnumElementCategory.APPLICATION));
    assertThat(metamodelMonitor.getElementChanges().get(0).getElement(), is(notNullValue()));
    assertThat(metamodelMonitor.getElementChanges().get(0).getDeltaKind(), equalTo(REMOVED));
    // 6 built-in HTTP Methods
    assertThat(metamodel.findElements(javaProject).size(), equalTo(6));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldRemoveHttpMethodWhenRemovingSourceFolder() throws CoreException {
    // pre-conditions
    final IType type = metamodelMonitor.resolveType("org.jboss.tools.ws.jaxrs.sample.services.BAR");
    JaxrsHttpMethod.from(type).withMetamodel(metamodel).build();
    // metamodel.add(httpMethod);
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    metamodelMonitor.resetElementChangesNotifications();
    // operation//from  w  w w. j  a  v  a  2 s .  co m
    metamodelMonitor.processResourceEvent(sourceFolder.getResource(), REMOVED);
    // verifications
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(1));
    assertThat(metamodelMonitor.getElementChanges().get(0).getElement().getElementKind().getCategory(),
            equalTo(EnumElementCategory.HTTP_METHOD));
    assertThat(metamodelMonitor.getElementChanges().get(0).getElement(), is(notNullValue()));
    assertThat(metamodelMonitor.getElementChanges().get(0).getDeltaKind(), equalTo(REMOVED));
    // 6 built-in HTTP Methods
    assertThat(metamodel.findElements(javaProject).size(), equalTo(6));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldRemoveResourceWhenRemovingSourceFolder() throws CoreException {
    // pre-conditions
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    metamodelMonitor.createResource("org.jboss.tools.ws.jaxrs.sample.services.CustomerResource");
    metamodelMonitor.resetElementChangesNotifications();
    // operation/* w  w w  .j av  a  2 s.co  m*/
    metamodelMonitor.processResourceEvent(sourceFolder.getResource(), REMOVED);
    // verifications
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(7));
    // only built-in HTTP Methods left
    assertThat(metamodel.findElements(javaProject).size(), equalTo(6));
}

From source file:org.jboss.tools.ws.jaxrs.core.internal.metamodel.builder.ResourceChangedProcessingTestCase.java

License:Open Source License

@Test
public void shouldRemoveProviderWhenRemovingSourceFolder() throws CoreException {
    // pre-conditions
    metamodelMonitor/*from  w w  w.j a v a  2  s . c o  m*/
            .createProvider("org.jboss.tools.ws.jaxrs.sample.services.providers.EntityNotFoundExceptionMapper");
    final IPackageFragmentRoot sourceFolder = metamodelMonitor.resolvePackageFragmentRoot("src/main/java");
    metamodelMonitor.resetElementChangesNotifications();
    // operation
    delete(sourceFolder.getResource());
    metamodelMonitor.processResourceEvent(sourceFolder.getResource(), REMOVED);
    // verifications
    assertThat(metamodelMonitor.getElementChanges().size(), equalTo(1)); // 1 provider
    assertThat(metamodelMonitor.getElementChanges().get(0).getDeltaKind(), equalTo(REMOVED));
    assertThat(metamodelMonitor.getElementChanges().get(0).getElement().getElementKind().getCategory(),
            equalTo(EnumElementCategory.PROVIDER));
    // 6 built-in HTTP Methods only
    assertThat(metamodel.findElements(javaProject).size(), equalTo(6));
}