### Eclipse Workspace Patch 1.0
#P org.eclipse.jdt.core
Index: buildnotes_jdt-core.html
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/buildnotes_jdt-core.html,v
retrieving revision 1.5936
diff -u -r1.5936 buildnotes_jdt-core.html
--- buildnotes_jdt-core.html 22 Jun 2007 15:50:32 -0000 1.5936
+++ buildnotes_jdt-core.html 26 Jun 2007 11:04:19 -0000
@@ -53,7 +53,9 @@
What's new in this drop
Problem Reports Fixed
-191908
+194185
+[search] for package declarations finds also subpackages
+
191908
[1.5][compiler] Missing strike through for deprecated declaration fragment
192285
[formatter] Java source formatter not working if class has annotation on single line multiple fields declaration.
Index: search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java,v
retrieving revision 1.292
diff -u -r1.292 MatchLocator.java
--- search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java 11 May 2007 16:03:13 -0000 1.292
+++ search/org/eclipse/jdt/internal/core/search/matching/MatchLocator.java 26 Jun 2007 11:04:20 -0000
@@ -1255,7 +1255,7 @@
}
// Get all project package fragment names
this.nameLookup = ((JavaProject) projects[i]).newNameLookup(this.workingCopies);
- IPackageFragment[] packageFragments = this.nameLookup.findPackageFragments(new String(pkgPattern.pkgName), true, true);
+ IPackageFragment[] packageFragments = this.nameLookup.findPackageFragments(new String(pkgPattern.pkgName), false, true);
int pLength = packageFragments == null ? 0 : packageFragments.length;
// Report matches avoiding duplicate names
for (int p=0; p nameLength) return false;
@@ -1942,7 +1942,7 @@
if (!compoundName[i].equalsIgnoreCase(prefix[i]))
return false;
}
- return compoundName[prefixLength-1].toLowerCase().startsWith(prefix[prefixLength-1].toLowerCase());
+ return (partialMatch || prefixLength == nameLength) && compoundName[prefixLength-1].toLowerCase().startsWith(prefix[prefixLength-1].toLowerCase());
}
/*
Index: model/org/eclipse/jdt/internal/core/NameLookup.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/NameLookup.java,v
retrieving revision 1.115
diff -u -r1.115 NameLookup.java
--- model/org/eclipse/jdt/internal/core/NameLookup.java 27 Apr 2007 15:51:38 -0000 1.115
+++ model/org/eclipse/jdt/internal/core/NameLookup.java 26 Jun 2007 11:04:19 -0000
@@ -491,7 +491,7 @@
if (pkgName != null) {
boolean match = hasPatternChars
? Util.matchesWithIgnoreCase(pkgName, name)
- : Util.startsWithIgnoreCase(pkgName, splittedName);
+ : Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch);
if (match) {
Object value = this.packageFragments.valueTable[i];
if (value instanceof PackageFragmentRoot) {
@@ -857,7 +857,7 @@
if (requestor.isCanceled())
return;
String[] pkgName = (String[]) keys[i];
- if (pkgName != null && Util.startsWithIgnoreCase(pkgName, splittedName)) {
+ if (pkgName != null && Util.startsWithIgnoreCase(pkgName, splittedName, partialMatch)) {
Object value = this.packageFragments.valueTable[i];
if (value instanceof PackageFragmentRoot) {
PackageFragmentRoot root = (PackageFragmentRoot) value;
#P org.eclipse.jdt.core.tests.model
Index: src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java
===================================================================
RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java,v
retrieving revision 1.107
diff -u -r1.107 JavaSearchBugsTests.java
--- src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 11 May 2007 16:03:16 -0000 1.107
+++ src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 26 Jun 2007 11:04:23 -0000
@@ -7996,4 +7996,22 @@
packageCollector);
}
+/**
+ * @bug 194185 [search] for package declarations finds also subpackages
+ * @test Ensure that exact package is found when no
+ * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=194185"
+ */
+public void testBug194185() throws CoreException {
+ JavaSearchResultCollector packageCollector = new JavaSearchResultCollector(true);
+ search(
+ "java",
+ PACKAGE,
+ DECLARATIONS,
+ SearchEngine.createWorkspaceScope(),
+ packageCollector);
+ assertSearchResults(
+ ""+ getExternalJCLPathString("1.5") + " java",
+ packageCollector);
+}
+
}
\ No newline at end of file