### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java,v retrieving revision 1.39 diff -u -r1.39 JavaSearchMultipleProjectsTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java 20 Nov 2006 09:49:37 -0000 1.39 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchMultipleProjectsTests.java 17 Dec 2006 12:51:27 -0000 @@ -865,4 +865,57 @@ deleteProject("P2"); } } + +/** + * @bug 167743: [search] Open Type Dialog cannot find types from projects migrated from 3.2.1 workspace + * @test Ensure that types are found even in default package fragment root + * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=167743" + */ +public void testBug167743() throws CoreException { + try { + IJavaProject p = createJavaProject("P"); + createFolder("/P/test"); + createFile( + "/P/test/TestClass.java", + "package test;\n" + + "public class Test {\n" + + "}\n" + ); + + // Search all type names with TypeNameMatchRequestor + AbstractJavaSearchTests.TypeNameMatchCollector collector = new AbstractJavaSearchTests.TypeNameMatchCollector() { + public String toString(){ + return toFullyQualifiedNamesString(); + } + }; + IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] { p }); + new SearchEngine().searchAllTypeNames( + null, + SearchPattern.R_EXACT_MATCH, + new char[] { '*' }, + SearchPattern.R_PATTERN_MATCH, + IJavaSearchConstants.TYPE, + scope, + collector, + IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, + null); + // Search all type names with TypeNameRequestor + SearchTests.SearchTypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); + new SearchEngine().searchAllTypeNames( + null, + SearchPattern.R_EXACT_MATCH, + new char[] { '*' }, + SearchPattern.R_PATTERN_MATCH, + IJavaSearchConstants.TYPE, + scope, + requestor, + IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, + null); + // Should have same types with these 2 searches + assertEquals("Invalid number of types found!", requestor.size(), collector.size()); + assertEquals("Found types sounds not to be correct", requestor.toString(), collector.toString()); + } finally { + deleteProject("P"); + } +} } Index: src/org/eclipse/jdt/core/tests/model/SearchTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/SearchTests.java,v retrieving revision 1.38 diff -u -r1.38 SearchTests.java --- src/org/eclipse/jdt/core/tests/model/SearchTests.java 3 Oct 2006 11:31:47 -0000 1.38 +++ src/org/eclipse/jdt/core/tests/model/SearchTests.java 17 Dec 2006 12:51:45 -0000 @@ -97,6 +97,9 @@ } return buffer.toString(); } + public int size() { + return this.results.size(); + } } class WaitingJob implements IJob { static final int MAX_WAIT = 30000; // wait 30s max 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.96 diff -u -r1.96 JavaSearchBugsTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 6 Dec 2006 18:29:05 -0000 1.96 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchBugsTests.java 17 Dec 2006 12:51:23 -0000 @@ -11,7 +11,6 @@ package org.eclipse.jdt.core.tests.model; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import junit.framework.Test; @@ -84,47 +83,6 @@ } } -class TypeNameMatchCollector extends TypeNameMatchRequestor { - List matches = new ArrayList(); - public void acceptTypeNameMatch(TypeNameMatch match) { - IType type = match.getType(); - if (type != null) { - this.matches.add(type); - } - } - public int size() { - return this.matches.size(); - } - private String toString(int kind) { - int size = size(); - if (size == 0) return ""; - String[] strings = new String[size]; - for (int i=0; i0) buffer.append('\n'); - buffer.append(strings[i]); - } - return buffer.toString(); - } - public String toString() { - return toString(0); - } - public String toFullyQualifiedNamesString() { - return toString(1); - } -} IJavaSearchScope getJavaSearchScopeBugs() { return SearchEngine.createJavaSearchScope(new IJavaProject[] {getJavaProject("JavaSearchBugs")}); } Index: src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java,v retrieving revision 1.155 diff -u -r1.155 JavaSearchTests.java --- src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java 10 Nov 2006 17:53:47 -0000 1.155 +++ src/org/eclipse/jdt/core/tests/model/JavaSearchTests.java 17 Dec 2006 12:51:44 -0000 @@ -3692,4 +3692,43 @@ "q1.AA", requestor); } + +/** + * @bug 160323: [search] TypeNameMatch: support hashCode/equals + * @test Ensure that match equals and hashCode methods return same values than those of stored {@link IType}. + * @see "https://bugs.eclipse.org/bugs/show_bug.cgi?id=160323" + */ +public void testBug160323() throws CoreException { + // Search all type names with TypeNameMatchRequestor + TypeNameMatchCollector collector = new TypeNameMatchCollector() { + public String toString(){ + return toFullyQualifiedNamesString(); + } + }; + new SearchEngine().searchAllTypeNames( + null, + SearchPattern.R_EXACT_MATCH, + null, + SearchPattern.R_PREFIX_MATCH, + IJavaSearchConstants.TYPE, + getJavaSearchScope(), + collector, + IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, + null); + // Search all type names with TypeNameRequestor + SearchTests.SearchTypeNameRequestor requestor = new SearchTests.SearchTypeNameRequestor(); + new SearchEngine().searchAllTypeNames( + null, + SearchPattern.R_EXACT_MATCH, + null, + SearchPattern.R_PREFIX_MATCH, + IJavaSearchConstants.TYPE, + getJavaSearchScope(), + requestor, + IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH, + null); + // Should have same types with these 2 searches + assertEquals("We should get some types!", requestor.size(), collector.size()); + assertEquals("Found types sounds not to be correct", requestor.toString(), collector.toString()); +} } Index: src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java,v retrieving revision 1.21 diff -u -r1.21 AbstractJavaSearchTests.java --- src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java 10 Oct 2006 10:49:26 -0000 1.21 +++ src/org/eclipse/jdt/core/tests/model/AbstractJavaSearchTests.java 17 Dec 2006 12:50:50 -0000 @@ -13,6 +13,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import org.eclipse.core.resources.*; @@ -387,7 +388,49 @@ } } - protected JavaSearchResultCollector resultCollector; + static class TypeNameMatchCollector extends TypeNameMatchRequestor { + List matches = new ArrayList(); + public void acceptTypeNameMatch(TypeNameMatch match) { + IType type = match.getType(); + if (type != null) { + this.matches.add(type); + } + } + public int size() { + return this.matches.size(); + } + private String toString(int kind) { + int size = size(); + if (size == 0) return ""; + String[] strings = new String[size]; + for (int i=0; i0) buffer.append('\n'); + buffer.append(strings[i]); + } + return buffer.toString(); + } + public String toString() { + return toString(0); + } + public String toFullyQualifiedNamesString() { + return toString(1); + } + } + +protected JavaSearchResultCollector resultCollector; public AbstractJavaSearchTests(String name) { this(name, 2); Index: workspace/JavaSearch/src/c11/A.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/workspace/JavaSearch/src/c11/A.java,v retrieving revision 1.1 diff -u -r1.1 A.java --- workspace/JavaSearch/src/c11/A.java 20 Jul 2004 15:28:44 -0000 1.1 +++ workspace/JavaSearch/src/c11/A.java 17 Dec 2006 12:51:45 -0000 @@ -1,3 +1,4 @@ +package c11; public class A {} class A1 extends A {} class A2 extends A { #P org.eclipse.jdt.core Index: search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java,v retrieving revision 1.53 diff -u -r1.53 JavaSearchScope.java --- search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java 17 Nov 2006 12:12:31 -0000 1.53 +++ search/org/eclipse/jdt/internal/core/search/JavaSearchScope.java 17 Dec 2006 12:51:53 -0000 @@ -583,6 +583,9 @@ return project.getPackageFragmentRoot(this.containerPaths[index]); } Object target = JavaModel.getTarget(ResourcesPlugin.getWorkspace().getRoot(), new Path(this.containerPaths[index]+'/'+this.relativePaths[index]), false); + if (target instanceof IProject) { + return project.getPackageFragmentRoot((IProject) target); + } if (target instanceof IResource) { IJavaElement element = JavaCore.create((IResource)target); return (IPackageFragmentRoot) element.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);