Fix tests for Java11

Clean up JPACreateFactory and Fix failing tests in
org.eclipse.jpt.jpadiagrameditor.ui.tests.internal*

Changes from Erik Brangs
Co-authored-by: Erik Brangs <erik.brangs@gmx.de>

Signed-off-by: Stephane Bouchet <sbouchet@redhat.com>

Change-Id: I2c470aa085c459a8be8d32ad05208233f072e9fd
diff --git a/common/plugins/org.eclipse.jpt.common.core/META-INF/MANIFEST.MF b/common/plugins/org.eclipse.jpt.common.core/META-INF/MANIFEST.MF
index 354bcbe..96a344b 100644
--- a/common/plugins/org.eclipse.jpt.common.core/META-INF/MANIFEST.MF
+++ b/common/plugins/org.eclipse.jpt.common.core/META-INF/MANIFEST.MF
@@ -32,7 +32,7 @@
  org.eclipse.wst.sse.core;bundle-version="[1.1.700,2.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.700,2.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Dali-Comment: We friend 'internal.utility' to all non-EclipseLink, non-test bundles
 Export-Package: org.eclipse.jpt.common.core,
  org.eclipse.jpt.common.core.gen,
diff --git a/common/plugins/org.eclipse.jpt.common.ui/META-INF/MANIFEST.MF b/common/plugins/org.eclipse.jpt.common.ui/META-INF/MANIFEST.MF
index 47302e7..5e1f0bc 100644
--- a/common/plugins/org.eclipse.jpt.common.ui/META-INF/MANIFEST.MF
+++ b/common/plugins/org.eclipse.jpt.common.ui/META-INF/MANIFEST.MF
@@ -26,7 +26,7 @@
  org.eclipse.wst.common.frameworks;bundle-version="[1.2.200,2.0.0)",
  org.eclipse.wst.common.project.facet.ui;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.0,2.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Dali-Comment: *NO* EclipseLink friends!
 Export-Package: org.eclipse.jpt.common.ui,
  org.eclipse.jpt.common.ui.gen,
diff --git a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/TypeDeclarationTools.java b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/TypeDeclarationTools.java
index 89ec1a1..f981b88 100644
--- a/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/TypeDeclarationTools.java
+++ b/common/plugins/org.eclipse.jpt.common.utility/src/org/eclipse/jpt/common/utility/internal/TypeDeclarationTools.java
@@ -591,7 +591,7 @@
 		return isJavaLangClass8(String.copyValueOf(simpleClassName));
 	}
 
-	// jdk 1.7
+	// jdk 1.8
 	@SuppressWarnings("nls")
 	private static final String[] JAVA_LANG_CLASS_NAMES_ARRAY_8 = ArrayTools.sort(
 		ArrayTools.concatenate(
@@ -607,11 +607,55 @@
 	 */
 	public static final Iterable<String> JAVA_LANG_CLASS_NAMES_8 = IterableTools.iterable(JAVA_LANG_CLASS_NAMES_ARRAY_8);
 
-	// the current release is jdk 1.8
-	private static final String[] JAVA_LANG_CLASS_NAMES_ARRAY = JAVA_LANG_CLASS_NAMES_ARRAY_8;
+	/**
+	 * JDK 11
+	 * @see #isJavaLangClass(String)
+	 */
+	public static boolean isJavaLangClass11(String simpleClassName) {
+		return ArrayTools.binarySearch(JAVA_LANG_CLASS_NAMES_ARRAY_11, simpleClassName);
+	}
 
 	/**
-	 * The current release is jdk 1.8.
+	 * @see #isJavaLangClass11(String)
+	 */
+	public static boolean isJavaLangClass11(char[] simpleClassName) {
+		return isJavaLangClass11(String.copyValueOf(simpleClassName));
+	}
+	
+	// jdk 11
+	@SuppressWarnings("nls")
+	private static final String[] JAVA_LANG_CLASS_NAMES_ARRAY_11 = ArrayTools.sort(
+			ArrayTools.concatenate(
+				JAVA_LANG_CLASS_NAMES_ARRAY_8,
+				new String[] {
+					"ProcessHandle",
+					"ProcessHandle.Info",
+					"StackWalker.StackFrame",
+					"System.Logger",
+					"Module",
+					"ModuleLayer",
+					"ModuleLayer.Controller",
+					"Runtime.Version",
+					"StackWalker",
+					"System.LoggerFinder",
+					"StackWalker.Option",
+					"System.Logger.Level",
+					"IllegalCallerException",
+					"LayerInstantiationException"
+				}
+			)
+		);
+	
+	/**
+	 * JDK 11.
+	 */
+	public static final Iterable<String> JAVA_LANG_CLASS_NAMES_11 = IterableTools.iterable(JAVA_LANG_CLASS_NAMES_ARRAY_11);
+	
+	// the current release is jdk 11
+	private static final String[] JAVA_LANG_CLASS_NAMES_ARRAY = JAVA_LANG_CLASS_NAMES_ARRAY_11;
+
+	/**
+	 * The current release is jdk 11.
 	 */
 	public static final Iterable<String> JAVA_LANG_CLASS_NAMES = IterableTools.iterable(JAVA_LANG_CLASS_NAMES_ARRAY);
 
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ClasspathTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ClasspathTests.java
index fbfd429..ccacec8 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ClasspathTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/ClasspathTests.java
@@ -41,32 +41,47 @@
 		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar"))
+				.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(this.morph(
+				"C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\i18n.jar;C:\\jdk\\i18n.jar;C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(this.morph(
+				"C:\\jdk\\i18n.jar;C:\\jdk\\i18n.jar;C:\\jdk\\i18n.jar;C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;;;;C:\\jdk\\jaws.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;;;")).compressed().getPath();
+		path = new Classpath(this.morph(
+				"C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;;;;C:\\jdk\\jaws.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;;;"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
 		// no changes
 		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\..\\jdk\\i18n.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\..\\jdk\\i18n.jar;C:\\jdk\\jaws.jar"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
-		path = new Classpath(this.morph("C:\\jdk1\\jdk2\\jdk3\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk1\\jdk2\\jdk3\\..\\..\\..\\jdk1\\jdk2\\jdk3\\i18n.jar;C:\\jdk\\jaws.jar")).compressed().getPath();
+		path = new Classpath(this.morph(
+				"C:\\jdk1\\jdk2\\jdk3\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk1\\jdk2\\jdk3\\..\\..\\..\\jdk1\\jdk2\\jdk3\\i18n.jar;C:\\jdk\\jaws.jar"))
+						.compressed().getPath();
 		assertEquals(this.morph("C:\\jdk1\\jdk2\\jdk3\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar"), path);
 
 	}
@@ -138,7 +153,9 @@
 	}
 
 	public void testConvertToURLs() {
-		Iterator<URL> entries = new Classpath(this.morph("C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getURLs().iterator();
+		Iterator<URL> entries = new Classpath(
+				this.morph("C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getURLs().iterator();
 		assertEquals(this.morphURL("/C:/jdk/rt.jar"), entries.next().getPath());
 		assertEquals(this.morphURL("/C:/jdk/i18n.jar"), entries.next().getPath());
 		assertEquals(this.morphURL("/C:/jdk/jaws.jar"), entries.next().getPath());
@@ -148,7 +165,8 @@
 	}
 
 	public void testGetEntries() {
-		Classpath cp = new Classpath(this.morph("C:\\jdk\\rt.jar;;.;C:\\jdk\\i18n.jar;;;C:\\jdk\\jaws.jar;;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\bar\\bar.jar;"));
+		Classpath cp = new Classpath(this.morph(
+				"C:\\jdk\\rt.jar;;.;C:\\jdk\\i18n.jar;;;C:\\jdk\\jaws.jar;;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\bar\\bar.jar;"));
 		Iterator<Classpath.Entry> entries = cp.getEntries().iterator();
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entries.next().getFileName());
 		assertEquals(this.morph("."), entries.next().getFileName());
@@ -174,27 +192,39 @@
 		Classpath.Entry entry = null;
 
 		// in the middle - qualified
-		entry = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\rt.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entry.getFileName());
 
 		// in the middle - unqualified
-		entry = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;rt.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;rt.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals("rt.jar", entry.getFileName());
 
 		// at the beginning - qualified
-		entry = new Classpath(this.morph("C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(
+				this.morph("C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entry.getFileName());
 
 		// at the beginning - unqualified
-		entry = new Classpath(this.morph("rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(
+				this.morph("rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals("rt.jar", entry.getFileName());
 
 		// at the end - qualified
-		entry = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\jdk\\rt.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\jdk\\rt.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entry.getFileName());
 
 		// at the end - unqualified
-		entry = new Classpath(this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;rt.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(
+				this.morph("C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;rt.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals("rt.jar", entry.getFileName());
 
 		// alone - qualified
@@ -206,26 +236,36 @@
 		assertEquals("rt.jar", entry.getFileName());
 
 		// trick entry at the beginning
-		entry = new Classpath(this.morph("rt.jar.new;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(this.morph(
+				"rt.jar.new;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entry.getFileName());
 
 		// trick entry in the middle
-		entry = new Classpath(this.morph("rt.jar.new;C:\\jdk\\rtrtrt.jar;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(this.morph(
+				"rt.jar.new;C:\\jdk\\rtrtrt.jar;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entry.getFileName());
 
 		// trick entry at the end
-		entry = new Classpath(this.morph("rt.jar.new;C:\\jdk\\rtrtrt.jar;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\jdk\\rtrtrt.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(this.morph(
+				"rt.jar.new;C:\\jdk\\rtrtrt.jar;C:\\jdk\\rt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\jdk\\rtrtrt.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals(this.morph("C:\\jdk\\rt.jar"), entry.getFileName());
 
 		// missing
-		entry = new Classpath(this.morph("rt.jar.new;C:\\jdk\\rtrtrt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\jdk\\rtrtrt.jar")).getEntryForFileNamed("rt.jar");
+		entry = new Classpath(this.morph(
+				"rt.jar.new;C:\\jdk\\rtrtrt.jar;C:\\jdk\\i18n.jar;C:\\jdk\\jaws.jar;C:\\foo\\classes;C:\\bar\\bar.jar;C:\\jdk\\rtrtrt.jar"))
+						.getEntryForFileNamed("rt.jar");
 		assertEquals("path entry should not be found", null, entry);
 
 	}
 
 	public void testGetEntryForClassNamed() {
-		assertNotNull(Classpath.completeClasspath().getEntryForClassNamed(java.lang.String.class.getName()));
-		assertNull(Classpath.completeClasspath().getEntryForClassNamed("foo.bar.Baz"));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			assertNotNull(Classpath.completeClasspath().getEntryForClassNamed(java.lang.String.class.getName()));
+			assertNull(Classpath.completeClasspath().getEntryForClassNamed("foo.bar.Baz"));
+		}
 	}
 
 	public void testLocationForClass() {
@@ -240,61 +280,80 @@
 	}
 
 	public void testRtJarName() throws IOException {
-		File rtFile = new File(Classpath.rtJarName());
-		assertTrue("rt.jar does not exist", rtFile.exists());
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			File rtFile = new File(Classpath.rtJarName());
+			assertTrue("rt.jar does not exist", rtFile.exists());
 
-		JarFile rtJarFile = new JarFile(rtFile);
-		JarEntry entry = rtJarFile.getJarEntry("java/lang/Object.class");
-		rtJarFile.close();
-		assertTrue("bogus rt.jar", entry != null);
+			JarFile rtJarFile = new JarFile(rtFile);
+			JarEntry entry = rtJarFile.getJarEntry("java/lang/Object.class");
+			rtJarFile.close();
+			assertTrue("bogus rt.jar", entry != null);
+		}
 	}
 
 	public void testJREClassNames() {
-		assertTrue("Vector is missing from JRE class names", IterableTools.contains(Classpath.bootClasspath().getClassNames(), java.util.Vector.class.getName()));
-		assertTrue("File is missing from JRE class names", IterableTools.contains(Classpath.bootClasspath().getClassNames(), java.io.File.class.getName()));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			assertTrue("Vector is missing from JRE class names", IterableTools
+					.contains(Classpath.bootClasspath().getClassNames(), java.util.Vector.class.getName()));
+			assertTrue("File is missing from JRE class names",
+					IterableTools.contains(Classpath.bootClasspath().getClassNames(), java.io.File.class.getName()));
+		}
 	}
 
 	public void testJavaExtensionDirectoryNames() {
-		char sep = File.separatorChar;
-		String stdExtDirName = JAVA_HOME + sep + "lib" + sep + "ext";
-		assertTrue("standard extension dir name missing: " + stdExtDirName, ArrayTools.contains(Classpath.javaExtensionDirectoryNames(), stdExtDirName));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			char sep = File.separatorChar;
+			String stdExtDirName = JAVA_HOME + sep + "lib" + sep + "ext";
+			assertTrue("standard extension dir name missing: " + stdExtDirName,
+					ArrayTools.contains(Classpath.javaExtensionDirectoryNames(), stdExtDirName));
+		}
 	}
 
 	public void testJavaExtensionDirectories() {
-		char sep = File.separatorChar;
-		File stdExtDir = new File(JAVA_HOME + sep + "lib" + sep + "ext");
-		assertTrue("standard extension dir missing: " + stdExtDir.getParent(), ArrayTools.contains(Classpath.javaExtensionDirectories(), stdExtDir));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			char sep = File.separatorChar;
+			File stdExtDir = new File(JAVA_HOME + sep + "lib" + sep + "ext");
+			assertTrue("standard extension dir missing: " + stdExtDir.getParent(),
+					ArrayTools.contains(Classpath.javaExtensionDirectories(), stdExtDir));
+		}
 	}
 
 	public void testJavaExtensionClasspathEntries() {
-		if (SystemTools.javaSpecificationVersionIsLessThan("1.4") || SystemTools.javaSpecificationVersionIsGreaterThan("1.8")) {
+		if (SystemTools.javaSpecificationVersionIsLessThan("1.4")
+				|| SystemTools.javaSpecificationVersionIsGreaterThan("11")) {
 			fail("we need to update this test for the current JDK: " + SystemTools.javaSpecificationVersion());
 		}
 
-		Collection<String> jarNames = new ArrayList<String>();
-		Iterable<Classpath.Entry> entries = Classpath.javaExtensionClasspath().getEntries();
-		for (Classpath.Entry entry : entries) {
-			jarNames.add(entry.getFileName());
-		}
-		char sep = File.separatorChar;
-		String stdExtJarName = JAVA_HOME + sep + "lib" + sep + "ext" + sep + "dnsns.jar";
-		String msg = "JDK standard extension jar missing: " + stdExtJarName;
-		boolean jarPresent = jarNames.contains(stdExtJarName);
-		if (SystemTools.jvmIsSun() || (SystemTools.jvmIsIBM() && SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))) {
-			assertTrue(msg, jarPresent);
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Collection<String> jarNames = new ArrayList<String>();
+			Iterable<Classpath.Entry> entries = Classpath.javaExtensionClasspath().getEntries();
+			for (Classpath.Entry entry : entries) {
+				jarNames.add(entry.getFileName());
+			}
+			char sep = File.separatorChar;
+			String stdExtJarName = JAVA_HOME + sep + "lib" + sep + "ext" + sep + "dnsns.jar";
+			String msg = "JDK standard extension jar missing: " + stdExtJarName;
+			boolean jarPresent = jarNames.contains(stdExtJarName);
+			if (SystemTools.jvmIsSun()
+					|| (SystemTools.jvmIsIBM() && SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))) {
+				assertTrue(msg, jarPresent);
+			}
 		}
 	}
 
 	public void testJavaExtensionClassNames() {
-		if (SystemTools.javaSpecificationVersionIsLessThan("1.4") || SystemTools.javaSpecificationVersionIsGreaterThan("1.8")) {
+		if (SystemTools.javaSpecificationVersionIsLessThan("1.4")
+				|| SystemTools.javaSpecificationVersionIsGreaterThan("11")) {
 			fail("we need to update this test for the current JDK: " + SystemTools.javaSpecificationVersion());
 		}
-
-		String className = "sun.net.spi.nameservice.dns.DNSNameService";
-		String msg = "JDK standard extension class missing: " + className;
-		boolean classPresent = IteratorTools.contains(Classpath.javaExtensionClasspath().classNames(), className);
-		if (SystemTools.jvmIsSun() || (SystemTools.jvmIsIBM() && SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))) {
-			assertTrue(msg, classPresent);
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			String className = "sun.net.spi.nameservice.dns.DNSNameService";
+			String msg = "JDK standard extension class missing: " + className;
+			boolean classPresent = IteratorTools.contains(Classpath.javaExtensionClasspath().classNames(), className);
+			if (SystemTools.jvmIsSun()
+					|| (SystemTools.jvmIsIBM() && SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))) {
+				assertTrue(msg, classPresent);
+			}
 		}
 	}
 
@@ -305,7 +364,8 @@
 		// when the tests are executed as an ANT task, they are run under
 		// an ANT class loader and the "Java" classpath does not include this class
 		if (cl.getClass().getName().startsWith("sun.misc")) {
-			assertTrue("class missing: " + className, IterableTools.contains(Classpath.javaClasspath().getClassNames(), className));
+			assertTrue("class missing: " + className,
+					IterableTools.contains(Classpath.javaClasspath().getClassNames(), className));
 		}
 	}
 
@@ -316,62 +376,83 @@
 		// when the tests are executed as an ANT task, they are run under
 		// an ANT class loader and the "Java" classpath does not include this class
 		if (cl.getClass().getName().startsWith("sun.misc")) {
-			assertTrue("class missing: " + className, IterableTools.contains(Classpath.completeClasspath().getClassNames(), className));
+			assertTrue("class missing: " + className,
+					IterableTools.contains(Classpath.completeClasspath().getClassNames(), className));
 		}
 	}
 
 	public void testClasspathForClass() {
-		assertNotNull(Classpath.classpathFor(java.lang.String.class));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			assertNotNull(Classpath.classpathFor(java.lang.String.class));
+		}
 	}
 
 	public void testAddClassNamesTo() {
-		Collection<String> classNames = new ArrayList<String>(1000);
-		Classpath.bootClasspath().addClassNamesTo(classNames);
-		assertTrue(classNames.contains(java.util.Vector.class.getName()));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Collection<String> classNames = new ArrayList<String>(1000);
+			Classpath.bootClasspath().addClassNamesTo(classNames);
+			assertTrue(classNames.contains(java.util.Vector.class.getName()));
+		}
 	}
 
 	public void testToString() {
-		assertNotNull(Classpath.bootClasspath().toString());
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			assertNotNull(Classpath.bootClasspath().toString());
+		}
 	}
 
 	public void testEntry_getCanonicalFile() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		assertTrue(entry.getCanonicalFile().getPath().endsWith(".jar"));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			assertTrue(entry.getCanonicalFile().getPath().endsWith(".jar"));
+		}
 	}
 
 	public void testEntry_getCanonicalFileName() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		String name = entry.getCanonicalFileName();
-		if (SystemTools.jvmIsSun()) {
-			assertTrue(name.endsWith("rt.jar"));
-		} else if (SystemTools.jvmIsIBM()) {
-			assertTrue(name.endsWith("vm.jar"));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			String name = entry.getCanonicalFileName();
+			if (SystemTools.jvmIsSun()) {
+				assertTrue(name.endsWith("rt.jar"));
+			} else if (SystemTools.jvmIsIBM()) {
+				assertTrue(name.endsWith("vm.jar"));
+			}
 		}
 	}
 
 	public void testEntry_equals() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		assertFalse(entry.equals("foo"));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			assertFalse(entry.equals("foo"));
+		}
 	}
 
 	public void testEntry_containsClass() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		assertTrue(entry.contains(java.lang.String.class));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			assertTrue(entry.contains(java.lang.String.class));
+		}
 	}
 
 	public void testEntry_containsString() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		assertTrue(entry.contains(java.lang.String.class.getName()));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			assertTrue(entry.contains(java.lang.String.class.getName()));
+		}
 	}
 
 	public void testEntry_getClassNames() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		assertTrue(IterableTools.contains(entry.getClassNames(), java.lang.String.class.getName()));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			assertTrue(IterableTools.contains(entry.getClassNames(), java.lang.String.class.getName()));
+		}
 	}
 
 	public void testEntry_classNames() {
-		Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
-		assertTrue(IteratorTools.contains(entry.classNames(), java.lang.String.class.getName()));
+		if (SystemTools.javaSpecificationVersionIsLessThan("11")) {
+			Classpath.Entry entry = Classpath.bootClasspath().getEntryForClassNamed(java.lang.String.class.getName());
+			assertTrue(IteratorTools.contains(entry.classNames(), java.lang.String.class.getName()));
+		}
 	}
 
 	/**
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/SystemToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/SystemToolsTests.java
index a0b17b7..6d09159 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/SystemToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/SystemToolsTests.java
@@ -33,6 +33,8 @@
 			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThan("1.6"));
 		} else if (version.equals("1.8")) {
 			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThan("1.7"));
+		} else if (version.equals("11")) {
+			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThan("10"));
 		} else {
 			fail("untested Java specification version: " + version);
 		}
@@ -50,6 +52,8 @@
 			assertTrue(SystemTools.javaSpecificationVersionIsLessThan("2.0"));
 		} else if (version.equals("1.8")) {
 			assertTrue(SystemTools.javaSpecificationVersionIsLessThan("2.0"));
+		} else if (version.equals("11")) {
+			assertTrue(SystemTools.javaSpecificationVersionIsLessThan("12"));
 		} else {
 			fail("untested Java specification version: " + version);
 		}
@@ -71,6 +75,9 @@
 		} else if (version.equals("1.8")) {
 			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThanOrEqualTo("1.7"));
 			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThanOrEqualTo("1.8"));
+		} else if (version.equals("11")) {
+			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThanOrEqualTo("10"));
+			assertTrue(SystemTools.javaSpecificationVersionIsGreaterThanOrEqualTo("11"));
 		} else {
 			fail("untested Java specification version: " + version);
 		}
@@ -93,6 +100,9 @@
 		} else if (version.equals("1.8")) {
 			assertTrue(SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("1.8"));
 			assertTrue(SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("2.0"));
+		} else if (version.equals("11")) {
+			assertTrue(SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("11"));
+			assertTrue(SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("12"));
 		} else {
 			fail("untested Java specification version: " + version);
 		}
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TypeDeclarationToolsTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TypeDeclarationToolsTests.java
index 0fe3f7f..16018ae 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TypeDeclarationToolsTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/TypeDeclarationToolsTests.java
@@ -353,9 +353,29 @@
 		assertFalse(TypeDeclarationTools.isJavaLangClass8("".toCharArray()));
 		assertFalse(TypeDeclarationTools.isJavaLangClass8("Collection".toCharArray()));
 	}
+	
+	public void testIsJavaLangClass11String() {
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("Object"));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("String"));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("AutoCloseable"));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("FunctionalInterface"));
+		assertFalse(TypeDeclarationTools.isJavaLangClass11(""));
+		assertFalse(TypeDeclarationTools.isJavaLangClass11("Collection"));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("Module"));
+	}
+
+	public void testIsJavaLangClass11CharArray() {
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("Object".toCharArray()));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("String".toCharArray()));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("AutoCloseable".toCharArray()));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("FunctionalInterface".toCharArray()));
+		assertFalse(TypeDeclarationTools.isJavaLangClass11("".toCharArray()));
+		assertFalse(TypeDeclarationTools.isJavaLangClass11("Collection".toCharArray()));
+		assertTrue(TypeDeclarationTools.isJavaLangClass11("Module".toCharArray()));
+	}
 
 	public void testJDKVersion() {
 		assertTrue("update TypeDeclarationTools.JAVA_LANG_CLASS_NAMES for new JDK...",
-				SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("1.8"));
+				SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("11"));
 	}
 }
diff --git a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/XMLToolsWriteTests.java b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/XMLToolsWriteTests.java
index 236791b..7f5d4f0 100644
--- a/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/XMLToolsWriteTests.java
+++ b/common/tests/org.eclipse.jpt.common.utility.tests/src/org/eclipse/jpt/common/utility/tests/internal/XMLToolsWriteTests.java
@@ -56,14 +56,18 @@
 		stream.close();
 		StringBuffer sb = new StringBuffer(2000);
 		sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"");
-		if ((SystemTools.jvmIsOracle() || SystemTools.jvmIsApple()) && SystemTools.javaSpecificationVersionIsGreaterThan("1.5")) {
+		if (((SystemTools.jvmIsOracle() || SystemTools.jvmIsApple())
+				&& SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))
+				|| SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("11")) {
 			sb.append(" standalone=\"no\"");
 		}
 		sb.append("?>");
 		if (SystemTools.osIsMac()) {
 			sb.append(' ');
 		}
-		if (SystemTools.jvmIsOracle() || (SystemTools.jvmIsIBM() && SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("1.5"))) {
+		if (((SystemTools.jvmIsOracle() || SystemTools.jvmIsApple())
+				&& SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))
+				|| SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("11")) {
 			sb.append(CR);
 		}
 		sb.append("<root-element>");
@@ -77,7 +81,9 @@
 		if (SystemTools.osIsMac()) {
 			sb.append(' ');
 		}
-		if (SystemTools.jvmIsOracle() || (SystemTools.jvmIsIBM() && SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("1.5"))) {
+		if (((SystemTools.jvmIsOracle() || SystemTools.jvmIsApple())
+				&& SystemTools.javaSpecificationVersionIsGreaterThan("1.5"))
+				|| SystemTools.javaSpecificationVersionIsLessThanOrEqualTo("11")) {
 			sb.append(CR);
 		}
 		String expected = sb.toString();
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.ui/META-INF/MANIFEST.MF b/jaxb/plugins/org.eclipse.jpt.jaxb.ui/META-INF/MANIFEST.MF
index 8fda47c..ffb01db 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.ui/META-INF/MANIFEST.MF
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.ui/META-INF/MANIFEST.MF
@@ -33,7 +33,7 @@
  org.eclipse.wst.xsd.core;bundle-version="[1.1.600,2.0.0)",
  org.eclipse.xsd;bundle-version="[2.6.0,3.0.0)",
  org.eclipse.ui.navigator.resources;bundle-version="[3.4.0,4.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Export-Package: org.eclipse.jpt.jaxb.ui,
  org.eclipse.jpt.jaxb.ui.internal;x-internal:=true,
  org.eclipse.jpt.jaxb.ui.internal.actions;x-internal:=true,
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.core/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.core/META-INF/MANIFEST.MF
index ba4d158..83c4fab 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.core/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.jpa.core/META-INF/MANIFEST.MF
@@ -35,7 +35,7 @@
  org.eclipse.wst.validation;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.300,2.0.0)",
  org.eclipse.ltk.core.refactoring;bundle-version="[3.5.100,4.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Export-Package: org.eclipse.jpt.jpa.core,
  org.eclipse.jpt.jpa.core.context,
  org.eclipse.jpt.jpa.core.context.java,
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.db/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.db/META-INF/MANIFEST.MF
index 8c6375d..7320bfa 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.db/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.jpa.db/META-INF/MANIFEST.MF
@@ -16,7 +16,7 @@
  org.eclipse.jdt.core;bundle-version="[3.4.0,4.0.0)",
  org.eclipse.jpt.common.core;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.jpt.common.utility;bundle-version="[2.0.0,3.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Export-Package: org.eclipse.jpt.jpa.db,
  org.eclipse.jpt.jpa.db.internal;x-internal:=true,
  org.eclipse.jpt.jpa.db.internal.driver;x-internal:=true
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF
index 22864a2..87ca93d 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.jpa.eclipselink.ui/META-INF/MANIFEST.MF
@@ -37,7 +37,7 @@
  org.eclipse.wst.common.frameworks.ui;bundle-version="[1.1.200,2.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.4.100,2.0.0)",
  org.eclipse.wst.validation;bundle-version="[1.2.0,2.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Export-Package: org.eclipse.jpt.jpa.eclipselink.ui,
  org.eclipse.jpt.jpa.eclipselink.ui.details,
  org.eclipse.jpt.jpa.eclipselink.ui.internal;x-internal:=true,
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.gen/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.gen/META-INF/MANIFEST.MF
index 7a6b4aa..44f8877 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.gen/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.jpa.gen/META-INF/MANIFEST.MF
@@ -24,7 +24,7 @@
  org.eclipse.wst.common.emf;bundle-version="[1.2.0,2.0.0)",
  org.eclipse.emf.ecore.xmi;bundle-version="[2.5.0,3.0.0)",
  org.eclipse.core.filebuffers;bundle-version="[3.4.0,4.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Export-Package: org.eclipse.jpt.jpa.gen,
  org.eclipse.jpt.jpa.gen.internal;x-internal:=true,
  org.eclipse.jpt.jpa.gen.internal.util;x-internal:=true
diff --git a/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF b/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF
index 5f7bf9e..bd693c3 100644
--- a/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF
+++ b/jpa/plugins/org.eclipse.jpt.jpa.ui/META-INF/MANIFEST.MF
@@ -48,7 +48,7 @@
  org.eclipse.wst.web.ui;bundle-version="[1.1.200,2.0.0)",
  org.eclipse.wst.xml.core;bundle-version="[1.1.700,2.0.0)",
  org.eclipse.wst.xml.ui;bundle-version="[1.1.300,2.0.0)"
-Import-Package: com.ibm.icu.text;version="4.0.1"
+Import-Package: com.ibm.icu.text
 Export-Package: org.eclipse.jpt.jpa.ui,
  org.eclipse.jpt.jpa.ui.details,
  org.eclipse.jpt.jpa.ui.details.orm,
diff --git a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/META-INF/MANIFEST.MF b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/META-INF/MANIFEST.MF
index 3322d0b..c6079d4 100644
--- a/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/META-INF/MANIFEST.MF
+++ b/jpa_diagram_editor/plugins/org.eclipse.jpt.jpadiagrameditor.ui/META-INF/MANIFEST.MF
@@ -30,7 +30,8 @@
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.filesystem;bundle-version="1.3.100",
  org.eclipse.jpt.common.ui;bundle-version="1.3.0",
- org.eclipse.jdt.core.manipulation;bundle-version="1.5.0"
+ org.eclipse.jdt.core.manipulation;bundle-version="1.5.0",
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)"
 Export-Package: org.eclipse.jpt.jpadiagrameditor.ui.internal;x-internal:=true,
  org.eclipse.jpt.jpadiagrameditor.ui.internal.dialog;x-internal:=true,
  org.eclipse.jpt.jpadiagrameditor.ui.internal.facade;x-internal:=true,
diff --git a/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.swtbot.tests/META-INF/MANIFEST.MF b/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.swtbot.tests/META-INF/MANIFEST.MF
index eb3bc99..21bab74 100644
--- a/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.swtbot.tests/META-INF/MANIFEST.MF
+++ b/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.swtbot.tests/META-INF/MANIFEST.MF
@@ -35,4 +35,5 @@
  org.eclipse.swtbot.junit4_x;bundle-version="2.1.0",
  org.eclipse.swtbot.forms.finder;bundle-version="2.1.0",
  org.hamcrest.core;bundle-version="1.3.0",
- org.junit;bundle-version="4.11.0"
+ org.junit;bundle-version="4.11.0",
+ org.slf4j.api;bundle-version="1.7.30"
diff --git a/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/META-INF/MANIFEST.MF b/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/META-INF/MANIFEST.MF
index faf7a34..6b79ff8 100644
--- a/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/META-INF/MANIFEST.MF
+++ b/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/META-INF/MANIFEST.MF
@@ -27,7 +27,8 @@
  org.eclipse.wst.common.modulecore;bundle-version="[1.2.1,2.0.0)",
  org.eclipse.wst.common.project.facet.core;bundle-version="[1.3.0,2.0.0)",
  org.eclipse.core.filesystem;bundle-version="[1.3.1,2.0.0)",
- org.junit;bundle-version="[4.0.0,5.0.0)"
+ org.junit;bundle-version="[4.0.0,5.0.0)",
+ org.eclipse.core.resources;bundle-version="[3.4.0,4.0.0)"
 Export-Package: org.eclipse.jpt.jpadiagrameditor.ui.tests.internal;x-internal:=true,
  org.eclipse.jpt.jpadiagrameditor.ui.tests.internal.editor;x-internal:=true,
  org.eclipse.jpt.jpadiagrameditor.ui.tests.internal.feature;x-internal:=true,
diff --git a/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/src/org/eclipse/jpt/jpadiagrameditor/ui/tests/internal/JPACreateFactory.java b/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/src/org/eclipse/jpt/jpadiagrameditor/ui/tests/internal/JPACreateFactory.java
index 3126ca3..84737c1 100644
--- a/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/src/org/eclipse/jpt/jpadiagrameditor/ui/tests/internal/JPACreateFactory.java
+++ b/jpa_diagram_editor/tests/org.eclipse.jpt.jpadiagrameditor.ui.tests/src/org/eclipse/jpt/jpadiagrameditor/ui/tests/internal/JPACreateFactory.java
@@ -64,27 +64,27 @@
 
 @SuppressWarnings({"restriction", "nls"})
 public class JPACreateFactory {
-	
+
 	public static final String JPA_JAR_NAME_SYSTEM_PROPERTY = "org.eclipse.jpt.jpa.jar";
-	public static final String ECLIPSELINK_JAR_NAME_SYSTEM_PROPERTY = "org.eclipse.jpt.eclipselink.jar";	
-	
+	public static final String ECLIPSELINK_JAR_NAME_SYSTEM_PROPERTY = "org.eclipse.jpt.eclipselink.jar";
+
 	private static JPACreateFactory factory = null;
-	private IFacetedProject facetedProject; 
-	private IProject project; 
+	private IFacetedProject facetedProject;
+	private IProject project;
 	private IJavaProject javaProject;
 	//private IPackageFragmentRoot sourceFolder;
 	JpaProject jpaProject;
-	
+
 	public static synchronized JPACreateFactory instance() {
 		if (factory == null)
 			factory = new JPACreateFactory();
 		return factory;
 	}
-	
+
 	private IProject buildPlatformProject(String projectName) throws CoreException {
 		IWorkspaceDescription description = ResourcesPlugin.getWorkspace().getDescription();
 		description.setAutoBuilding(true);
-		ResourcesPlugin.getWorkspace().setDescription(description);		
+		ResourcesPlugin.getWorkspace().setDescription(description);
 		IProject p = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
 		p.create(null);
 		p.open(null);
@@ -92,14 +92,14 @@
 	}
 
 	protected IDataModel buildJpaConfigDataModel() {
-		IDataModel dataModel = DataModelFactory.createDataModel(new JpaFacetInstallDataModelProvider());		
+		IDataModel dataModel = DataModelFactory.createDataModel(new JpaFacetInstallDataModelProvider());
 		dataModel.setProperty(IFacetDataModelProperties.FACET_VERSION_STR, "2.0");
 		dataModel.setProperty(JpaFacetDataModelProperties.PLATFORM, null /*GenericPlatform.VERSION_1_0.getId()*/);
 		dataModel.setProperty(JpaFacetDataModelProperties.LIBRARY_PROVIDER_DELEGATE, null);
 //		dataModel.setProperty(JpaFacetInstallDataModelProperties.CREATE_ORM_XML, Boolean.TRUE);
 		return dataModel;
 	}
-	
+
 	public JpaProject createJPAProject(String projectName) throws CoreException {
 		return createJPAProject(projectName, null, "1.0");
 	}
@@ -107,8 +107,8 @@
 	public JpaProject createJPA20Project(String projectName) throws CoreException {
 		return createJPAProject(projectName, null, "2.0");
 	}
-	
-	
+
+
 	public JpaProject createJPAProject(String projectName, IDataModel jpaConfig, String jpaFacetVersion) throws CoreException {
 		project = buildPlatformProject(projectName);
 		javaProject = createJavaProject(project, true);
@@ -137,23 +137,23 @@
 //		jpaProject.setUpdater(new SynchronousJpaProjectUpdater(jpaProject));
 		return jpaProject;
 	}
-	
+
 	private JpaProject getJpaProject(IProject p) {
-		return (JpaProject) p.getAdapter(JpaProject.class);
+		return p.getAdapter(JpaProject.class);
 	}
 
 	public static String eclipseLinkJarName() {
 		return getSystemProperty(ECLIPSELINK_JAR_NAME_SYSTEM_PROPERTY);
 	}
-	
+
 	public void installFacet(IFacetedProject facetedProject,
-							 String facetName, 
+							 String facetName,
 							 String versionName) throws CoreException {
 		installFacet(facetedProject, facetName, versionName, null);
 	}
 
 	public void uninstallFacet(IFacetedProject facetedProject,
-							   String facetName, 
+							   String facetName,
 							   String versionName) throws CoreException {
 		uninstallFacet(facetedProject, facetName, versionName, null);
 	}
@@ -163,15 +163,15 @@
 	 * defined in JpaFacetInstallDataModelProvider#getDefaultProperty(String)
 	 */
 	public void installFacet(IFacetedProject facetedProject,
-							 String facetName, 
-							 String versionName, 
+							 String facetName,
+							 String versionName,
 							 IDataModel config) throws CoreException {
 		facetedProject.installProjectFacet(this.facetVersion(facetName, versionName), config, null);
 	}
 
 	public void uninstallFacet(IFacetedProject facetedProject,
-							   String facetName, 
-							   String versionName, 
+							   String facetName,
+							   String versionName,
 							   IDataModel config) throws CoreException {
 		facetedProject.uninstallProjectFacet(this.facetVersion(facetName, versionName), config, null);
 	}
@@ -179,7 +179,7 @@
 	private IProjectFacetVersion facetVersion(String facetName, String versionName) {
 		return ProjectFacetsManager.getProjectFacet(facetName).getVersion(versionName);
 	}
-	
+
 	protected static String getSystemProperty(String propertyName) {
 		return System.getProperty(propertyName);
 	}
@@ -191,12 +191,12 @@
 	private void addClasspathEntry(IJavaProject javaProject, IClasspathEntry entry) throws JavaModelException {
 		javaProject.setRawClasspath(ArrayTools.add(javaProject.getRawClasspath(), entry), null);
 	}
-	
+
 	private IFacetedProject createFacetedProject(IProject project) throws CoreException {
 		return ProjectFacetsManager.create(project, true, null);		// true = "convert if necessary"
 	}
-	
-	public IJavaProject createJavaProject(IProject project,  
+
+	public IJavaProject createJavaProject(IProject project,
 										  boolean autoBuild) throws CoreException {
 		facetedProject = createFacetedProject(project);
 		installFacet(facetedProject, "jst.java", "5.0");
@@ -204,11 +204,11 @@
 		//sourceFolder = javaProject.getPackageFragmentRoot(project.getFolder("src"));
 		return javaProject;
 	}
-	
+
 	public static String jpaJarName() {
 		return getSystemProperty(JPA_JAR_NAME_SYSTEM_PROPERTY);
 	}
-	
+
 	public IFile createEntity(JpaProject jpaProject, String fullyQualifiedName) throws Exception {
 		StringTokenizer tokenizer = new StringTokenizer(fullyQualifiedName, ".");
 		ArrayList<String> nameElements = new ArrayList<String>();
@@ -229,83 +229,83 @@
 		JpaContextRoot jpaProjectContent = jpaProject.getContextRoot();
 		PersistenceXml persXML = jpaProjectContent.getPersistenceXml();
 		int cnt = 0;
-		while ((persXML == null) && (cnt < 100)) {		
+		while ((persXML == null) && (cnt < 100)) {
 			Thread.sleep(250);
 			persXML = jpaProjectContent.getPersistenceXml();
 			cnt++;
 		}
 		if (persXML == null)
 			throw new NullPointerException("The persistence XML is not created");
-		
+
 		IFile entity1 = createEntityInProject(jpaProject.getProject(), packageStrings, name);
 		JavaResourceAbstractType jrpt = jpaProject.getJavaResourceType(fullyQualifiedName);
 		cnt = 0;
 		while((jrpt == null) && (cnt < 100)) {
 			try {
 				Thread.sleep(250);
-			} catch (Exception e) {} 
+			} catch (Exception e) {}
 			jrpt = jpaProject.getJavaResourceType(fullyQualifiedName);
 			cnt++;
 		}
 		if (jrpt == null)
-			throw new NullPointerException("The entity '" + fullyQualifiedName + "' could not be created");		
+			throw new NullPointerException("The entity '" + fullyQualifiedName + "' could not be created");
 		return entity1;
 	}
-	
-	public IFile createEntityInProject(IProject project, 
-									   String[] packageFragments, 
-									   String entityName) throws IOException, 
-									   							 CoreException, 
+
+	public IFile createEntityInProject(IProject project,
+									   String[] packageFragments,
+									   String entityName) throws IOException,
+									   							 CoreException,
 									   							 JavaModelException {
 		String folderName = getFolderName(project, packageFragments);
-		String packageName = packageFragments[0];		
+		String packageName = packageFragments[0];
 		for (int i = 1; i < packageFragments.length; i++) {
 			packageName += "." + packageFragments[i];
 		}
-		
+
 		IPath path = new Path(folderName);
-		IFolder folder = project.getFolder(path);		 
+		IFolder folder = project.getFolder(path);
 		return createEntity(folder, packageName , entityName);
 	}
 
 	@SuppressWarnings("deprecation")
 	private String getFolderName(IProject project, String[] packageFragments)
 			throws JavaModelException {
-		IJavaProject javaProject = JavaCore.create(project);		
+		IJavaProject javaProject = JavaCore.create(project);
 		IPackageFragmentRoot[] packageFragmentRoots = new IPackageFragmentRoot[0];
-		final IClasspathEntry[] classpathEntries =  javaProject.getRawClasspath();		
+		final IClasspathEntry[] classpathEntries =  javaProject.getRawClasspath();
 		for (IClasspathEntry classpathEntry : classpathEntries) {
 			if (classpathEntry.getEntryKind() == IClasspathEntry.CPE_SOURCE) {
 				packageFragmentRoots = javaProject.getPackageFragmentRoots(classpathEntry);
 				break;
-			}  			
+			}
 		}
-		
-		String folderName = packageFragmentRoots[0].getResource().getName();
+
+		String folderName = packageFragmentRoots[0].getCorrespondingResource().getProjectRelativePath().toString();
 		for (String fragment : packageFragments) {
 			folderName += Path.SEPARATOR + fragment;
 		}
 		return folderName;
 	}
-	
+
 	private IFile createEntity(IFolder folder, String packageName, String entityName) throws IOException, CoreException {
 		String entityShortName = entityName.substring(entityName.lastIndexOf('.') + 1);
 		if (!folder.exists()) {
 			createDirectories(folder, true, true, new NullProgressMonitor());
 		}
-		IFile file = folder.getFile(entityShortName + ".java");		
+		IFile file = folder.getFile(entityShortName + ".java");
 		if (!file.exists()) {
-			String content = "package " + packageName + ";\n\n" 
-					+ "import javax.persistence.*;\n\n" 
+			String content = "package " + packageName + ";\n\n"
+					+ "import javax.persistence.*;\n\n"
 					+ "@Entity \n"
 					+ "public class " + entityShortName + " {\n"
 					+ "	private int id;\n"
 					+ "	@Id \n"
-					+ "	public int getId() {\n" 
+					+ "	public int getId() {\n"
 					+ "		return id;\n"
 					+ "	}\n"
 					+ "	public void setId(int id) {\n"
-					+ "		this.id = id;\n" 
+					+ "		this.id = id;\n"
 					+ "	}\n"
 					+ "}"; //$NON-NLS-1$
 			ByteArrayOutputStream stream = new ByteArrayOutputStream();
@@ -315,11 +315,11 @@
 				file.create(new ByteArrayInputStream(stream.toByteArray()), true, new NullProgressMonitor());
 			} finally {
 				stream.close();
-			}	
+			}
 		}
 		return file;
-	}	
-	
+	}
+
 	public IFile createEntityWithCompositePKInProject(IProject project,
 			String[] packageFragments, String entityName) throws IOException,
 			CoreException, JavaModelException {
@@ -379,18 +379,18 @@
 		IFolder folder = project.getFolder(path);
 		return createEntityWithEmbeddedPK(folder, packageName, entityName);
 	}
-	
-		
-		
+
+
+
 		private IFile createEntityWithCompositePK(IFolder folder, String packageName, String entityName) throws IOException, CoreException{
 			String entityShortName = entityName.substring(entityName.lastIndexOf('.') + 1);
 			if (!folder.exists()) {
 				createDirectories(folder, true, true, new NullProgressMonitor());
 			}
-			IFile file = folder.getFile(entityShortName + ".java");		
+			IFile file = folder.getFile(entityShortName + ".java");
 			if (!file.exists()) {
-				String content = "package " + packageName + ";\n\n" 
-						+ "import javax.persistence.*;\n\n" 
+				String content = "package " + packageName + ";\n\n"
+						+ "import javax.persistence.*;\n\n"
 						+ "@Entity \n"
 						+ "@IdClass("+entityShortName+"Id.class)"
 					+ "public class " + entityShortName + " {\n"
@@ -411,35 +411,35 @@
 					file.create(new ByteArrayInputStream(stream.toByteArray()), true, new NullProgressMonitor());
 				} finally {
 					stream.close();
-				}	
+				}
 			}
 			return file;
 			}
-		
+
 		private IFile createIdClass(IFolder folder, String packageName, String entityName) throws IOException, CoreException{
 			String entityShortName = entityName.substring(entityName.lastIndexOf('.') + 1);
 			if (!folder.exists()) {
 				createDirectories(folder, true, true, new NullProgressMonitor());
 			}
-			IFile file = folder.getFile(entityShortName + "Id.java");		
+			IFile file = folder.getFile(entityShortName + "Id.java");
 			if (!file.exists()) {
-				String content = "package " + packageName + ";\n\n" 
-						+ "import javax.persistence.*;\n\n" 
+				String content = "package " + packageName + ";\n\n"
+						+ "import javax.persistence.*;\n\n"
 						+"import java.io.Serializable;"
 						+ "public class " + entityShortName + "Id {\n"
 						+ "	private String firstName;\n"
 						+ "	private String lastName;\n"
-						+ "	public String getFirstName() {\n" 
+						+ "	public String getFirstName() {\n"
 						+ "		return firstName;\n"
 						+ "	}\n"
 						+ "	public void setFirstName(String firstName) {\n"
-						+ "		this.firstName = firstName;\n" 
+						+ "		this.firstName = firstName;\n"
 						+ "	}\n"
-						+ "	public String getLastName() {\n" 
+						+ "	public String getLastName() {\n"
 						+ "		return lastName;\n"
 						+ "	}\n"
 						+ "	public void setLastName(String lastName) {\n"
-						+ "		this.lastName = lastName;\n" 
+						+ "		this.lastName = lastName;\n"
 						+ "	}\n"
 						+ "}"; //$NON-NLS-1$
 				ByteArrayOutputStream stream = new ByteArrayOutputStream();
@@ -449,30 +449,30 @@
 					file.create(new ByteArrayInputStream(stream.toByteArray()), true, new NullProgressMonitor());
 				} finally {
 					stream.close();
-				}	
+				}
 			}
 			return file;
 			}
-		
+
 		private IFile createEntityWithEmbeddedPK(IFolder folder, String packageName, String entityName) throws IOException, CoreException{
 			String entityShortName = entityName.substring(entityName.lastIndexOf('.') + 1);
 			if (!folder.exists()) {
 				createDirectories(folder, true, true, new NullProgressMonitor());
 			}
-			IFile file = folder.getFile(entityShortName + ".java");		
+			IFile file = folder.getFile(entityShortName + ".java");
 			if (!file.exists()) {
-				String content = "package " + packageName + ";\n\n" 
-						+ "import javax.persistence.*;\n\n" 					
+				String content = "package " + packageName + ";\n\n"
+						+ "import javax.persistence.*;\n\n"
 						+ "@Entity\n"
 						+ "public class " + entityShortName + " {\n"
 						+ "@EmbeddedId\n"
-						+ "	private "+ entityShortName +"Id id;\n"						
+						+ "	private "+ entityShortName +"Id id;\n"
 						+ "public void setId(" + entityShortName+ "Id param) {\n"
 						+ "	this.id = param;\n"
 						+ "}\n"
 						+ "public "+entityShortName+"Id getId() {\n"
 						+	"return id;\n"
-						+ "}\n"						
+						+ "}\n"
 						+ "}"; //$NON-NLS-1$
 				ByteArrayOutputStream stream = new ByteArrayOutputStream();
 				try {
@@ -481,20 +481,20 @@
 					file.create(new ByteArrayInputStream(stream.toByteArray()), true, new NullProgressMonitor());
 				} finally {
 					stream.close();
-				}	
+				}
 			}
 			return file;
 			}
-		
+
 		private IFile createEmbeddedClass(IFolder folder, String packageName, String entityName) throws IOException, CoreException{
 			String entityShortName = entityName.substring(entityName.lastIndexOf('.') + 1);
 			if (!folder.exists()) {
 				createDirectories(folder, true, true, new NullProgressMonitor());
 			}
-			IFile file = folder.getFile(entityShortName + ".java");		
+			IFile file = folder.getFile(entityShortName + ".java");
 		if (!file.exists()) {
 			String content = "package " + packageName + ";\n\n"
-			                 + "import javax.persistence.*;\n" 
+			                 + "import javax.persistence.*;\n"
 			                 + "@Embeddable\n"
 					         + "public class " + entityShortName + " {\n"
 					     	 +"private String firstName;\n"
@@ -512,12 +512,12 @@
 					file.create(new ByteArrayInputStream(stream.toByteArray()), true, new NullProgressMonitor());
 				} finally {
 					stream.close();
-				}	
+				}
 			}
 			return file;
 			}
-	
-	
+
+
 	private void createDirectories(IContainer container, boolean force,
 			boolean local, IProgressMonitor monitor) throws CoreException {
 		if (container != null && container instanceof IFolder) {
@@ -531,7 +531,7 @@
 			}
 		}
 	}
-	
+
 	public static PersistentAttribute getPersistentAttribute(IFile entity, String attributeName){
 		Set<PersistentAttribute> result = getEntityFields(entity);
 		for(PersistentAttribute attribute : result){
@@ -541,7 +541,7 @@
 		}
 		return null;
 	}
-	
+
 	public static PersistentType getPersistentType(IFile file){
 		JpaFile jpaFile = getJpaFile(file);
 		for (JpaStructureNode node : getRootNodes(jpaFile)) {
@@ -557,7 +557,7 @@
 		}
 		return jpaFile.getRootStructureNodes();
 	}
-	
+
 	public static Set<PersistentAttribute> getEntityFields(IFile file){
 		Set<PersistentAttribute> result = new HashSet<PersistentAttribute>();
 		JpaFile jpaFile = getJpaFile(file);
@@ -574,11 +574,11 @@
 	}
 
 	private static JpaFile getJpaFile(IFile file) {
-		return (JpaFile) file.getAdapter(JpaFile.class);
+		return file.getAdapter(JpaFile.class);
 	}
-	
+
 	public void addAttributes(IFile entity, String attName, String attType, String annotation, String attActName, boolean isCollection){
-		PersistentType javaPersistentType = (PersistentType)getPersistentType(entity);
+		PersistentType javaPersistentType = getPersistentType(entity);
 		int cnt = 0;
 		while ((javaPersistentType == null) && (cnt < 100)) {
 			try {
@@ -591,25 +591,25 @@
 			throw new RuntimeException("The entity could not be created");
 		JpaArtifactFactory.instance().makeNewAttribute(javaPersistentType, attName, attType, attActName, attType, null, null, isCollection);
 	}
-	
+
 	private IFile createFieldAnnotatedEntity(IFolder folder, String packageName, String entityName) throws IOException, CoreException {
 		String entityShortName = entityName.substring(entityName.lastIndexOf('.') + 1);
 		if (!folder.exists()) {
 			createDirectories(folder, true, true, new NullProgressMonitor());
 		}
-		IFile file = folder.getFile(entityShortName + ".java");		
+		IFile file = folder.getFile(entityShortName + ".java");
 		if (!file.exists()) {
-			String content = "package " + packageName + ";\n\n" 
-					+ "import javax.persistence.*;\n\n" 
+			String content = "package " + packageName + ";\n\n"
+					+ "import javax.persistence.*;\n\n"
 					+ "@Entity \n"
 					+ "public class " + entityShortName + " {\n"
-					+ "	@Id \n"					
+					+ "	@Id \n"
 					+ "	private int id;\n"
-					+ "	public int getId() {\n" 
+					+ "	public int getId() {\n"
 					+ "		return id;\n"
 					+ "	}\n"
 					+ "	public void setId(int id) {\n"
-					+ "		this.id = id;\n" 
+					+ "		this.id = id;\n"
 					+ "	}\n"
 					+ "}"; //$NON-NLS-1$
 			ByteArrayOutputStream stream = new ByteArrayOutputStream();
@@ -619,22 +619,22 @@
 				file.create(new ByteArrayInputStream(stream.toByteArray()), true, new NullProgressMonitor());
 			} finally {
 				stream.close();
-			}	
+			}
 		}
 		return file;
-	}	
+	}
 
 	public IFile createFieldAnnotatedEntityInProject(IProject project, String[] packageFragments, String entityName) throws IOException, CoreException, JavaModelException {
 		String folderName = getFolderName(project, packageFragments);
-		String packageName = packageFragments[0];		
+		String packageName = packageFragments[0];
 		for (int i = 1; i < packageFragments.length; i++) {
 			packageName += "." + packageFragments[i];
 		}
-		
+
 		IPath path = new Path(folderName);
-		IFolder folder = project.getFolder(path);		 
+		IFolder folder = project.getFolder(path);
 		return createFieldAnnotatedEntity(folder, packageName , entityName);
 	}
-	
-	
+
+
 }