View | Details | Raw Unified | Return to bug 146215
Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/model/AbstractJavaModelTests.java (+4 lines)
Lines 568-573 Link Here
568
		}
568
		}
569
		assertEquals("Unepexeted type parameters", expected, actual);
569
		assertEquals("Unepexeted type parameters", expected, actual);
570
	}
570
	}
571
	protected void assertSortedStringsEqual(String message, String expected, String[] strings) {
572
		Util.sort(strings);
573
		assertStringsEqual(message, expected, strings);
574
	}
571
	protected void assertStringsEqual(String message, String expected, String[] strings) {
575
	protected void assertStringsEqual(String message, String expected, String[] strings) {
572
		String actual = toString(strings, true/*add extra new lines*/);
576
		String actual = toString(strings, true/*add extra new lines*/);
573
		if (!expected.equals(actual)) {
577
		if (!expected.equals(actual)) {
(-)src/org/eclipse/jdt/core/tests/model/ClasspathTests.java (-25 / +25 lines)
Lines 1976-1986 Link Here
1976
public void testEncodeDecodeEntry02() {
1976
public void testEncodeDecodeEntry02() {
1977
	assertEncodeDecodeEntry(
1977
	assertEncodeDecodeEntry(
1978
		"P", 
1978
		"P", 
1979
		"<classpathentry including=\"**/Y.java\" excluding=\"**/X.java\" output=\"bin\" kind=\"src\" path=\"src\">\n" + 
1979
		"<classpathentry excluding=\"**/X.java\" including=\"**/Y.java\" kind=\"src\" output=\"bin\" path=\"src\">\n" + 
1980
		"	<attributes>\n" + 
1980
		"	<attributes>\n" + 
1981
		"		<attribute value=\"some value\" name=\"attrName\"/>\n" + 
1981
		"		<attribute name=\"attrName\" value=\"some value\"/>\n" + 
1982
		"	</attributes>\n" + 
1982
		"	</attributes>\n" + 
1983
		"</classpathentry>\n", 
1983
		"</classpathentry>\n",
1984
		JavaCore.newSourceEntry(
1984
		JavaCore.newSourceEntry(
1985
			new Path("/P/src"), 
1985
			new Path("/P/src"), 
1986
			new IPath[] {new Path("**/Y.java")},
1986
			new IPath[] {new Path("**/Y.java")},
Lines 2005-2018 Link Here
2005
public void testEncodeDecodeEntry04() {
2005
public void testEncodeDecodeEntry04() {
2006
	assertEncodeDecodeEntry(
2006
	assertEncodeDecodeEntry(
2007
		"P", 
2007
		"P", 
2008
		"<classpathentry exported=\"true\" sourcepath=\"src.zip\" kind=\"lib\" rootpath=\"root\" path=\"lib.jar\">\n" + 
2008
		"<classpathentry exported=\"true\" kind=\"lib\" path=\"lib.jar\" rootpath=\"root\" sourcepath=\"src.zip\">\n" + 
2009
		"	<attributes>\n" + 
2009
		"	<attributes>\n" + 
2010
		"		<attribute value=\"val1\" name=\"attr1\"/>\n" + 
2010
		"		<attribute name=\"attr1\" value=\"val1\"/>\n" + 
2011
		"	</attributes>\n" + 
2011
		"	</attributes>\n" + 
2012
		"	<accessrules>\n" + 
2012
		"	<accessrules>\n" + 
2013
		"		<accessrule kind=\"accessible\" pattern=\"**/A*.java\"/>\n" + 
2013
		"		<accessrule kind=\"accessible\" pattern=\"**/A*.java\"/>\n" + 
2014
		"	</accessrules>\n" + 
2014
		"	</accessrules>\n" + 
2015
		"</classpathentry>\n",	
2015
		"</classpathentry>\n",
2016
		JavaCore.newLibraryEntry(
2016
		JavaCore.newLibraryEntry(
2017
			new Path("/P/lib.jar"),
2017
			new Path("/P/lib.jar"),
2018
			new Path("/P/src.zip"),
2018
			new Path("/P/src.zip"),
Lines 2028-2039 Link Here
2028
public void testEncodeDecodeEntry05() {
2028
public void testEncodeDecodeEntry05() {
2029
	assertEncodeDecodeEntry(
2029
	assertEncodeDecodeEntry(
2030
		"P", 
2030
		"P", 
2031
		"<classpathentry exported=\"true\" sourcepath=\"src.zip\" kind=\"lib\" rootpath=\"root\" path=\"lib.jar\">\n" + 
2031
		"<classpathentry exported=\"true\" kind=\"lib\" path=\"lib.jar\" rootpath=\"root\" sourcepath=\"src.zip\">\n" + 
2032
		"	<attributes>\n" + 
2032
		"	<attributes>\n" + 
2033
		"		<attribute value=\"val1\" name=\"attr1\"/>\n" + 
2033
		"		<attribute name=\"attr1\" value=\"val1\"/>\n" + 
2034
		"	</attributes>\n" + 
2034
		"	</attributes>\n" + 
2035
		"	<accessrules>\n" + 
2035
		"	<accessrules>\n" + 
2036
		"		<accessrule kind=\"accessible\" pattern=\"**/A*.java\" ignoreifbetter=\"true\"/>\n" + 
2036
		"		<accessrule ignoreifbetter=\"true\" kind=\"accessible\" pattern=\"**/A*.java\"/>\n" + 
2037
		"	</accessrules>\n" + 
2037
		"	</accessrules>\n" + 
2038
		"</classpathentry>\n",
2038
		"</classpathentry>\n",
2039
		JavaCore.newLibraryEntry(
2039
		JavaCore.newLibraryEntry(
Lines 2182-2188 Link Here
2182
			"<classpath>\n" + 
2182
			"<classpath>\n" + 
2183
			"	<classpathentry kind=\"src\" path=\"\">\n" + 
2183
			"	<classpathentry kind=\"src\" path=\"\">\n" + 
2184
			"		<attributes>\n" + 
2184
			"		<attributes>\n" + 
2185
			"			<attribute value=\"some value\" name=\"foo\"/>\n" + 
2185
			"			<attribute name=\"foo\" value=\"some value\"/>\n" + 
2186
			"		</attributes>\n" + 
2186
			"		</attributes>\n" + 
2187
			"	</classpathentry>\n" + 
2187
			"	</classpathentry>\n" + 
2188
			"	<classpathentry kind=\"output\" path=\"\"/>\n" + 
2188
			"	<classpathentry kind=\"output\" path=\"\"/>\n" + 
Lines 2209-2216 Link Here
2209
			"<classpath>\n" + 
2209
			"<classpath>\n" + 
2210
			"	<classpathentry kind=\"src\" path=\"\">\n" + 
2210
			"	<classpathentry kind=\"src\" path=\"\">\n" + 
2211
			"		<attributes>\n" + 
2211
			"		<attributes>\n" + 
2212
			"			<attribute value=\"some value\" name=\"foo\"/>\n" + 
2212
			"			<attribute name=\"foo\" value=\"some value\"/>\n" + 
2213
			"			<attribute value=\"other value\" name=\"bar\"/>\n" + 
2213
			"			<attribute name=\"bar\" value=\"other value\"/>\n" + 
2214
			"		</attributes>\n" + 
2214
			"		</attributes>\n" + 
2215
			"	</classpathentry>\n" + 
2215
			"	</classpathentry>\n" + 
2216
			"	<classpathentry kind=\"output\" path=\"\"/>\n" + 
2216
			"	<classpathentry kind=\"output\" path=\"\"/>\n" + 
Lines 3653-3661 Link Here
3653
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
3653
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
3654
			"<classpath>\n" + 
3654
			"<classpath>\n" + 
3655
			"	<classpathentry kind=\"src\" path=\"src2\"/>\n" + 
3655
			"	<classpathentry kind=\"src\" path=\"src2\"/>\n" + 
3656
			"	<classpathentry unknown=\"test\" kind=\"src\" path=\"src1\"/>\n" + 
3656
			"	<classpathentry kind=\"src\" path=\"src1\" unknown=\"test\"/>\n" + 
3657
			"	<classpathentry kind=\"output\" path=\"bin\"/>\n" + 
3657
			"	<classpathentry kind=\"output\" path=\"bin\"/>\n" + 
3658
			"</classpath>\n",			
3658
			"</classpath>\n",
3659
			contents);		
3659
			contents);		
3660
	} finally {
3660
	} finally {
3661
		deleteProject("P");
3661
		deleteProject("P");
Lines 3751-3767 Link Here
3751
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
3751
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
3752
			"<classpath>\n" + 
3752
			"<classpath>\n" + 
3753
			"	<classpathentry kind=\"src\" path=\"src2\"/>\n" + 
3753
			"	<classpathentry kind=\"src\" path=\"src2\"/>\n" + 
3754
			"	<classpathentry kind=\"src\" unknownattribute=\"abcde\" path=\"src1\">\n" + 
3754
			"	<classpathentry kind=\"src\" path=\"src1\" unknownattribute=\"abcde\">\n" + 
3755
			"		<unknown1>\n" +
3755
			"		<unknown1>\n" + 
3756
			"			<test kind=\"1\"/>\n" +
3756
			"			<test kind=\"1\"/>\n" + 
3757
			"			<test kind=\"2\"/>\n" +
3757
			"			<test kind=\"2\"/>\n" + 
3758
			"		</unknown1>\n" +
3758
			"		</unknown1>\n" + 
3759
			"		<unknown2 attribute2=\"\">\n" +
3759
			"		<unknown2 attribute2=\"\">\n" + 
3760
			"			<test>\n" +
3760
			"			<test>\n" + 
3761
			"				<other a=\"b\"/>\n" +
3761
			"				<other a=\"b\"/>\n" + 
3762
			"			</test>\n" +
3762
			"			</test>\n" + 
3763
			"		</unknown2>\n" +
3763
			"		</unknown2>\n" + 
3764
			"	</classpathentry>\n" +
3764
			"	</classpathentry>\n" + 
3765
			"	<classpathentry kind=\"output\" path=\"bin\"/>\n" + 
3765
			"	<classpathentry kind=\"output\" path=\"bin\"/>\n" + 
3766
			"</classpath>\n",
3766
			"</classpath>\n",
3767
			contents);		
3767
			contents);		
(-)src/org/eclipse/jdt/core/tests/model/WorkingCopyOwnerTests.java (-1 / +1 lines)
Lines 133-139 Link Here
133
		this.workingCopy = getCompilationUnit("P/Y.java");
133
		this.workingCopy = getCompilationUnit("P/Y.java");
134
134
135
		this.workingCopy.becomeWorkingCopy(null, null);
135
		this.workingCopy.becomeWorkingCopy(null, null);
136
		assertElementsEqual(
136
		assertSortedElementsEqual(
137
			"Unexpected children of default package",
137
			"Unexpected children of default package",
138
			"X.java [in <default> [in <project root> [in P]]]\n" +
138
			"X.java [in <default> [in <project root> [in P]]]\n" +
139
			"[Working copy] Y.java [in <default> [in <project root> [in P]]]",
139
			"[Working copy] Y.java [in <default> [in <project root> [in P]]]",
(-)src/org/eclipse/jdt/core/tests/model/JavaLikeExtensionsTests.java (-7 / +7 lines)
Lines 47-57 Link Here
47
	 * Ensures that the known Java-like extensions are correct.
47
	 * Ensures that the known Java-like extensions are correct.
48
	 */
48
	 */
49
	public void testGetJavaLikeExtensions01() {
49
	public void testGetJavaLikeExtensions01() {
50
		assertStringsEqual(
50
		assertSortedStringsEqual(
51
			"Unexpected file extensions",
51
			"Unexpected file extensions",
52
			"java\n" + 
52
			"bar\n" + 
53
			"foo\n" + 
53
			"foo\n" + 
54
			"bar\n",
54
			"java\n",
55
			JavaCore.getJavaLikeExtensions()
55
			JavaCore.getJavaLikeExtensions()
56
		);
56
		);
57
	}
57
	}
Lines 64-75 Link Here
64
		try {
64
		try {
65
			if (javaContentType != null)
65
			if (javaContentType != null)
66
				javaContentType.addFileSpec("abc", IContentType.FILE_EXTENSION_SPEC);
66
				javaContentType.addFileSpec("abc", IContentType.FILE_EXTENSION_SPEC);
67
			assertStringsEqual(
67
			assertSortedStringsEqual(
68
				"Unexpected file extensions",
68
				"Unexpected file extensions",
69
				"java\n" + 
69
				"abc\n" + 
70
				"foo\n" + 
71
				"bar\n" + 
70
				"bar\n" + 
72
				"abc\n",
71
				"foo\n" + 
72
				"java\n",
73
				JavaCore.getJavaLikeExtensions()
73
				JavaCore.getJavaLikeExtensions()
74
			);
74
			);
75
		} finally {
75
		} finally {
(-)src/org/eclipse/jdt/core/tests/model/TypeHierarchyTests.java (-22 / +22 lines)
Lines 540-555 Link Here
540
		"Super types:\n" + 
540
		"Super types:\n" + 
541
		"  Object [in Object.class [in java.lang [in "+ getExternalJCLPathString() + " [in TypeHierarchy]]]]\n" + 
541
		"  Object [in Object.class [in java.lang [in "+ getExternalJCLPathString() + " [in TypeHierarchy]]]]\n" + 
542
		"Sub types:\n" + 
542
		"Sub types:\n" + 
543
		"  Y1 [in foo() [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
543
		"  <anonymous #1> [in <initializer #2> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
544
		"    Y2 [in foo() [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
544
		"    Y2 [in foo() [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
545
		"  <anonymous #1> [in field1 [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
546
		"  <anonymous #1> [in field2 [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
545
		"  <anonymous #1> [in foo() [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
547
		"  <anonymous #1> [in foo() [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
548
		"  <anonymous #1> [in <initializer #1> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
546
		"  <anonymous #2> [in field2 [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
549
		"  <anonymous #2> [in field2 [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
547
		"  <anonymous #1> [in field2 [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
550
		"  Y1 [in foo() [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
548
		"  <anonymous #1> [in field1 [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
549
		"  <anonymous #1> [in <initializer #2> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
550
		"  Y1 [in <initializer #1> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
551
		"    Y2 [in <initializer #1> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
551
		"    Y2 [in <initializer #1> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n" + 
552
		"  <anonymous #1> [in <initializer #1> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n",
552
		"  Y1 [in <initializer #1> [in A [in A.java [in p7 [in src [in TypeHierarchy]]]]]]\n",
553
		hierarchy);
553
		hierarchy);
554
}
554
}
555
/*
555
/*
Lines 561-570 Link Here
561
	assertHierarchyEquals(
561
	assertHierarchyEquals(
562
		"Focus: X [in X.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
562
		"Focus: X [in X.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
563
		"Super types:\n" + 
563
		"Super types:\n" + 
564
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
565
		"  ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
564
		"  ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
566
		"    List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
565
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
567
		"    AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
566
		"    AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
567
		"    List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
568
		"      Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
568
		"      Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
569
		"Sub types:\n",
569
		"Sub types:\n",
570
		hierarchy
570
		hierarchy
Lines 579-586 Link Here
579
	assertHierarchyEquals(
579
	assertHierarchyEquals(
580
		"Focus: ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
580
		"Focus: ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
581
		"Super types:\n" + 
581
		"Super types:\n" + 
582
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
583
		"  AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
582
		"  AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
583
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
584
		"    Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
584
		"    Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
585
		"Sub types:\n" + 
585
		"Sub types:\n" + 
586
		"  X [in X.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
586
		"  X [in X.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
Lines 597-606 Link Here
597
	assertHierarchyEquals(
597
	assertHierarchyEquals(
598
		"Focus: Y [in Y.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
598
		"Focus: Y [in Y.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
599
		"Super types:\n" + 
599
		"Super types:\n" + 
600
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
601
		"  ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
600
		"  ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
602
		"    List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
601
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
603
		"    AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
602
		"    AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
603
		"    List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
604
		"      Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
604
		"      Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
605
		"Sub types:\n",
605
		"Sub types:\n",
606
		hierarchy
606
		hierarchy
Lines 616-625 Link Here
616
	assertHierarchyEquals(
616
	assertHierarchyEquals(
617
		"Focus: X [in X.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
617
		"Focus: X [in X.java [in <default> [in src [in TypeHierarchy15]]]]\n" + 
618
		"Super types:\n" + 
618
		"Super types:\n" + 
619
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
620
		"  ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
619
		"  ArrayList [in ArrayList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
621
		"    List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
620
		"  List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
622
		"    AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
621
		"    AbstractList [in AbstractList.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
622
		"    List [in List.class [in util [in lib15.jar [in TypeHierarchy15]]]]\n" + 
623
		"      Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
623
		"      Object [in Object.class [in java.lang [in "+ getExternalJCLPathString("1.5") + " [in TypeHierarchy15]]]]\n" + 
624
		"Sub types:\n",
624
		"Sub types:\n",
625
		hierarchy
625
		hierarchy
Lines 1374-1391 Link Here
1374
		assertHierarchyEquals(
1374
		assertHierarchyEquals(
1375
			"Focus: <NONE>\n" + 
1375
			"Focus: <NONE>\n" + 
1376
			"Sub types of root classes:\n" + 
1376
			"Sub types of root classes:\n" + 
1377
			"  X [in X.java [in <default> [in <project root> [in P1]]]]\n" + 
1377
			"  Class [in Class.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1378
			"    Z [in Z.java [in <default> [in <project root> [in P3]]]]\n" + 
1379
			"    Y [in Y.java [in <default> [in <project root> [in P2]]]]\n" + 
1378
			"    Y [in Y.java [in <default> [in <project root> [in P2]]]]\n" + 
1380
			"  Throwable [in Throwable.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1379
			"    Z [in Z.java [in <default> [in <project root> [in P3]]]]\n" + 
1381
			"    Exception [in Exception.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1380
			"  String [in String.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1382
			"      RuntimeException [in RuntimeException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1381
			"    Error [in Error.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1382
			"      CloneNotSupportedException [in CloneNotSupportedException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1383
			"        IllegalMonitorStateException [in IllegalMonitorStateException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1383
			"        IllegalMonitorStateException [in IllegalMonitorStateException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1384
			"      InterruptedException [in InterruptedException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1384
			"      InterruptedException [in InterruptedException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1385
			"      CloneNotSupportedException [in CloneNotSupportedException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1385
			"      RuntimeException [in RuntimeException.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1386
			"    Error [in Error.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1386
			"    Exception [in Exception.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1387
			"  String [in String.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1387
			"  Throwable [in Throwable.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n" + 
1388
			"  Class [in Class.class [in java.lang [in "+ getExternalJCLPathString() + " [in P1]]]]\n",
1388
			"  X [in X.java [in <default> [in <project root> [in P1]]]]\n",
1389
			hierarchy);
1389
			hierarchy);
1390
	} finally {
1390
	} finally {
1391
		deleteProjects(new String[] {"P1", "P2", "P3"});
1391
		deleteProjects(new String[] {"P1", "P2", "P3"});
(-)src/org/eclipse/jdt/core/tests/model/JavaProjectTests.java (-29 / +30 lines)
Lines 238-244 Link Here
238
		createFile("/P/pack/X.java", "package pack; public class X {}");
238
		createFile("/P/pack/X.java", "package pack; public class X {}");
239
		createFile("/P/pack/Y.bar", "package pack; public class Y {}");
239
		createFile("/P/pack/Y.bar", "package pack; public class Y {}");
240
		IPackageFragment pkg = getPackage("/P/pack");
240
		IPackageFragment pkg = getPackage("/P/pack");
241
		assertElementsEqual(
241
		assertSortedElementsEqual(
242
			"Unexpected children of package pack", 
242
			"Unexpected children of package pack", 
243
			"X.java [in pack [in <project root> [in P]]]\n" + 
243
			"X.java [in pack [in <project root> [in P]]]\n" + 
244
			"Y.bar [in pack [in <project root> [in P]]]",
244
			"Y.bar [in pack [in <project root> [in P]]]",
Lines 1132-1164 Link Here
1132
	String containerKey = UserLibraryManager.CP_USERLIBRARY_PREFERENCES_PREFIX+"TEST";
1132
	String containerKey = UserLibraryManager.CP_USERLIBRARY_PREFERENCES_PREFIX+"TEST";
1133
	String libraryPreference = instancePreferences.get(containerKey, null);
1133
	String libraryPreference = instancePreferences.get(containerKey, null);
1134
	assertNotNull("Should get a preference for TEST user library", libraryPreference);
1134
	assertNotNull("Should get a preference for TEST user library", libraryPreference);
1135
	StringBuffer expected = new StringBuffer();
1135
1136
	expected.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");
1136
	assertSourceEquals(
1137
	expected.append("<userlibrary systemlibrary=\"false\" version=\"1\">\r\n");
1137
		"Invalid library contents", 
1138
	expected.append("	<archive path=\"/tmp/test.jar\">\r\n");
1138
		"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
1139
	expected.append("		<attributes>\r\n");
1139
		"<userlibrary systemlibrary=\"false\" version=\"1\">\n" + 
1140
	expected.append("			<attribute value=\"http://www.sample-url.org/doc/\" name=\"javadoc_location\"/>\r\n");
1140
		"	<archive path=\"/tmp/test.jar\">\n" + 
1141
	expected.append("			<attribute value=\"/tmp\" name=\"org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY\"/>\r\n");
1141
		"		<attributes>\n" + 
1142
	expected.append("		</attributes>\r\n");
1142
		"			<attribute name=\"javadoc_location\" value=\"http://www.sample-url.org/doc/\"/>\n" + 
1143
	expected.append("		<accessrules>\r\n");
1143
		"			<attribute name=\"org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY\" value=\"/tmp\"/>\n" + 
1144
	expected.append("			<accessrule kind=\"nonaccessible\" pattern=\"**/forbidden/**\"/>\r\n");
1144
		"		</attributes>\n" + 
1145
	expected.append("			<accessrule kind=\"discouraged\" pattern=\"**/discouraged/**\"/>\r\n");
1145
		"		<accessrules>\n" + 
1146
	expected.append("			<accessrule kind=\"accessible\" pattern=\"**/accessible/**\"/>\r\n");
1146
		"			<accessrule kind=\"nonaccessible\" pattern=\"**/forbidden/**\"/>\n" + 
1147
	expected.append("		</accessrules>\r\n");
1147
		"			<accessrule kind=\"discouraged\" pattern=\"**/discouraged/**\"/>\n" + 
1148
	expected.append("	</archive>\r\n");
1148
		"			<accessrule kind=\"accessible\" pattern=\"**/accessible/**\"/>\n" + 
1149
	expected.append("	<archive path=\"/tmp/test.jar\">\r\n");
1149
		"		</accessrules>\n" + 
1150
	expected.append("		<attributes>\r\n");
1150
		"	</archive>\n" + 
1151
	expected.append("			<attribute value=\"http://www.sample-url.org/doc/\" name=\"javadoc_location\"/>\r\n");
1151
		"	<archive path=\"/tmp/test.jar\">\n" + 
1152
	expected.append("			<attribute value=\"/tmp\" name=\"org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY\"/>\r\n");
1152
		"		<attributes>\n" + 
1153
	expected.append("		</attributes>\r\n");
1153
		"			<attribute name=\"javadoc_location\" value=\"http://www.sample-url.org/doc/\"/>\n" + 
1154
	expected.append("		<accessrules>\r\n");
1154
		"			<attribute name=\"org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY\" value=\"/tmp\"/>\n" + 
1155
	expected.append("			<accessrule kind=\"nonaccessible\" pattern=\"/org/eclipse/forbidden/**\"/>\r\n");
1155
		"		</attributes>\n" + 
1156
	expected.append("			<accessrule kind=\"discouraged\" pattern=\"/org/eclipse/discouraged/**\"/>\r\n");
1156
		"		<accessrules>\n" + 
1157
	expected.append("			<accessrule kind=\"accessible\" pattern=\"/org/eclipse/accessible/**\"/>\r\n");
1157
		"			<accessrule kind=\"nonaccessible\" pattern=\"/org/eclipse/forbidden/**\"/>\n" + 
1158
	expected.append("		</accessrules>\r\n");
1158
		"			<accessrule kind=\"discouraged\" pattern=\"/org/eclipse/discouraged/**\"/>\n" + 
1159
	expected.append("	</archive>\r\n");
1159
		"			<accessrule kind=\"accessible\" pattern=\"/org/eclipse/accessible/**\"/>\n" + 
1160
	expected.append("</userlibrary>\r\n");
1160
		"		</accessrules>\n" + 
1161
	String expectedString = org.eclipse.jdt.core.tests.util.Util.convertToIndependantLineDelimiter(expected.toString());
1161
		"	</archive>\n" + 
1162
	assertEquals("Invalid library contents", expectedString, org.eclipse.jdt.core.tests.util.Util.convertToIndependantLineDelimiter(libraryPreference));
1162
		"</userlibrary>\n", 
1163
		libraryPreference);
1163
}
1164
}
1164
}
1165
}
(-)src/org/eclipse/jdt/core/tests/compiler/regression/BatchCompilerTest.java (-5 / +5 lines)
Lines 1078-1084 Link Here
1078
		String expectedLogContents = 
1078
		String expectedLogContents = 
1079
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
1079
			"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + 
1080
			"<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.002 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_002.dtd\">\n" + 
1080
			"<!DOCTYPE compiler PUBLIC \"-//Eclipse.org//DTD Eclipse JDT 3.2.002 Compiler//EN\" \"http://www.eclipse.org/jdt/core/compiler_32_002.dtd\">\n" + 
1081
			"<compiler name=\"{1}\" copyright=\"{2}\" version=\"{3}\">\n" + 
1081
			"<compiler copyright=\"{2}\" name=\"{1}\" version=\"{3}\">\n" + 
1082
			"	<command_line>\n" + 
1082
			"	<command_line>\n" + 
1083
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.java\"/>\n" + 
1083
			"		<argument value=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.java\"/>\n" + 
1084
			"		<argument value=\"-1.5\"/>\n" + 
1084
			"		<argument value=\"-1.5\"/>\n" + 
Lines 1170-1179 Link Here
1170
			"	<classpaths>NORMALIZED SECTION</classpaths>\n" + 
1170
			"	<classpaths>NORMALIZED SECTION</classpaths>\n" + 
1171
			"	<sources>\n" + 
1171
			"	<sources>\n" + 
1172
			"		<source path=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.java\">\n" + 
1172
			"		<source path=\"---OUTPUT_DIR_PLACEHOLDER---{0}X.java\">\n" + 
1173
			"			<problems problems=\"1\" errors=\"1\" warnings=\"0\">\n" + 
1173
			"			<problems errors=\"1\" problems=\"1\" warnings=\"0\">\n" + 
1174
			"				<problem charEnd=\"28\" charStart=\"25\" severity=\"ERROR\" line=\"3\" id=\"UndefinedType\">\n" + 
1174
			"				<problem charEnd=\"28\" charStart=\"25\" id=\"UndefinedType\" line=\"3\" severity=\"ERROR\">\n" + 
1175
			"					<message value=\"Zork cannot be resolved to a type\"/>\n" + 
1175
			"					<message value=\"Zork cannot be resolved to a type\"/>\n" + 
1176
			"					<source_context value=\"Zork z;\" sourceStart=\"0\" sourceEnd=\"3\"/>\n" + 
1176
			"					<source_context sourceEnd=\"3\" sourceStart=\"0\" value=\"Zork z;\"/>\n" + 
1177
			"					<arguments>\n" + 
1177
			"					<arguments>\n" + 
1178
			"						<argument value=\"Zork\"/>\n" + 
1178
			"						<argument value=\"Zork\"/>\n" + 
1179
			"					</arguments>\n" + 
1179
			"					</arguments>\n" + 
Lines 1183-1189 Link Here
1183
			"		</source>\n" + 
1183
			"		</source>\n" + 
1184
			"	</sources>\n" + 
1184
			"	</sources>\n" + 
1185
			"	<stats>\n" + 
1185
			"	<stats>\n" + 
1186
			"		<problem_summary problems=\"1\" errors=\"1\" warnings=\"0\" tasks=\"0\"/>\n" + 
1186
			"		<problem_summary errors=\"1\" problems=\"1\" tasks=\"0\" warnings=\"0\"/>\n" + 
1187
			"	</stats>\n" + 
1187
			"	</stats>\n" + 
1188
			"</compiler>\n";
1188
			"</compiler>\n";
1189
		String normalizedExpectedLogContents =
1189
		String normalizedExpectedLogContents =
(-)model/org/eclipse/jdt/internal/core/hierarchy/TypeHierarchy.java (-7 / +7 lines)
Lines 1471-1487 Link Here
1471
			toString(buffer, this.focusType, 1, false);
1471
			toString(buffer, this.focusType, 1, false);
1472
		} else {
1472
		} else {
1473
			buffer.append("Sub types of root classes:\n"); //$NON-NLS-1$
1473
			buffer.append("Sub types of root classes:\n"); //$NON-NLS-1$
1474
			IType[] roots= getRootClasses();
1474
			IJavaElement[] roots = Util.sortCopy(getRootClasses());
1475
			for (int i= 0; i < roots.length; i++) {
1475
			for (int i= 0; i < roots.length; i++) {
1476
				toString(buffer, roots[i], 1, false);
1476
				toString(buffer, (IType) roots[i], 1, false);
1477
			}
1477
			}
1478
		}
1478
		}
1479
		if (this.rootClasses.size > 1) {
1479
		if (this.rootClasses.size > 1) {
1480
			buffer.append("Root classes:\n"); //$NON-NLS-1$
1480
			buffer.append("Root classes:\n"); //$NON-NLS-1$
1481
			IType[] roots = this.getRootClasses();
1481
			IJavaElement[] roots = Util.sortCopy(getRootClasses());
1482
			for (int i = 0, length = roots.length; i < length; i++) {
1482
			for (int i = 0, length = roots.length; i < length; i++) {
1483
				IType type = roots[i];
1483
				toString(buffer, (IType) roots[i], 1, false);
1484
				toString(buffer, type, 1, false);
1485
			}
1484
			}
1486
		} else if (this.rootClasses.size == 0) {
1485
		} else if (this.rootClasses.size == 0) {
1487
			// see http://bugs.eclipse.org/bugs/show_bug.cgi?id=24691
1486
			// see http://bugs.eclipse.org/bugs/show_bug.cgi?id=24691
Lines 1499-1509 Link Here
1499
 */
1498
 */
1500
private void toString(StringBuffer buffer, IType type, int indent, boolean ascendant) {
1499
private void toString(StringBuffer buffer, IType type, int indent, boolean ascendant) {
1501
	IType[] types= ascendant ? getSupertypes(type) : getSubtypes(type);
1500
	IType[] types= ascendant ? getSupertypes(type) : getSubtypes(type);
1502
	for (int i= 0; i < types.length; i++) {
1501
	IJavaElement[] sortedTypes = Util.sortCopy(types);
1502
	for (int i= 0; i < sortedTypes.length; i++) {
1503
		for (int j= 0; j < indent; j++) {
1503
		for (int j= 0; j < indent; j++) {
1504
			buffer.append("  "); //$NON-NLS-1$
1504
			buffer.append("  "); //$NON-NLS-1$
1505
		}
1505
		}
1506
		JavaElement element = (JavaElement)types[i];
1506
		JavaElement element = (JavaElement)sortedTypes[i];
1507
		buffer.append(element.toStringWithAncestors(false/*don't show key*/));
1507
		buffer.append(element.toStringWithAncestors(false/*don't show key*/));
1508
		buffer.append('\n');
1508
		buffer.append('\n');
1509
		toString(buffer, types[i], indent + 1, ascendant);
1509
		toString(buffer, types[i], indent + 1, ascendant);
(-)batch/org/eclipse/jdt/internal/compiler/batch/Main.java (-6 / +7 lines)
Lines 28-36 Link Here
28
import java.text.MessageFormat;
28
import java.text.MessageFormat;
29
import java.util.ArrayList;
29
import java.util.ArrayList;
30
import java.util.Arrays;
30
import java.util.Arrays;
31
import java.util.Collections;
32
import java.util.Date;
31
import java.util.Date;
33
import java.util.Enumeration;
34
import java.util.HashMap;
32
import java.util.HashMap;
35
import java.util.Iterator;
33
import java.util.Iterator;
36
import java.util.Locale;
34
import java.util.Locale;
Lines 958-969 Link Here
958
			buffer.append("<"); //$NON-NLS-1$
956
			buffer.append("<"); //$NON-NLS-1$
959
			buffer.append(name);
957
			buffer.append(name);
960
			if (params != null) {
958
			if (params != null) {
961
				for (Enumeration enumeration = Collections.enumeration(params.keySet()); enumeration.hasMoreElements();) {
959
				int length = parameters.size();
960
				String[] keys = new String[length];
961
				parameters.keySet().toArray(keys);
962
				Arrays.sort(keys);
963
				for (int i = 0; i < length; i++) {
962
					buffer.append(" "); //$NON-NLS-1$
964
					buffer.append(" "); //$NON-NLS-1$
963
					String key= (String) enumeration.nextElement();
965
					buffer.append(keys[i]);
964
					buffer.append(key);
965
					buffer.append("=\""); //$NON-NLS-1$
966
					buffer.append("=\""); //$NON-NLS-1$
966
					buffer.append(getEscaped(String.valueOf(params.get(key))));
967
					buffer.append(getEscaped(String.valueOf(params.get(keys[i]))));
967
					buffer.append("\""); //$NON-NLS-1$
968
					buffer.append("\""); //$NON-NLS-1$
968
				}
969
				}
969
			}
970
			}
(-)model/org/eclipse/jdt/internal/core/XMLWriter.java (-6 / +7 lines)
Lines 11-18 Link Here
11
package org.eclipse.jdt.internal.core;
11
package org.eclipse.jdt.internal.core;
12
import java.io.PrintWriter;
12
import java.io.PrintWriter;
13
import java.io.Writer;
13
import java.io.Writer;
14
import java.util.Collections;
15
import java.util.Enumeration;
16
import java.util.HashMap;
14
import java.util.HashMap;
17
15
18
import org.eclipse.jdt.core.IJavaProject;
16
import org.eclipse.jdt.core.IJavaProject;
Lines 80-91 Link Here
80
		sb.append("<"); //$NON-NLS-1$
78
		sb.append("<"); //$NON-NLS-1$
81
		sb.append(name);
79
		sb.append(name);
82
		if (parameters != null) {
80
		if (parameters != null) {
83
			for (Enumeration en = Collections.enumeration(parameters.keySet()); en.hasMoreElements();) {
81
			int length = parameters.size();
82
			String[] keys = new String[length];
83
			parameters.keySet().toArray(keys);
84
			Util.sort(keys);
85
			for (int i = 0; i < length; i++) {
84
				sb.append(" "); //$NON-NLS-1$
86
				sb.append(" "); //$NON-NLS-1$
85
				String key= (String) en.nextElement();
87
				sb.append(keys[i]);
86
				sb.append(key);
87
				sb.append("=\""); //$NON-NLS-1$
88
				sb.append("=\""); //$NON-NLS-1$
88
				sb.append(getEscaped(String.valueOf(parameters.get(key))));
89
				sb.append(getEscaped(String.valueOf(parameters.get(keys[i]))));
89
				sb.append("\""); //$NON-NLS-1$
90
				sb.append("\""); //$NON-NLS-1$
90
			}
91
			}
91
		}
92
		}
(-)model/org/eclipse/jdt/internal/core/util/Util.java (+18 lines)
Lines 45-50 Link Here
45
import org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
45
import org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException;
46
import org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
46
import org.eclipse.jdt.internal.compiler.parser.ScannerHelper;
47
import org.eclipse.jdt.internal.compiler.util.SuffixConstants;
47
import org.eclipse.jdt.internal.compiler.util.SuffixConstants;
48
import org.eclipse.jdt.internal.core.JavaElement;
48
import org.eclipse.jdt.internal.core.JavaModelManager;
49
import org.eclipse.jdt.internal.core.JavaModelManager;
49
import org.eclipse.jdt.internal.core.PackageFragmentRoot;
50
import org.eclipse.jdt.internal.core.PackageFragmentRoot;
50
import org.eclipse.jface.text.BadLocationException;
51
import org.eclipse.jface.text.BadLocationException;
Lines 1950-1955 Link Here
1950
	}
1951
	}
1951
1952
1952
	/**
1953
	/**
1954
	 * Sorts an array of Java elements based on their toStringWithAncestors(), 
1955
	 * returning a new array with the sorted items. 
1956
	 * The original array is left untouched.
1957
	 */
1958
	public static IJavaElement[] sortCopy(IJavaElement[] elements) {
1959
		int len = elements.length;
1960
		IJavaElement[] copy = new IJavaElement[len];
1961
		System.arraycopy(elements, 0, copy, 0, len);
1962
		sort(copy, new Comparer() {
1963
			public int compare(Object a, Object b) {
1964
				return ((JavaElement) a).toStringWithAncestors().compareTo(((JavaElement) b).toStringWithAncestors());
1965
			}
1966
		});
1967
		return copy;
1968
	}
1969
	
1970
	/**
1953
	 * Sorts an array of Strings, returning a new array
1971
	 * Sorts an array of Strings, returning a new array
1954
	 * with the sorted items.  The original array is left untouched.
1972
	 * with the sorted items.  The original array is left untouched.
1955
	 */
1973
	 */

Return to bug 146215