Added converters to update mechanism, and tests
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaConverter.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaConverter.java
index 3ce5af4..2410df0 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/java/EclipseLinkJavaConverter.java
@@ -16,6 +16,7 @@
 import org.eclipse.jpt.core.resource.java.JavaResourcePersistentMember;
 import org.eclipse.jpt.core.utility.TextRange;
 import org.eclipse.jpt.eclipselink.core.context.EclipseLinkConverter;
+import org.eclipse.jpt.eclipselink.core.internal.context.EclipseLinkPersistenceUnit;
 import org.eclipse.jpt.eclipselink.core.resource.java.NamedConverterAnnotation;
 
 public abstract class EclipseLinkJavaConverter extends AbstractJavaJpaContextNode
@@ -38,6 +39,11 @@
 	
 	protected abstract String getAnnotationName();
 	
+	@Override
+	public EclipseLinkPersistenceUnit getPersistenceUnit() {
+		return (EclipseLinkPersistenceUnit) super.getPersistenceUnit();
+	}
+	
 	
 	// **************** name ***************************************************
 	
@@ -64,11 +70,13 @@
 	protected void initialize(JavaResourcePersistentMember jrpm) {
 		this.resourcePersistentMember = jrpm;
 		this.name = this.name(getAnnotation());
+		getPersistenceUnit().addConverter(this);
 	}
 	
 	protected void update(JavaResourcePersistentMember jrpm) {
 		this.resourcePersistentMember = jrpm;
 		this.setName_(this.name(getAnnotation()));
+		getPersistenceUnit().addConverter(this);
 	}
 	
 	protected String name(NamedConverterAnnotation resourceConverter) {
diff --git a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmConverter.java b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmConverter.java
index 0b1b367..463b860 100644
--- a/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmConverter.java
+++ b/jpa/plugins/org.eclipse.jpt.eclipselink.core/src/org/eclipse/jpt/eclipselink/core/internal/context/orm/EclipseLinkOrmConverter.java
@@ -14,6 +14,7 @@
 import org.eclipse.jpt.core.internal.context.AbstractXmlContextNode;
 import org.eclipse.jpt.core.utility.TextRange;
 import org.eclipse.jpt.eclipselink.core.context.EclipseLinkConverter;
+import org.eclipse.jpt.eclipselink.core.internal.context.EclipseLinkPersistenceUnit;
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlNamedConverter;
 
 public abstract class EclipseLinkOrmConverter
@@ -34,6 +35,11 @@
 		return this.xmlResource;
 	}
 	
+	@Override
+	public EclipseLinkPersistenceUnit getPersistenceUnit() {
+		return (EclipseLinkPersistenceUnit) super.getPersistenceUnit();
+	}
+	
 	
 	// **************** name ***************************************************
 	
@@ -60,10 +66,12 @@
 	protected void initialize(XmlNamedConverter resource) {
 		this.xmlResource = resource;
 		this.name = calculateName();
+		getPersistenceUnit().addConverter(this);
 	}
 	
 	public void update() {
 		this.setName_(calculateName());
+		getPersistenceUnit().addConverter(this);
 	}
 	
 	protected String calculateName() {
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkEntityMappingsTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkEntityMappingsTests.java
index 3365009..56d6552 100644
--- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkEntityMappingsTests.java
+++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkEntityMappingsTests.java
@@ -15,6 +15,7 @@
 import org.eclipse.jpt.eclipselink.core.context.ObjectTypeConverter;
 import org.eclipse.jpt.eclipselink.core.context.StructConverter;
 import org.eclipse.jpt.eclipselink.core.context.TypeConverter;
+import org.eclipse.jpt.eclipselink.core.internal.context.EclipseLinkPersistenceUnit;
 import org.eclipse.jpt.eclipselink.core.internal.context.orm.ConverterHolder;
 import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkEntityMappings;
 import org.eclipse.jpt.eclipselink.core.resource.orm.EclipseLinkOrmFactory;
@@ -23,6 +24,7 @@
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlObjectTypeConverter;
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlStructConverter;
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlTypeConverter;
+import org.eclipse.jpt.utility.internal.CollectionTools;
 
 @SuppressWarnings("nls")
 public class EclipseLinkEntityMappingsTests extends EclipseLinkOrmContextModelTestCase
@@ -32,13 +34,15 @@
 	}
 
 	
-	public void testUpdateConverters() throws Exception {
+	public void testUpdateCustomConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.customConvertersSize());
 		assertEquals(0, resourceEntityMappings.getConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//add a converter to the resource model, check context model
 		XmlConverter resourceConverter = EclipseLinkOrmFactory.eINSTANCE.createXmlConverterImpl();
@@ -52,7 +56,8 @@
 		assertEquals("Foo", ormContextConverter.getConverterClass());
 		assertEquals("myConverter", ormContextConverter.getName());
 		assertEquals(1, resourceEntityMappings.getConverters().size());
-
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));		
+		
 		//add another converter to the resource model, check context model
 		XmlConverter resourceConverter2 = EclipseLinkOrmFactory.eINSTANCE.createXmlConverterImpl();
 		resourceEntityMappings.getConverters().add(0, resourceConverter2);
@@ -68,6 +73,7 @@
 		assertEquals("Foo", ormContextConverter.getConverterClass());
 		assertEquals("myConverter", ormContextConverter.getName());
 		assertEquals(2, resourceEntityMappings.getConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//move a converter in the resource model, check context model
 		resourceEntityMappings.getConverters().move(0, 1);
@@ -81,6 +87,7 @@
 		assertEquals("Foo2", ormContextConverter.getConverterClass());
 		assertEquals("myConverter2", ormContextConverter.getName());
 		assertEquals(2, resourceEntityMappings.getConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getConverters().remove(0);
@@ -91,7 +98,7 @@
 		assertEquals("Foo2", ormContextConverter.getConverterClass());
 		assertEquals("myConverter2", ormContextConverter.getName());
 		assertEquals(1, resourceEntityMappings.getConverters().size());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getConverters().remove(resourceConverter2);
@@ -99,15 +106,18 @@
 		assertEquals(0, ormContextConverterHolder.customConvertersSize());
 		assertFalse(ormContextConverterHolder.customConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 	}
 
-	public void testModifyConverters() throws Exception {
+	public void testModifyCustomConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.customConvertersSize());
 		assertEquals(0, resourceEntityMappings.getConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//add a converter to the context model, check resource model
 		CustomConverter contextConverter = ormContextConverterHolder.addCustomConverter(0);
@@ -122,7 +132,8 @@
 		CustomConverter ormContextConverter = ormContextConverters.next();
 		assertEquals("Foo", ormContextConverter.getConverterClass());
 		assertEquals("myConverter", ormContextConverter.getName());
-	
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));		
+		
 		//add another converter to the context model, check resource model
 		CustomConverter contextConverter2 = ormContextConverterHolder.addCustomConverter(0);
 		contextConverter2.setConverterClass("Foo2");
@@ -141,7 +152,8 @@
 		ormContextConverter = ormContextConverters.next();
 		assertEquals("Foo", ormContextConverter.getConverterClass());
 		assertEquals("myConverter", ormContextConverter.getName());
-	
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));		
+		
 		//move a converter in the context model, check resource model
 		ormContextConverterHolder.moveCustomConverter(0, 1);
 		
@@ -158,6 +170,7 @@
 		ormContextConverter = ormContextConverters.next();
 		assertEquals("Foo2", ormContextConverter.getConverterClass());
 		assertEquals("myConverter2", ormContextConverter.getName());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeCustomConverter(0);
@@ -170,7 +183,7 @@
 		ormContextConverter = ormContextConverters.next();
 		assertEquals("Foo2", ormContextConverter.getConverterClass());
 		assertEquals("myConverter2", ormContextConverter.getName());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeCustomConverter(contextConverter2);
@@ -178,15 +191,18 @@
 		assertEquals(0, ormContextConverterHolder.customConvertersSize());
 		assertFalse(ormContextConverterHolder.customConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 	}
 	
 	public void testUpdateTypeConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.typeConvertersSize());
 		assertEquals(0, resourceEntityMappings.getTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//add a converter to the resource model, check context model
 		XmlTypeConverter resourceTypeConverter = EclipseLinkOrmFactory.eINSTANCE.createXmlTypeConverterImpl();
@@ -200,7 +216,8 @@
 		assertEquals("Foo", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter", ormContextTypeConverter.getName());
 		assertEquals(1, resourceEntityMappings.getTypeConverters().size());
-
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));	
+	
 		//add another converter to the resource model, check context model
 		XmlTypeConverter resourceTypeConverter2 = EclipseLinkOrmFactory.eINSTANCE.createXmlTypeConverterImpl();
 		resourceEntityMappings.getTypeConverters().add(0, resourceTypeConverter2);
@@ -216,6 +233,7 @@
 		assertEquals("Foo", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter", ormContextTypeConverter.getName());
 		assertEquals(2, resourceEntityMappings.getTypeConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//move a converter in the resource model, check context model
 		resourceEntityMappings.getTypeConverters().move(0, 1);
@@ -229,6 +247,7 @@
 		assertEquals("Foo2", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter2", ormContextTypeConverter.getName());
 		assertEquals(2, resourceEntityMappings.getTypeConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getTypeConverters().remove(0);
@@ -239,7 +258,7 @@
 		assertEquals("Foo2", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter2", ormContextTypeConverter.getName());
 		assertEquals(1, resourceEntityMappings.getTypeConverters().size());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getTypeConverters().remove(resourceTypeConverter2);
@@ -247,15 +266,18 @@
 		assertEquals(0, ormContextConverterHolder.typeConvertersSize());
 		assertFalse(ormContextConverterHolder.typeConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));	
 	}
 
 	public void testModifyTypeConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.typeConvertersSize());
 		assertEquals(0, resourceEntityMappings.getTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//add a converter to the context model, check resource model
 		TypeConverter contextTypeConverter = ormContextConverterHolder.addTypeConverter(0);
@@ -270,7 +292,8 @@
 		TypeConverter ormContextTypeConverter = ormContextTypeConverters.next();
 		assertEquals("Foo", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter", ormContextTypeConverter.getName());
-	
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//add another converter to the context model, check resource model
 		TypeConverter contextTypeConverter2 = ormContextConverterHolder.addTypeConverter(0);
 		contextTypeConverter2.setDataType("Foo2");
@@ -289,7 +312,8 @@
 		ormContextTypeConverter = ormContextTypeConverters.next();
 		assertEquals("Foo", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter", ormContextTypeConverter.getName());
-	
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//move a converter in the context model, check resource model
 		ormContextConverterHolder.moveTypeConverter(0, 1);
 		
@@ -306,6 +330,7 @@
 		ormContextTypeConverter = ormContextTypeConverters.next();
 		assertEquals("Foo2", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter2", ormContextTypeConverter.getName());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeTypeConverter(0);
@@ -318,7 +343,7 @@
 		ormContextTypeConverter = ormContextTypeConverters.next();
 		assertEquals("Foo2", ormContextTypeConverter.getDataType());
 		assertEquals("myTypeConverter2", ormContextTypeConverter.getName());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeTypeConverter(contextTypeConverter2);
@@ -326,15 +351,18 @@
 		assertEquals(0, ormContextConverterHolder.typeConvertersSize());
 		assertFalse(ormContextConverterHolder.typeConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 	}
 	
 	public void testUpdateObjectTypeConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.objectTypeConvertersSize());
 		assertEquals(0, resourceEntityMappings.getObjectTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//add a converter to the resource model, check context model
 		XmlObjectTypeConverter resourceObjectTypeConverter = EclipseLinkOrmFactory.eINSTANCE.createXmlObjectTypeConverterImpl();
@@ -348,7 +376,8 @@
 		assertEquals("Foo", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter", ormContextObjectTypeConverter.getName());
 		assertEquals(1, resourceEntityMappings.getObjectTypeConverters().size());
-
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));		
+		
 		//add another converter to the resource model, check context model
 		XmlObjectTypeConverter resourceObjectTypeConverter2 = EclipseLinkOrmFactory.eINSTANCE.createXmlObjectTypeConverterImpl();
 		resourceEntityMappings.getObjectTypeConverters().add(0, resourceObjectTypeConverter2);
@@ -364,6 +393,7 @@
 		assertEquals("Foo", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter", ormContextObjectTypeConverter.getName());
 		assertEquals(2, resourceEntityMappings.getObjectTypeConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//move a converter in the resource model, check context model
 		resourceEntityMappings.getObjectTypeConverters().move(0, 1);
@@ -377,6 +407,7 @@
 		assertEquals("Foo2", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter2", ormContextObjectTypeConverter.getName());
 		assertEquals(2, resourceEntityMappings.getObjectTypeConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getObjectTypeConverters().remove(0);
@@ -387,7 +418,7 @@
 		assertEquals("Foo2", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter2", ormContextObjectTypeConverter.getName());
 		assertEquals(1, resourceEntityMappings.getObjectTypeConverters().size());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));		
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getObjectTypeConverters().remove(resourceObjectTypeConverter2);
@@ -395,15 +426,18 @@
 		assertEquals(0, ormContextConverterHolder.objectTypeConvertersSize());
 		assertFalse(ormContextConverterHolder.objectTypeConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getObjectTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));	
 	}
 
 	public void testModifyObjectTypeConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.objectTypeConvertersSize());
 		assertEquals(0, resourceEntityMappings.getObjectTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//add a converter to the context model, check resource model
 		ObjectTypeConverter contextObjectTypeConverter = ormContextConverterHolder.addObjectTypeConverter(0);
@@ -418,7 +452,8 @@
 		ObjectTypeConverter ormContextObjectTypeConverter = ormContextObjectTypeConverters.next();
 		assertEquals("Foo", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter", ormContextObjectTypeConverter.getName());
-	
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//add another converter to the context model, check resource model
 		ObjectTypeConverter contextObjectTypeConverter2 = ormContextConverterHolder.addObjectTypeConverter(0);
 		contextObjectTypeConverter2.setDataType("Foo2");
@@ -437,7 +472,8 @@
 		ormContextObjectTypeConverter = ormContextObjectTypeConverters.next();
 		assertEquals("Foo", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter", ormContextObjectTypeConverter.getName());
-	
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//move a converter in the context model, check resource model
 		ormContextConverterHolder.moveObjectTypeConverter(0, 1);
 		
@@ -454,6 +490,7 @@
 		ormContextObjectTypeConverter = ormContextObjectTypeConverters.next();
 		assertEquals("Foo2", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter2", ormContextObjectTypeConverter.getName());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeObjectTypeConverter(0);
@@ -466,7 +503,7 @@
 		ormContextObjectTypeConverter = ormContextObjectTypeConverters.next();
 		assertEquals("Foo2", ormContextObjectTypeConverter.getDataType());
 		assertEquals("myObjectTypeConverter2", ormContextObjectTypeConverter.getName());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeObjectTypeConverter(contextObjectTypeConverter2);
@@ -474,15 +511,18 @@
 		assertEquals(0, ormContextConverterHolder.objectTypeConvertersSize());
 		assertFalse(ormContextConverterHolder.objectTypeConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getObjectTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 	}
 	
 	public void testUpdateStructConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.structConvertersSize());
 		assertEquals(0, resourceEntityMappings.getStructConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//add a converter to the resource model, check context model
 		XmlStructConverter resourceStructConverter = EclipseLinkOrmFactory.eINSTANCE.createXmlStructConverterImpl();
@@ -496,7 +536,8 @@
 		assertEquals("Foo", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter", ormContextStructConverter.getName());
 		assertEquals(1, resourceEntityMappings.getStructConverters().size());
-
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));	
+		
 		//add another converter to the resource model, check context model
 		XmlStructConverter resourceStructConverter2 = EclipseLinkOrmFactory.eINSTANCE.createXmlStructConverterImpl();
 		resourceEntityMappings.getStructConverters().add(0, resourceStructConverter2);
@@ -512,6 +553,7 @@
 		assertEquals("Foo", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter", ormContextStructConverter.getName());
 		assertEquals(2, resourceEntityMappings.getStructConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//move a converter in the resource model, check context model
 		resourceEntityMappings.getStructConverters().move(0, 1);
@@ -525,6 +567,7 @@
 		assertEquals("Foo2", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter2", ormContextStructConverter.getName());
 		assertEquals(2, resourceEntityMappings.getStructConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getStructConverters().remove(0);
@@ -535,7 +578,7 @@
 		assertEquals("Foo2", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter2", ormContextStructConverter.getName());
 		assertEquals(1, resourceEntityMappings.getStructConverters().size());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));	
 		
 		//remove a converter from the resource model, check context model
 		resourceEntityMappings.getStructConverters().remove(resourceStructConverter2);
@@ -543,15 +586,18 @@
 		assertEquals(0, ormContextConverterHolder.structConvertersSize());
 		assertFalse(ormContextConverterHolder.structConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getStructConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));	
 	}
 
 	public void testModifyStructConverters() throws Exception {
+		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		EclipseLinkEntityMappings contextEntityMappings = entityMappings();
 		ConverterHolder ormContextConverterHolder = contextEntityMappings.getConverterHolder();
-		XmlEntityMappings resourceEntityMappings = ormResource().getEntityMappings();
 		
 		assertEquals(0, ormContextConverterHolder.structConvertersSize());
 		assertEquals(0, resourceEntityMappings.getStructConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//add a converter to the context model, check resource model
 		StructConverter contextStructConverter = ormContextConverterHolder.addStructConverter(0);
@@ -566,7 +612,8 @@
 		StructConverter ormContextStructConverter = ormContextStructConverters.next();
 		assertEquals("Foo", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter", ormContextStructConverter.getName());
-	
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//add another converter to the context model, check resource model
 		StructConverter contextStructConverter2 = ormContextConverterHolder.addStructConverter(0);
 		contextStructConverter2.setConverterClass("Foo2");
@@ -585,7 +632,8 @@
 		ormContextStructConverter = ormContextStructConverters.next();
 		assertEquals("Foo", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter", ormContextStructConverter.getName());
-	
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//move a converter in the context model, check resource model
 		ormContextConverterHolder.moveStructConverter(0, 1);
 		
@@ -602,6 +650,7 @@
 		ormContextStructConverter = ormContextStructConverters.next();
 		assertEquals("Foo2", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter2", ormContextStructConverter.getName());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeStructConverter(0);
@@ -614,7 +663,7 @@
 		ormContextStructConverter = ormContextStructConverters.next();
 		assertEquals("Foo2", ormContextStructConverter.getConverterClass());
 		assertEquals("myStructConverter2", ormContextStructConverter.getName());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the context model, check resource model
 		ormContextConverterHolder.removeStructConverter(contextStructConverter2);
@@ -622,5 +671,6 @@
 		assertEquals(0, ormContextConverterHolder.structConvertersSize());
 		assertFalse(ormContextConverterHolder.structConverters().hasNext());
 		assertEquals(0, resourceEntityMappings.getStructConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 	}
 }
\ No newline at end of file
diff --git a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java
index 5078cb0..b3fde89 100644
--- a/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java
+++ b/jpa/tests/org.eclipse.jpt.eclipselink.core.tests/src/org/eclipse/jpt/eclipselink/core/tests/internal/context/orm/EclipseLinkOrmEmbeddableTests.java
@@ -22,6 +22,7 @@
 import org.eclipse.jpt.eclipselink.core.context.StructConverter;
 import org.eclipse.jpt.eclipselink.core.context.TypeConverter;
 import org.eclipse.jpt.eclipselink.core.context.java.EclipseLinkJavaEmbeddable;
+import org.eclipse.jpt.eclipselink.core.internal.context.EclipseLinkPersistenceUnit;
 import org.eclipse.jpt.eclipselink.core.internal.context.orm.ConverterHolder;
 import org.eclipse.jpt.eclipselink.core.internal.context.orm.EclipseLinkOrmEmbeddable;
 import org.eclipse.jpt.eclipselink.core.resource.java.EclipseLinkJPA;
@@ -32,6 +33,7 @@
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlObjectTypeConverter;
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlStructConverter;
 import org.eclipse.jpt.eclipselink.core.resource.orm.XmlTypeConverter;
+import org.eclipse.jpt.utility.internal.CollectionTools;
 import org.eclipse.jpt.utility.internal.iterators.ArrayIterator;
 
 @SuppressWarnings("nls")
@@ -84,7 +86,7 @@
 		this.createEnumAndMembers(EclipseLinkJPA.PACKAGE, "ChangeTrackingType", "ATTRIBUTE, OBJECT, DEFERRED, AUTO;");	
 	}
 	
-	private ICompilationUnit createTestEmbeddableForConverters() throws Exception {
+	private ICompilationUnit createTestEmbeddableForCustomConverters() throws Exception {
 		createConverterAnnotation();
 		return this.createTestType(new DefaultAnnotationWriter() {
 			@Override
@@ -421,15 +423,17 @@
 		assertNull(ormContextEmbeddable.getChangeTracking().getSpecifiedType());
 	}
 	
-	public void testUpdateConverters() throws Exception {
-		createTestEmbeddableForConverters();
+	public void testUpdateCustomConverters() throws Exception {
+		createTestEmbeddableForCustomConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.customConvertersSize());
 		assertEquals(0, resourceEmbeddable.getConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//add a converter to the resource model, check context model
 		XmlConverter resourceConverter = EclipseLinkOrmFactory.eINSTANCE.createXmlConverterImpl();
@@ -443,7 +447,8 @@
 		assertEquals("Foo", ormContextConverter.getConverterClass());
 		assertEquals("myConverter", ormContextConverter.getName());
 		assertEquals(1, resourceEmbeddable.getConverters().size());
-
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
+		
 		//add another converter to the resource model, check context model
 		XmlConverter resourceConverter2 = EclipseLinkOrmFactory.eINSTANCE.createXmlConverterImpl();
 		resourceEmbeddable.getConverters().add(0, resourceConverter2);
@@ -459,6 +464,7 @@
 		assertEquals("Foo", ormContextConverter.getConverterClass());
 		assertEquals("myConverter", ormContextConverter.getName());
 		assertEquals(2, resourceEmbeddable.getConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//move a converter in the resource model, check context model
 		resourceEmbeddable.getConverters().move(0, 1);
@@ -472,6 +478,7 @@
 		assertEquals("Foo2", ormContextConverter.getConverterClass());
 		assertEquals("myConverter2", ormContextConverter.getName());
 		assertEquals(2, resourceEmbeddable.getConverters().size());
+		assertEquals(2, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the resource model, check context model
 		resourceEmbeddable.getConverters().remove(0);
@@ -482,7 +489,7 @@
 		assertEquals("Foo2", ormContextConverter.getConverterClass());
 		assertEquals("myConverter2", ormContextConverter.getName());
 		assertEquals(1, resourceEmbeddable.getConverters().size());
-		
+		assertEquals(1, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//remove a converter from the resource model, check context model
 		resourceEmbeddable.getConverters().remove(resourceConverter2);
@@ -490,10 +497,11 @@
 		assertEquals(0, ormContextConverterHolder.customConvertersSize());
 		assertFalse(ormContextConverterHolder.customConverters().hasNext());
 		assertEquals(0, resourceEmbeddable.getConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 	}
 
-	public void testModifyConverters() throws Exception {
-		createTestEmbeddableForConverters();
+	public void testModifyCustomConverters() throws Exception {
+		createTestEmbeddableForCustomConverters();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
@@ -575,10 +583,11 @@
 	
 	public void testUpdateTypeConverters() throws Exception {
 		createTestEmbeddableForTypeConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.typeConvertersSize());
 		assertEquals(0, resourceEmbeddable.getTypeConverters().size());
@@ -646,10 +655,11 @@
 
 	public void testModifyTypeConverters() throws Exception {
 		createTestEmbeddableForTypeConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.typeConvertersSize());
 		assertEquals(0, resourceEmbeddable.getTypeConverters().size());
@@ -727,10 +737,11 @@
 	
 	public void testUpdateObjectTypeConverters() throws Exception {
 		createTestEmbeddableForObjectTypeConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.objectTypeConvertersSize());
 		assertEquals(0, resourceEmbeddable.getObjectTypeConverters().size());
@@ -798,13 +809,15 @@
 
 	public void testModifyObjectTypeConverters() throws Exception {
 		createTestEmbeddableForObjectTypeConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.objectTypeConvertersSize());
 		assertEquals(0, resourceEmbeddable.getObjectTypeConverters().size());
+		assertEquals(0, CollectionTools.size(persistenceUnit.allConverters()));
 		
 		//add a converter to the context model, check resource model
 		ObjectTypeConverter contextObjectTypeConverter = ormContextConverterHolder.addObjectTypeConverter(0);
@@ -879,10 +892,11 @@
 	
 	public void testUpdateStructConverters() throws Exception {
 		createTestEmbeddableForStructConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.structConvertersSize());
 		assertEquals(0, resourceEmbeddable.getStructConverters().size());
@@ -950,10 +964,11 @@
 
 	public void testModifyStructConverters() throws Exception {
 		createTestEmbeddableForStructConverters();
+		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
+		EclipseLinkPersistenceUnit persistenceUnit = (EclipseLinkPersistenceUnit) persistenceUnit();
 		OrmPersistentType ormPersistentType = entityMappings().addOrmPersistentType(MappingKeys.EMBEDDABLE_TYPE_MAPPING_KEY, FULLY_QUALIFIED_TYPE_NAME);
 		EclipseLinkOrmEmbeddable ormContextEmbeddable = (EclipseLinkOrmEmbeddable) ormPersistentType.getMapping();
 		ConverterHolder ormContextConverterHolder = ormContextEmbeddable.getConverterHolder();
-		XmlEmbeddable resourceEmbeddable = (XmlEmbeddable) ormResource().getEntityMappings().getEmbeddables().get(0);
 		
 		assertEquals(0, ormContextConverterHolder.structConvertersSize());
 		assertEquals(0, resourceEmbeddable.getStructConverters().size());