View | Details | Raw Unified | Return to bug 331821 | Differences between
and this patch

Collapse All | Expand All

(-)model/org/eclipse/jdt/internal/core/JavaProject.java (-4 / +3 lines)
Lines 1555-1566 Link Here
1555
				token = null;
1555
				token = null;
1556
				while (memento.hasMoreTokens()) {
1556
				while (memento.hasMoreTokens()) {
1557
					token = memento.nextToken();
1557
					token = memento.nextToken();
1558
					char firstChar = token.charAt(0);
1558
					// https://bugs.eclipse.org/bugs/show_bug.cgi?id=331821
1559
					if (firstChar != JEM_PACKAGEFRAGMENT && firstChar != JEM_COUNT) {
1559
					if (token == MementoTokenizer.PACKAGEFRAGMENT || token == MementoTokenizer.COUNT) {
1560
						rootPath += token;
1561
					} else {
1562
						break;
1560
						break;
1563
					}
1561
					}
1562
					rootPath += token;
1564
				}
1563
				}
1565
				JavaElement root = (JavaElement)getPackageFragmentRoot(new Path(rootPath));
1564
				JavaElement root = (JavaElement)getPackageFragmentRoot(new Path(rootPath));
1566
				if (token != null && token.charAt(0) == JEM_PACKAGEFRAGMENT) {
1565
				if (token != null && token.charAt(0) == JEM_PACKAGEFRAGMENT) {
(-)model/org/eclipse/jdt/internal/core/util/MementoTokenizer.java (-15 / +15 lines)
Lines 13-33 Link Here
13
import org.eclipse.jdt.internal.core.JavaElement;
13
import org.eclipse.jdt.internal.core.JavaElement;
14
14
15
public class MementoTokenizer {
15
public class MementoTokenizer {
16
	private static final String COUNT = Character.toString(JavaElement.JEM_COUNT);
16
	public static final String COUNT = Character.toString(JavaElement.JEM_COUNT);
17
	private static final String JAVAPROJECT = Character.toString(JavaElement.JEM_JAVAPROJECT);
17
	public static final String JAVAPROJECT = Character.toString(JavaElement.JEM_JAVAPROJECT);
18
	private static final String PACKAGEFRAGMENTROOT = Character.toString(JavaElement.JEM_PACKAGEFRAGMENTROOT);
18
	public static final String PACKAGEFRAGMENTROOT = Character.toString(JavaElement.JEM_PACKAGEFRAGMENTROOT);
19
	private static final String PACKAGEFRAGMENT = Character.toString(JavaElement.JEM_PACKAGEFRAGMENT);
19
	public static final String PACKAGEFRAGMENT = Character.toString(JavaElement.JEM_PACKAGEFRAGMENT);
20
	private static final String FIELD = Character.toString(JavaElement.JEM_FIELD);
20
	public static final String FIELD = Character.toString(JavaElement.JEM_FIELD);
21
	private static final String METHOD = Character.toString(JavaElement.JEM_METHOD);
21
	public static final String METHOD = Character.toString(JavaElement.JEM_METHOD);
22
	private static final String INITIALIZER = Character.toString(JavaElement.JEM_INITIALIZER);
22
	public static final String INITIALIZER = Character.toString(JavaElement.JEM_INITIALIZER);
23
	private static final String COMPILATIONUNIT = Character.toString(JavaElement.JEM_COMPILATIONUNIT);
23
	public static final String COMPILATIONUNIT = Character.toString(JavaElement.JEM_COMPILATIONUNIT);
24
	private static final String CLASSFILE = Character.toString(JavaElement.JEM_CLASSFILE);
24
	public static final String CLASSFILE = Character.toString(JavaElement.JEM_CLASSFILE);
25
	private static final String TYPE = Character.toString(JavaElement.JEM_TYPE);
25
	public static final String TYPE = Character.toString(JavaElement.JEM_TYPE);
26
	private static final String PACKAGEDECLARATION = Character.toString(JavaElement.JEM_PACKAGEDECLARATION);
26
	public static final String PACKAGEDECLARATION = Character.toString(JavaElement.JEM_PACKAGEDECLARATION);
27
	private static final String IMPORTDECLARATION = Character.toString(JavaElement.JEM_IMPORTDECLARATION);
27
	public static final String IMPORTDECLARATION = Character.toString(JavaElement.JEM_IMPORTDECLARATION);
28
	private static final String LOCALVARIABLE = Character.toString(JavaElement.JEM_LOCALVARIABLE);
28
	public static final String LOCALVARIABLE = Character.toString(JavaElement.JEM_LOCALVARIABLE);
29
	private static final String TYPE_PARAMETER = Character.toString(JavaElement.JEM_TYPE_PARAMETER);
29
	public static final String TYPE_PARAMETER = Character.toString(JavaElement.JEM_TYPE_PARAMETER);
30
	private static final String ANNOTATION = Character.toString(JavaElement.JEM_ANNOTATION);
30
	public static final String ANNOTATION = Character.toString(JavaElement.JEM_ANNOTATION);
31
31
32
	private final char[] memento;
32
	private final char[] memento;
33
	private final int length;
33
	private final int length;
(-)src/org/eclipse/jdt/core/tests/model/MementoTests.java (-1 / +12 lines)
Lines 92-98 Link Here
92
		"1.4");
92
		"1.4");
93
	this.createJavaProject(
93
	this.createJavaProject(
94
			"P",
94
			"P",
95
			new String[] {"src"},
95
			new String[] {"src", "!"},
96
			new String[] {
96
			new String[] {
97
				getExternalJCLPathString(),
97
				getExternalJCLPathString(),
98
				"/P/lib",
98
				"/P/lib",
Lines 794-797 Link Here
794
		"=P/src<p{X.java[X~foo]T",
794
		"=P/src<p{X.java[X~foo]T",
795
		typeParameter);
795
		typeParameter);
796
}
796
}
797
/*
798
 * Test that a package fragment root name starting with '!' can be reconstructed from
799
 * the handle identifier.
800
 * https://bugs.eclipse.org/bugs/show_bug.cgi?id=331821
801
 */
802
public void testBug331821() throws JavaModelException {
803
	IPackageFragmentRoot root = getPackageFragmentRoot("P", "!");
804
	String handleIdentifier = root.getHandleIdentifier();
805
	IPackageFragmentRoot newRoot = (IPackageFragmentRoot) JavaCore.create(handleIdentifier);
806
	assertEquals(root, newRoot);
807
}
797
}
808
}

Return to bug 331821