Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJerome lanneluc2004-07-01 15:47:35 +0000
committerJerome lanneluc2004-07-01 15:47:35 +0000
commit02c90f57645e4025eb5dbb6f49625bc13384fc0e (patch)
tree9eccdc1f4ac9054342332ba1a4c0c769c6a49e81
parent837bd5350cb1e4674925de8c9796f5b331738934 (diff)
downloadeclipse.jdt.core-02c90f57645e4025eb5dbb6f49625bc13384fc0e.tar.gz
eclipse.jdt.core-02c90f57645e4025eb5dbb6f49625bc13384fc0e.tar.xz
eclipse.jdt.core-02c90f57645e4025eb5dbb6f49625bc13384fc0e.zip
67789
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java61
-rw-r--r--org.eclipse.jdt.core/buildnotes_jdt-core.html4
-rw-r--r--org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java48
3 files changed, 66 insertions, 47 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
index 8d72cfbc63..b2215dfd86 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
@@ -288,6 +288,36 @@ public void testCreateExcludedPackage() throws CoreException {
root.getNonJavaResources());
}
/*
+ * Ensure that creating a folder that represents an excluded and included package
+ * have the correct delta, Java elements and non-Java resources.
+ * (regression test for 67789 Java element delta from refresh contains excluded package)
+ */
+public void testCreateExcludedAndIncludedPackages() throws CoreException {
+ this.setClasspath(new String[] {"/P/src", "p1/p2/"});
+ IPackageFragmentRoot root = getPackageFragmentRoot("/P/src");
+
+ clearDeltas();
+ createFolder("/P/src/p1/p2");
+
+ assertDeltas(
+ "Unexpected deltas",
+ "P[*]: {CHILDREN}\n" +
+ " src[*]: {CHILDREN}\n" +
+ " p1[+]: {}"
+ );
+
+ assertSortedElementsEqual(
+ "Unexpected children",
+ "<default> [in src [in P]]\n" +
+ "p1 [in src [in P]]",
+ root.getChildren());
+
+ assertResourcesEqual(
+ "Unexpected non-java resources",
+ "p2",
+ root.getPackageFragment("p1").getNonJavaResources());
+}
+/*
* Ensure that creating a file that corresponds to an excluded compilation unit
* doesn't make it appear as a child of its package but it is a non-java resource.
*/
@@ -672,6 +702,37 @@ public void testSearchWithExcludedCompilationUnit2() throws CoreException {
resultCollector.toString());
}
/*
+ * Ensure that removing a folder that represents an excluded and included package
+ * have the correct delta, Java elements and non-Java resources.
+ * (regression test for 67789 Java element delta from refresh contains excluded package)
+ */
+public void testRemoveExcludedAndIncludedPackages() throws CoreException {
+ this.setClasspath(new String[] {"/P/src", "p1/p2/"});
+ IPackageFragmentRoot root = getPackageFragmentRoot("/P/src");
+ createFolder("/P/src/p1/p2");
+
+ clearDeltas();
+ deleteFolder("/P/src/p1");
+
+ assertDeltas(
+ "Unexpected deltas",
+ "P[*]: {CHILDREN}\n" +
+ " src[*]: {CHILDREN}\n" +
+ " p1[-]: {}"
+ );
+
+ assertSortedElementsEqual(
+ "Unexpected children",
+ "<default> [in src [in P]]",
+ root.getChildren());
+
+ assertResourcesEqual(
+ "Unexpected non-java resources",
+ "",
+ root.getNonJavaResources());
+}
+
+/*
* Ensure that renaming a folder that corresponds to an excluded package
* so that it is not excluded any longer
* makes it appears as a child of its package fragment root
diff --git a/org.eclipse.jdt.core/buildnotes_jdt-core.html b/org.eclipse.jdt.core/buildnotes_jdt-core.html
index dce6644ee5..8b1a768f1d 100644
--- a/org.eclipse.jdt.core/buildnotes_jdt-core.html
+++ b/org.eclipse.jdt.core/buildnotes_jdt-core.html
@@ -50,7 +50,9 @@ What's new in this drop</h2>
</ul>
<h3>Problem Reports Fixed</h3>
-<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=68772">68772</a>
+<a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=67789">67789</a>
+Java element delta from refresh contains excluded package
+<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=68772">68772</a>
IDOMMember.getComments() sometimes returns wrong results.
<br><a href="http://bugs.eclipse.org/bugs/show_bug.cgi?id=68863">68863</a>
Missing entry in local variable attribute
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java
index 6d228584c8..11d4571c7e 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/DeltaProcessor.java
@@ -1032,28 +1032,6 @@ public class DeltaProcessor {
project = (JavaProject) element.getJavaProject();
this.projectCachesToReset.add(project);
- // add subpackages
- if (delta != null){
- PackageFragmentRoot root = element.getPackageFragmentRoot();
- String name = element.getElementName();
- IResourceDelta[] children = delta.getAffectedChildren();
- for (int i = 0, length = children.length; i < length; i++) {
- IResourceDelta child = children[i];
- IResource resource = child.getResource();
- if (resource instanceof IFolder) {
- String folderName = resource.getName();
- if (Util.isValidFolderNameForPackage(folderName)) {
- String subpkgName =
- name.length() == 0 ?
- folderName :
- name + "." + folderName; //$NON-NLS-1$
- Openable subpkg = (Openable)root.getPackageFragment(subpkgName);
- this.updateIndex(subpkg, child);
- this.elementAdded(subpkg, child, rootInfo);
- }
- }
- }
- }
break;
}
}
@@ -1151,28 +1129,6 @@ public class DeltaProcessor {
project = (JavaProject) element.getJavaProject();
this.projectCachesToReset.add(project);
- // remove subpackages
- if (delta != null){
- PackageFragmentRoot root = element.getPackageFragmentRoot();
- String name = element.getElementName();
- IResourceDelta[] children = delta.getAffectedChildren();
- for (int i = 0, length = children.length; i < length; i++) {
- IResourceDelta child = children[i];
- IResource resource = child.getResource();
- if (resource instanceof IFolder) {
- String folderName = resource.getName();
- if (Util.isValidFolderNameForPackage(folderName)) {
- String subpkgName =
- name.length() == 0 ?
- folderName :
- name + "." + folderName; //$NON-NLS-1$
- Openable subpkg = (Openable)root.getPackageFragment(subpkgName);
- this.updateIndex(subpkg, child);
- this.elementRemoved(subpkg, child, rootInfo);
- }
- }
- }
- }
break;
}
}
@@ -2272,7 +2228,7 @@ public class DeltaProcessor {
}
updateIndex(element, delta);
elementAdded(element, delta, rootInfo);
- return false;
+ return elementType == IJavaElement.PACKAGE_FRAGMENT;
case IResourceDelta.REMOVED :
deltaRes = delta.getResource();
element = createElement(deltaRes, elementType, rootInfo);
@@ -2288,7 +2244,7 @@ public class DeltaProcessor {
// reset the corresponding project built state, since cannot reuse if added back
this.manager.setLastBuiltState((IProject)deltaRes, null /*no state*/);
}
- return false;
+ return elementType == IJavaElement.PACKAGE_FRAGMENT;
case IResourceDelta.CHANGED :
int flags = delta.getFlags();
if ((flags & IResourceDelta.CONTENT) != 0) {

Back to the top