### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core.tests.model
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 3 May 2006 20:59:08 -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.
*/
#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 3 May 2006 20:59:14 -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();