diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/driver/MySQL.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/driver/MySQL.java
index 53bd544..e936d63 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/driver/MySQL.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/driver/MySQL.java
@@ -303,7 +303,7 @@
 
 	static class Factory implements WorkbenchDriverAdapterFactory {
 		private static final String[] VENDORS = {
-				"MySql"
+				"MySQL"
 			};
 		@Override
 		public String[] getSupportedVendors() {
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/ELDatabase.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/ELDatabase.java
index 4b9f225..29219a9 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/ELDatabase.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/ELDatabase.java
@@ -672,7 +672,7 @@
 	 * @see java.sql.DatabaseMetaData#getSchemas()
 	 */
 	public Iterator<String> schemaNames() {
-		if (!getDatabasePlatform().getName().equals("MySql")) {
+		if (!getDatabasePlatform().getName().equals("MySQL")) {
 			return new ArrayIterator<String>(this.getExternalDatabase().getSchemaNames());
 		} else {
 			return new ArrayIterator<String>(this.getExternalDatabase().getCatalogNames());
@@ -770,7 +770,7 @@
 	 * creating it if necessary; use the table's fully-qualified name
 	 */
 	private ELTable qualifiedTableFor(ExternalTableDescription externalTableDescription) {
-		if (getDatabasePlatform().getName().equals("MySql")) {
+		if (getDatabasePlatform().getName().equals("MySQL")) {
 			return this.tableNamedForImport(null, externalTableDescription.getCatalogName(), externalTableDescription.getName());
 		} else {
 			return this.tableNamedForImport(externalTableDescription.getCatalogName(), externalTableDescription.getSchemaName(), externalTableDescription.getName());
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/AbstractJDBCTypeToJavaTypeDeclarationMapping.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/AbstractJDBCTypeToJavaTypeDeclarationMapping.java
index abdaee9..89627e2 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/AbstractJDBCTypeToJavaTypeDeclarationMapping.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/AbstractJDBCTypeToJavaTypeDeclarationMapping.java
@@ -12,6 +12,7 @@
 ******************************************************************************/
 package org.eclipse.persistence.tools.db.model.platformsmodel;
 
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
 import org.w3c.dom.Node;
 
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatform.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatform.java
index 133d27d..790fee1 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatform.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatform.java
@@ -20,6 +20,7 @@
 import java.util.Vector;
 
 import org.eclipse.persistence.tools.utility.CollectionTools;
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.iterators.CloneIterator;
 import org.eclipse.persistence.tools.utility.iterators.TransformationIterator;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatformRepository.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatformRepository.java
index 0e1f29d..4d536b3 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatformRepository.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabasePlatformRepository.java
@@ -24,6 +24,7 @@
 import org.eclipse.persistence.tools.utility.CollectionTools;
 import org.eclipse.persistence.tools.utility.FileTools;
 import org.eclipse.persistence.tools.utility.HashBag;
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.iterators.CloneIterator;
 import org.eclipse.persistence.tools.utility.iterators.TransformationIterator;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabaseType.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabaseType.java
index 926477b..d07eaba 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabaseType.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/DatabaseType.java
@@ -14,6 +14,7 @@
 
 import java.util.Iterator;
 
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
 import org.w3c.dom.Node;
 
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCType.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCType.java
index 050154a..0862c25 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCType.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCType.java
@@ -12,6 +12,7 @@
 ******************************************************************************/
 package org.eclipse.persistence.tools.db.model.platformsmodel;
 
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
 import org.w3c.dom.Node;
 
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeRepository.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeRepository.java
index 71cbf1c..ce639a5 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeRepository.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeRepository.java
@@ -22,6 +22,7 @@
 
 import org.eclipse.persistence.tools.utility.CollectionTools;
 import org.eclipse.persistence.tools.utility.StringTools;
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.iterators.CloneIterator;
 import org.eclipse.persistence.tools.utility.iterators.TransformationIterator;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeToDatabaseTypeMapping.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeToDatabaseTypeMapping.java
index 51c30f1..9c16142 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeToDatabaseTypeMapping.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JDBCTypeToDatabaseTypeMapping.java
@@ -12,6 +12,7 @@
 ******************************************************************************/
 package org.eclipse.persistence.tools.db.model.platformsmodel;
 
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
 import org.w3c.dom.Node;
 
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JavaTypeDeclaration.java b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JavaTypeDeclaration.java
index 53c5cb1..e8285c4 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JavaTypeDeclaration.java
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/JavaTypeDeclaration.java
@@ -12,6 +12,7 @@
 ******************************************************************************/
 package org.eclipse.persistence.tools.db.model.platformsmodel;
 
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.eclipse.persistence.tools.utility.node.AbstractNode;
 import org.w3c.dom.Node;
 
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/platforms/mysql.xml b/tools/org.eclipse.persistence.tools.gen.db/src/platforms/mysql.xml
index 12076e7..5c6da7d 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/platforms/mysql.xml
+++ b/tools/org.eclipse.persistence.tools.gen.db/src/platforms/mysql.xml
@@ -1,6 +1,6 @@
 <?xml version = '1.0' encoding = 'UTF-8'?>
 <database-platform>
-   <name>MySql</name>
+   <name>MySQL</name>
    <runtime-platform-class>org.eclipse.persistence.platform.database.MySQLPlatform</runtime-platform-class>
    <supports-native-sequencing>true</supports-native-sequencing>
    <database-types>
diff --git a/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/DatabaseType.java b/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/DatabaseType.java
index 4fb50ce..2dab3a1 100644
--- a/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/DatabaseType.java
+++ b/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/DatabaseType.java
@@ -32,7 +32,7 @@
 @SuppressWarnings("nls")
 public enum DatabaseType {
 
-	MySql("MySql") {
+	MySql("MySQL") {
 		@Override
 		public String getDatabaseDriver() {
 			return "com.mysql.jdbc.Driver";
diff --git a/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/internal/util/StringUtil.java b/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/internal/util/StringUtil.java
index d4b4827..d298e57 100644
--- a/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/internal/util/StringUtil.java
+++ b/tools/org.eclipse.persistence.tools.gen/src/org/eclipse/persistence/tools/gen/internal/util/StringUtil.java
@@ -208,6 +208,7 @@
      *         in the parameter string.
      *         Each element is of type <code>String</code>.
      */
+	@SuppressWarnings("null")
 	public static List<String> strToList(String s, char sep, boolean trim)
 	{
 	//ex: if sep is ';' then s should be someting like "Red;Black"
diff --git a/tools/org.eclipse.persistence.tools.mapping/.classpath b/tools/org.eclipse.persistence.tools.mapping/.classpath
index 0551504..52fab40 100644
--- a/tools/org.eclipse.persistence.tools.mapping/.classpath
+++ b/tools/org.eclipse.persistence.tools.mapping/.classpath
@@ -1,11 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="src"/>
-	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
-		<attributes>
-			<attribute name="owner.project.facets" value="java"/>
-		</attributes>
-	</classpathentry>
 	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
 	<classpathentry kind="output" path="build/classes"/>
 </classpath>
diff --git a/tools/org.eclipse.persistence.tools.mapping/.settings/org.eclipse.jdt.core.prefs b/tools/org.eclipse.persistence.tools.mapping/.settings/org.eclipse.jdt.core.prefs
index c537b63..8000cd6 100644
--- a/tools/org.eclipse.persistence.tools.mapping/.settings/org.eclipse.jdt.core.prefs
+++ b/tools/org.eclipse.persistence.tools.mapping/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,11 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
 org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.source=1.6
diff --git a/tools/org.eclipse.persistence.tools.mapping/META-INF/MANIFEST.MF b/tools/org.eclipse.persistence.tools.mapping/META-INF/MANIFEST.MF
index deeee3a..2e9844d 100644
--- a/tools/org.eclipse.persistence.tools.mapping/META-INF/MANIFEST.MF
+++ b/tools/org.eclipse.persistence.tools.mapping/META-INF/MANIFEST.MF
@@ -10,4 +10,4 @@
  org.eclipse.persistence.tools.mapping.orm.dom,
  org.eclipse.persistence.tools.mapping.persistence,
  org.eclipse.persistence.tools.mapping.persistence.dom
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: J2SE-1.6
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalBasicMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalBasicMapping.java
index 0fc6352..179c1dd 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalBasicMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalBasicMapping.java
@@ -32,22 +32,8 @@
  * @author John Bracken
  */
 public interface ExternalBasicMapping extends ExternalVersionMapping,
-                                              ExternalMappedMapping {
-
-	/**
-	 * Creates a new generated value for this ID mapping replacing the old one.
-	 */
-	ExternalEntityIDGeneratedValue addGeneratedValue();
-
-	/**
-	 * Creates a new sequence generator for this ID mapping.
-	 */
-	ExternalSequenceGenerator addSequenceGenerator();
-
-	/**
-	 * Creates a new table generator for this ID mapping.
-	 */
-	ExternalTableGenerator addTableGenerator();
+											  ExternalGeneratedMapping,
+											  ExternalMappedMapping   {
 
 	/**
 	 * Returns the enumerated type of this mapping if one exists.
@@ -55,21 +41,6 @@
 	EnumType getEnumeratedType();
 
 	/**
-	 * Returns the generated value for this ID mapping.
-	 */
-	ExternalEntityIDGeneratedValue getGeneratedValue();
-
-	/**
-	 * Returns the sequence generator to be used with this ID mapping.
-	 */
-	ExternalSequenceGenerator getSequenceGenerator();
-
-	/**
-	 * Returns the table generator to be used with this ID mapping.
-	 */
-	ExternalTableGenerator getTableGenerator();
-
-	/**
 	 * Indicates whether this basic mapping's column is a LOB.
 	 */
 	Boolean isLob();
@@ -118,14 +89,4 @@
 	 * Sets whether this mapping returns on update.
 	 */
 	void setReturnOnUpdate(Boolean returnOnUpdate);
-
-	/**
-	 * Creates a new sequence generator to be used with this ID mapping replacing the old one.
-	 */
-	void setSequenceGenerator(String generatorName);
-
-	/**
-	 * Creates new table generator to be used with this ID mapping replacing the old one.
-	 */
-	void setTableGenerator(String generatorName);
 }
\ No newline at end of file
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalGeneratedMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalGeneratedMapping.java
new file mode 100644
index 0000000..ffeea04
--- /dev/null
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalGeneratedMapping.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2006, 2012 Oracle and/or its affiliates. All rights reserved.
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
+ * which accompanies this distribution.
+ * The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.php.
+ *
+ * Contributors:
+ *     Oracle - initial API and implementation
+ *
+ ******************************************************************************/
+package org.eclipse.persistence.tools.mapping.orm;
+
+import javax.persistence.Basic;
+import javax.persistence.Id;
+
+/**
+ * This interface and inherited behavior describes the configurable properties for a mapping
+ * in the ORM xml that has a generated value. 
+ * 
+ * Provisional API: This interface is part of an interim API that is still under development and
+ * expected to change significantly before reaching stability. It is available at this early stage
+ * to solicit feedback from pioneering adopters on the understanding that any code that uses this
+ * API will almost certainly be broken (repeatedly) as the API evolves.<p>
+ *
+ * @see Basic
+ * @see Id
+ * @see http://jcp.org/aboutJava/communityprocess/final/jsr220/index.html,
+ * persistence specificaton
+ *
+ * @version 2.5
+ * @author John Bracken
+ */
+public interface ExternalGeneratedMapping extends ExternalMapping {
+
+	/**
+	 * Creates a new generated value for this ID mapping replacing the old one.
+	 */
+	ExternalEntityIDGeneratedValue addGeneratedValue();
+
+	/**
+	 * Creates a new sequence generator for this ID mapping.
+	 */
+	ExternalSequenceGenerator addSequenceGenerator();
+
+	/**
+	 * Creates a new table generator for this ID mapping.
+	 */
+	ExternalTableGenerator addTableGenerator();
+
+	/**
+	 * Returns the generated value for this ID mapping.
+	 */
+	ExternalEntityIDGeneratedValue getGeneratedValue();
+
+	/**
+	 * Returns the sequence generator to be used with this ID mapping.
+	 */
+	ExternalSequenceGenerator getSequenceGenerator();
+
+	/**
+	 * Returns the table generator to be used with this ID mapping.
+	 */
+	ExternalTableGenerator getTableGenerator();
+
+	/**
+	 * Removes the generated value from the mapping.
+	 */
+	void removeGeneratedValue();
+
+	/**
+	 * Removes the sequence generator from the mapping.
+	 */
+	void removeSequenceGenerator();
+
+	/**
+	 * Removes the table generator from the mapping.
+	 */
+	void removeTableGenerator();
+	
+	/**
+	 * Creates a new sequence generator to be used with this ID mapping replacing the old one.
+	 */
+	void setSequenceGenerator(String generatorName);
+
+	/**
+	 * Creates new table generator to be used with this ID mapping replacing the old one.
+	 */
+	void setTableGenerator(String generatorName);
+}
\ No newline at end of file
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalIDMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalIDMapping.java
index 2cee7a5..0afa40a 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalIDMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalIDMapping.java
@@ -30,50 +30,6 @@
  * @version 2.5
  * @author John Bracken
  */
-public interface ExternalIDMapping extends ExternalVersionMapping {
+public interface ExternalIDMapping extends ExternalVersionMapping, ExternalGeneratedMapping {
 
-	/**
-	 * Creates a new generated value for this ID mapping replacing the old one.
-	 */
-	ExternalEntityIDGeneratedValue addGeneratedValue();
-
-	/**
-	 * Creates a new sequence generator for this ID mapping.
-	 */
-	ExternalSequenceGenerator addSequenceGenerator();
-
-	/**
-	 * Creates a new table generator for this ID mapping.
-	 */
-	ExternalTableGenerator addTableGenerator();
-
-	/**
-	 * Returns the generated value for this ID mapping.
-	 */
-	ExternalEntityIDGeneratedValue getGeneratedValue();
-
-	/**
-	 * Returns the sequence generator to be used with this ID mapping.
-	 */
-	ExternalSequenceGenerator getSequenceGenerator();
-
-	/**
-	 * Returns the table generator to be used with this ID mapping.
-	 */
-	ExternalTableGenerator getTableGenerator();
-
-	/**
-	 * Removes the generated value from the mapping.
-	 */
-	void removeGeneratedValue();
-
-	/**
-	 * Creates a new sequence generator to be used with this ID mapping replacing the old one.
-	 */
-	void setSequenceGenerator(String generatorName);
-
-	/**
-	 * Creates new table generator to be used with this ID mapping replacing the old one.
-	 */
-	void setTableGenerator(String generatorName);
 }
\ No newline at end of file
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalMapping.java
index 651c845..86eb74c 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalMapping.java
@@ -33,13 +33,19 @@
 	 * Returns the attribute type of this mapping.
 	 */
 	String getAttributeType();
-
+	
 	/**
 	 * Returns the name of the mapping.
 	 */
 	String getName();
 
 	/**
+	 * Sets the attribute type of this mapping.
+	 */
+	void setAttributeType(String attributeType);
+
+	
+	/**
 	 * Sets the name of the mapping.
 	 */
 	void setName(String name);
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalORMConfiguration.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalORMConfiguration.java
index ee0d2ac..6c9da81 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalORMConfiguration.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/ExternalORMConfiguration.java
@@ -51,6 +51,13 @@
 	 */
 	void addEntity(int index, String entityClassName);
 
+	
+	/**
+	 * Adds a entity for the given class name.
+	 */
+	ExternalEntity addEntity(String entityClassName);
+	
+	
 	/**
 	 * Adds a mapped super class entity with the given name
 	 */
@@ -180,9 +187,16 @@
 	ExternalEmbeddableEntity getEmbeddableEntity(int index);
 
 	/**
-	 * Returns the entity associated with this ORM configuration identified by the given class name.
+	 * Returns the entity associated with this ORM configuration identified by the given 
+	 * index.
 	 */
 	ExternalEntity getEntity(int index);
+	
+	/**
+	 * Returns the entity associated with this ORM configuration identified by 
+	 * the given class name.
+	 */
+	ExternalEntity getEntity(String className);
 
 	/**
 	 * Returns the mapped superclass for the given class name
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapping.java
index 8e257b1..c9baef0 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapping.java
@@ -299,6 +299,18 @@
 		generatedValue.removeSelf();
 	}
 
+	@Override
+	public void removeTableGenerator() {
+		TableGenerator generator = buildTableGenerator();
+		generator.removeSelf();		
+	}
+	
+	@Override
+	public void removeSequenceGenerator() {
+		SequenceGenerator generator = buildSequenceGenerator();
+		generator.removeSelf();		
+	}
+	
 	/**
 	 * {@inheritDoc}
 	 */
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/IdMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/IdMapping.java
index efdee8d..5121676 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/IdMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/IdMapping.java
@@ -226,6 +226,18 @@
 		EntityIDGeneratedValue generatedValue = buildGeneratedValue();
 		generatedValue.removeSelf();
 	}
+	
+	@Override
+	public void removeTableGenerator() {
+		TableGenerator generator = buildTableGenerator();
+		generator.removeSelf();		
+	}
+	
+	@Override
+	public void removeSequenceGenerator() {
+		SequenceGenerator generator = buildSequenceGenerator();
+		generator.removeSelf();		
+	}
 
 	/**
 	 * {@inheritDoc}
@@ -239,7 +251,6 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	@SuppressWarnings("null")
 	public void setColumn(String columnName) {
 
 		AbstractColumn column = getColumn();
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Mapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Mapping.java
index f6a9f3a..e204c20 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Mapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Mapping.java
@@ -168,6 +168,15 @@
 	 * {@inheritDoc}
 	 */
 	@Override
+	public void setAttributeType(String attributeType) {
+		setAttribute(ATTRIBUTE_TYPE, attributeType);
+		
+	}
+	
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
 	public final void setName(String name) {
 		setAttribute(NAME, name);
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java
index 380e4a0..dd60604 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java
@@ -42,6 +42,7 @@
 import org.eclipse.persistence.tools.mapping.orm.ExternalTenantDiscriminatorColumn;
 import org.eclipse.persistence.tools.mapping.orm.ExternalTypeConverter;
 import org.eclipse.persistence.tools.mapping.orm.ORMDocumentType;
+import org.eclipse.persistence.tools.utility.StringTools;
 import org.eclipse.persistence.tools.utility.Tools;
 import org.eclipse.persistence.tools.utility.iterables.ListIterable;
 import org.eclipse.persistence.tools.utility.iterables.ListListIterable;
@@ -148,6 +149,18 @@
 	 * {@inheritDoc}
 	 */
 	@Override
+	public ExternalEntity addEntity(String entityClassName) {
+		Entity entity = buildEntity(entitiesSize());
+		entity.addSelf();
+		entity.setClassName(entityClassName);
+		
+		return entity;
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
 	public void addMappedSuperClass(int index, String className) {
 		MappedSuperClassEntity entity = buildMappedSuperclass(index);
 		entity.addSelf();
@@ -608,6 +621,19 @@
 
 		return buildEntity(index);
 	}
+	
+	@Override
+	public ExternalEntity getEntity(String className) {
+		for (ExternalEntity entity : entities()) {
+			if (StringTools.stringsAreEqual(entity.getClassName(), className)) {
+				return entity;
+			}
+		}
+		
+		return null;
+	}
+	
+	
 
 	/**
 	 * {@inheritDoc}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMRepository.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMRepository.java
index 59716ce..85ed667 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMRepository.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMRepository.java
@@ -13,13 +13,15 @@
  ******************************************************************************/
 package org.eclipse.persistence.tools.mapping.orm.dom;
 
-import com.sun.org.apache.xerces.internal.dom.DocumentImpl;
 import java.io.ByteArrayInputStream;
+
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
+
 import org.eclipse.persistence.tools.mapping.orm.ExternalORMConfiguration;
 import org.eclipse.persistence.tools.mapping.orm.ExternalORMRepository;
 import org.eclipse.persistence.tools.mapping.orm.ORMDocumentType;
+import org.eclipse.persistence.tools.utility.XMLTools;
 import org.w3c.dom.Document;
 import org.xml.sax.InputSource;
 
@@ -52,7 +54,7 @@
 	public ExternalORMConfiguration buildORMConfiguration(ORMDocumentType docType) {
 
 		// Create the external form
-		ORMConfiguration ormConfiguration = new ORMConfiguration(new DocumentImpl());
+		ORMConfiguration ormConfiguration = new ORMConfiguration(XMLTools.newDocument());
 		ormConfiguration.addSelf();
 		ormConfiguration.setDocumentType(docType);
 
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceRepository.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceRepository.java
index 2e06ea6..d97722a 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceRepository.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceRepository.java
Binary files differ
diff --git a/tools/org.eclipse.persistence.tools.utility/src/META-INF/MANIFEST.MF b/tools/org.eclipse.persistence.tools.utility/src/META-INF/MANIFEST.MF
deleted file mode 100644
index 254272e..0000000
--- a/tools/org.eclipse.persistence.tools.utility/src/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,3 +0,0 @@
-Manifest-Version: 1.0
-Class-Path: 
-
diff --git a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/XMLTools.java b/tools/org.eclipse.persistence.tools.utility/src/org/eclipse/persistence/tools/utility/XMLTools.java
similarity index 98%
rename from tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/XMLTools.java
rename to tools/org.eclipse.persistence.tools.utility/src/org/eclipse/persistence/tools/utility/XMLTools.java
index 5bc2ebc..50a8b50 100644
--- a/tools/org.eclipse.persistence.tools.gen.db/src/org/eclipse/persistence/tools/db/model/platformsmodel/XMLTools.java
+++ b/tools/org.eclipse.persistence.tools.utility/src/org/eclipse/persistence/tools/utility/XMLTools.java
@@ -10,7 +10,7 @@
  * Contributors:
  *     Oracle - initial API and implementation from Oracle TopLink
 ******************************************************************************/
-package org.eclipse.persistence.tools.db.model.platformsmodel;
+package org.eclipse.persistence.tools.utility;
 
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
@@ -38,7 +38,6 @@
 import javax.xml.transform.dom.DOMSource;
 import javax.xml.transform.stream.StreamResult;
 
-import org.eclipse.persistence.tools.utility.StringTools;
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
