### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core.tests.model
Index: src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java,v
retrieving revision 1.32
diff -u -r1.32 ExclusionPatternsTests.java
--- src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java 29 Mar 2006 04:03:06 -0000 1.32
+++ src/org/eclipse/jdt/core/tests/model/ExclusionPatternsTests.java 4 May 2006 06:19:41 -0000
@@ -622,7 +622,7 @@
IPackageFragment pkg = root.createPackageFragment("p", false, null);
clearDeltas();
- pkg.rename("q", false, null);
+ pkg.getResource().move(new Path("/P/src/q"), false, null);
assertDeltas(
"Unexpected deltas",
Index: src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java,v
retrieving revision 1.66
diff -u -r1.66 JavaProjectTests.java
--- src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java 29 Mar 2006 04:03:07 -0000 1.66
+++ src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java 4 May 2006 06:19:43 -0000
@@ -620,6 +620,44 @@
assertTrue("java should have subpackages", java.hasSubpackages());
assertTrue("java.lang should NOT have subpackages", !lang.hasSubpackages());
}
+/*
+ * Ensures that the structure is known for a package fragment on the classpath.
+ */
+public void testPackageFragmentIsStructureKnown1() throws CoreException {
+ IPackageFragment pkg = getPackageFragment("JavaProjectTests", "", "x");
+ assertTrue("Structure of package 'x' should be known", pkg.isStructureKnown());
+}
+/*
+ * Ensures that asking if the structure is known for a package fragment outside the classpath throws a JavaModelException.
+ * (regression test for bug 138577 Package content disapear in package explorer)
+ */
+public void testPackageFragmentIsStructureKnown2() throws CoreException {
+ try {
+ createJavaProject("P");
+ createFolder("/P/pack");
+ IPackageFragment pkg = getPackage("/P/pack");
+ editFile(
+ "/P/.classpath",
+ "\n" +
+ "\n" +
+ " \n" +
+ " \n" +
+ ""
+ );
+ JavaModelException exception = null;
+ try {
+ pkg.isStructureKnown();
+ } catch (JavaModelException e) {
+ exception = e;
+ }
+ assertExceptionEquals(
+ "Unexpected exception",
+ "pack [in [in P]] does not exist",
+ exception);
+ } finally {
+ deleteProject("P");
+ }
+}
/**
* Test getting the non-java resources from a package fragment.
*/
Index: src/org/eclipse/jdt/core/tests/model/ExistenceTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ExistenceTests.java,v
retrieving revision 1.21
diff -u -r1.21 ExistenceTests.java
--- src/org/eclipse/jdt/core/tests/model/ExistenceTests.java 29 Mar 2006 04:03:07 -0000 1.21
+++ src/org/eclipse/jdt/core/tests/model/ExistenceTests.java 4 May 2006 06:19:42 -0000
@@ -245,6 +245,28 @@
}
}
/*
+ * Ensure that an excluded package fragment doesn't exist.
+ * (regression test for bug 138577 Package content disapear in package explorer)
+ */
+public void testNonExistingPackageFragment3() throws CoreException {
+ try {
+ createJavaProject("P");
+ createFolder("/P/pack");
+ IPackageFragment pkg = getPackage("/P/pack");
+ editFile(
+ "/P/.classpath",
+ "\n" +
+ "\n" +
+ " \n" +
+ " \n" +
+ ""
+ );
+ assertFalse( "pack should not exist", pkg.exists());
+ } finally {
+ deleteProject("P");
+ }
+}
+/*
* Ensure that a non-Java project doesn't exist.
* (regression test for bug 28545 JavaProject.exists() returns true if project doesn't have Java nature)
*/
#P org.eclipse.jdt.core
Index: model/org/eclipse/jdt/internal/core/PackageFragment.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/PackageFragment.java,v
retrieving revision 1.77
diff -u -r1.77 PackageFragment.java
--- model/org/eclipse/jdt/internal/core/PackageFragment.java 29 Mar 2006 03:08:47 -0000 1.77
+++ model/org/eclipse/jdt/internal/core/PackageFragment.java 4 May 2006 06:19:44 -0000
@@ -65,8 +65,12 @@
// check whether this pkg can be opened
if (!underlyingResource.isAccessible()) throw newNotPresentException();
-
+
+ // check that it is not excluded (https://bugs.eclipse.org/bugs/show_bug.cgi?id=138577)
int kind = getKind();
+ if (kind == IPackageFragmentRoot.K_SOURCE && Util.isExcluded(this))
+ throw newNotPresentException();
+
// add compilation units/class files from resources
HashSet vChildren = new HashSet();
@@ -162,6 +166,9 @@
return Util.equalArraysOrNull(this.names, other.names) &&
this.parent.equals(other.parent);
}
+public boolean exists() {
+ return super.exists() && !Util.isExcluded(this);
+}
/**
* @see IPackageFragment#getClassFile(String)
* @exception IllegalArgumentException if the name does not end with ".class"