[jbosstools-commits] JBoss Tools SVN: r42827 - in trunk/ws: tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder and 1 other directory.

jbosstools-commits at lists.jboss.org jbosstools-commits at lists.jboss.org
Wed Aug 1 05:51:50 EDT 2012


Author: xcoulon
Date: 2012-08-01 05:51:49 -0400 (Wed, 01 Aug 2012)
New Revision: 42827

Modified:
   trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilter.java
   trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilterTestCase.java
Log:
Fixed - JBIDE-12095
JAX-RS facet in JBoss Tools chokes on package-info.java 

Modified: trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilter.java
===================================================================
--- trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilter.java	2012-08-01 09:20:22 UTC (rev 42826)
+++ trunk/ws/plugins/org.jboss.tools.ws.jaxrs.core/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilter.java	2012-08-01 09:51:49 UTC (rev 42827)
@@ -37,6 +37,7 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jdt.core.ElementChangedEvent;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IJavaElementDelta;
@@ -122,7 +123,8 @@
 		int deltaKind = event.getDeltaKind();
 		IJavaElement element = event.getElement();
 		// prevent processing java elements in a closed java project
-		if (element.getJavaProject() != null && !element.getJavaProject().getProject().isOpen()) {
+		// prevent processing of any file named 'package-info.java'
+		if (isProjectClosed(element) || isPackageInfoFile(element)) {
 			return false;
 		}
 		int flags = event.getFlags();
@@ -139,6 +141,24 @@
 		return match;
 	}
 
+	/**
+	 * Returns true if the element resource is a file named 'package-info.java' (whatever the containing folder)
+	 * @param element
+	 * @return
+	 */
+	private boolean isPackageInfoFile(IJavaElement element) {
+		return element.getResource() != null && element.getResource().getType() == IResource.FILE && element.getResource().getName().equals("package-info.java");
+	}
+
+	/**
+	 * Returns true if the enclosing project is closed
+	 * @param element
+	 * @return
+	 */
+	private boolean isProjectClosed(IJavaElement element) {
+		return element.getJavaProject() != null && !element.getJavaProject().getProject().isOpen();
+	}
+
 	protected boolean apply(int elementKind, int deltaKind, int eventType, int flags, boolean workingCopy) {
 		Rule matcher = new Rule(elementKind, deltaKind, eventType, workingCopy ? WORKING_COPY : PRIMARY_COPY, flags);
 		for (Iterator<Rule> iterator = rules.iterator(); iterator.hasNext();) {

Modified: trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilterTestCase.java
===================================================================
--- trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilterTestCase.java	2012-08-01 09:20:22 UTC (rev 42826)
+++ trunk/ws/tests/org.jboss.tools.ws.jaxrs.core.test/src/org/jboss/tools/ws/jaxrs/core/internal/metamodel/builder/JavaElementDeltaFilterTestCase.java	2012-08-01 09:51:49 UTC (rev 42827)
@@ -26,6 +26,7 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import org.eclipse.core.resources.IResource;
 import org.eclipse.jdt.core.ICompilationUnit;
 import org.eclipse.jdt.core.IJavaElement;
 import org.eclipse.jdt.core.IMethod;
@@ -100,5 +101,20 @@
 		IJavaElement element = createMock(IMethod.class, METHOD);
 		assertFalse("Wrong result", filter.apply(createEvent(element, CHANGED, POST_RECONCILE, NO_FLAG)));
 	}
+	
+	@Test
+	public void shouldNotAcceptChangesInPackageInfoFile() {
+		IJavaElement element = createMock(IType.class, ANNOTATION, workingCopy);
+		IResource resource = mock(IResource.class);
+		when(element.getResource()).thenReturn(resource);
+		when(resource.getType()).thenReturn(IResource.FILE);
+		when(resource.getName()).thenReturn("package-info.java");
+		assertFalse("Wrong result", filter.apply(createEvent(element, ADDED, POST_RECONCILE, NO_FLAG)));
+		assertFalse("Wrong result", filter.apply(createEvent(element, ADDED, POST_CHANGE, NO_FLAG)));
+		assertFalse("Wrong result", filter.apply(createEvent(element, CHANGED, POST_RECONCILE, NO_FLAG)));
+		assertFalse("Wrong result", filter.apply(createEvent(element, CHANGED, POST_CHANGE, NO_FLAG)));
+		assertFalse("Wrong result", filter.apply(createEvent(element, REMOVED, POST_RECONCILE, NO_FLAG)));
+		assertFalse("Wrong result", filter.apply(createEvent(element, REMOVED, POST_CHANGE, NO_FLAG)));
+	}
 
 }



More information about the jbosstools-commits mailing list