diff options
author | Jerome lanneluc | 2004-07-01 15:47:35 +0000 |
---|---|---|
committer | Jerome lanneluc | 2004-07-01 15:47:35 +0000 |
commit | 02c90f57645e4025eb5dbb6f49625bc13384fc0e (patch) | |
tree | 9eccdc1f4ac9054342332ba1a4c0c769c6a49e81 | |
parent | 837bd5350cb1e4674925de8c9796f5b331738934 (diff) | |
download | eclipse.jdt.core-02c90f57645e4025eb5dbb6f49625bc13384fc0e.tar.gz eclipse.jdt.core-02c90f57645e4025eb5dbb6f49625bc13384fc0e.tar.xz eclipse.jdt.core-02c90f57645e4025eb5dbb6f49625bc13384fc0e.zip |
67789
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) { |