diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmXmlBindings.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmXmlBindings.java
index 2e2e356..e59c75c 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmXmlBindings.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/context/oxm/OxmXmlBindings.java
@@ -9,7 +9,7 @@
  *******************************************************************************/
 package org.eclipse.jpt.jaxb.eclipselink.core.context.oxm;
 
-import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
+import org.eclipse.jpt.common.utility.iterable.ListIterable;
 import org.eclipse.jpt.jaxb.core.context.JaxbContextNode;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELXmlAccessOrderHolder;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELXmlAccessTypeHolder;
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmJavaTypeImpl.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmJavaTypeImpl.java
index 1339f51..abe2d76 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmJavaTypeImpl.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmJavaTypeImpl.java
@@ -9,7 +9,7 @@
  *******************************************************************************/
 package org.eclipse.jpt.jaxb.eclipselink.core.internal.context.oxm;
 
-import org.eclipse.jpt.common.utility.internal.ClassName;
+import org.eclipse.jpt.common.utility.internal.TypeDeclarationTools;
 import org.eclipse.jpt.jaxb.core.internal.context.AbstractJaxbContextNode;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.oxm.OxmJavaType;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.oxm.OxmXmlBindings;
@@ -82,6 +82,6 @@
 	}
 	
 	public String getSimpleName() {
-		return ClassName.getSimpleName(this.qualifiedName);
+		return TypeDeclarationTools.simpleName(this.qualifiedName);
 	}
 }
diff --git a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmXmlBindingsImpl.java b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmXmlBindingsImpl.java
index d6a88f3..57959d4 100644
--- a/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmXmlBindingsImpl.java
+++ b/jaxb/plugins/org.eclipse.jpt.jaxb.eclipselink.core/src/org/eclipse/jpt/jaxb/eclipselink/core/internal/context/oxm/OxmXmlBindingsImpl.java
@@ -10,10 +10,12 @@
 package org.eclipse.jpt.jaxb.eclipselink.core.internal.context.oxm;
 
 import org.eclipse.jpt.common.core.utility.TextRange;
+import org.eclipse.jpt.common.utility.internal.ClassNameTools;
+import org.eclipse.jpt.common.utility.internal.ObjectTools;
 import org.eclipse.jpt.common.utility.internal.StringTools;
-import org.eclipse.jpt.common.utility.internal.Tools;
-import org.eclipse.jpt.common.utility.internal.iterables.ListIterable;
-import org.eclipse.jpt.common.utility.internal.iterables.LiveCloneListIterable;
+import org.eclipse.jpt.common.utility.internal.TypeDeclarationTools;
+import org.eclipse.jpt.common.utility.internal.iterable.LiveCloneListIterable;
+import org.eclipse.jpt.common.utility.iterable.ListIterable;
 import org.eclipse.jpt.jaxb.core.internal.context.AbstractJaxbContextNode;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELXmlAccessOrder;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELXmlAccessType;
@@ -182,9 +184,22 @@
 		if (className == null) {
 			return null;
 		}
+		
 		if (className.indexOf('.') >= 0) {
 			return className;
 		}
+		
+		// account for arrays
+		String componentClassName = TypeDeclarationTools.elementTypeName(className);
+		
+		if (ClassNameTools.isPrimitive(componentClassName)) {
+			return className;
+		}
+		
+		if (TypeDeclarationTools.isJavaLangClass(className)) {
+			return StringTools.concatenate("java.lang.", className);
+		}
+		
 		return StringTools.concatenate(this.packageName, ".", className);
 	}
 	
@@ -205,7 +220,7 @@
 	
 	public OxmJavaType getJavaType(String qualifiedName) {
 		for (OxmJavaType javaType : getJavaTypes()) {
-			if (Tools.valuesAreEqual(javaType.getQualifiedName(), qualifiedName)) {
+			if (ObjectTools.equals(javaType.getQualifiedName(), qualifiedName)) {
 				return javaType;
 			}
 		}
diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmJavaTypeTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmJavaTypeTests.java
index 37bdb08..e48c32b 100644
--- a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmJavaTypeTests.java
+++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmJavaTypeTests.java
@@ -68,11 +68,20 @@
 		eJavaType.setName("int");
 		oxmResource.save();
 		
-//		assertFileContentsContains("oxm.xml", "name=\"int\"", true);
-//		assertEquals("int", eJavaType.getName());
-//		assertEquals("int", javaType.getSpecifiedName());
-//		assertEquals("int", javaType.getQualifiedName());
-//		assertEquals("int", javaType.getSimpleName());
+		assertFileContentsContains("oxm.xml", "name=\"int\"", true);
+		assertEquals("int", eJavaType.getName());
+		assertEquals("int", javaType.getSpecifiedName());
+		assertEquals("int", javaType.getQualifiedName());
+		assertEquals("int", javaType.getSimpleName());
+		
+		eJavaType.setName("String");
+		oxmResource.save();
+		
+		assertFileContentsContains("oxm.xml", "name=\"String\"", true);
+		assertEquals("String", eJavaType.getName());
+		assertEquals("String", javaType.getSpecifiedName());
+		assertEquals("java.lang.String", javaType.getQualifiedName());
+		assertEquals("String", javaType.getSimpleName());
 		
 		eXmlBindings.setPackageName("test.oxm2");
 		eJavaType.setName("Foo");
@@ -112,11 +121,20 @@
 		javaType.setSpecifiedName("int");
 		oxmResource.save();
 		
-//		assertFileContentsContains("oxm.xml", "name=\"int\"", true);
-//		assertEquals("int", eJavaType.getName());
-//		assertEquals("int", javaType.getSpecifiedName());
-//		assertEquals("int", javaType.getQualifiedName());
-//		assertEquals("int", javaType.getSimpleName());
+		assertFileContentsContains("oxm.xml", "name=\"int\"", true);
+		assertEquals("int", eJavaType.getName());
+		assertEquals("int", javaType.getSpecifiedName());
+		assertEquals("int", javaType.getQualifiedName());
+		assertEquals("int", javaType.getSimpleName());
+		
+		eJavaType.setName("String");
+		oxmResource.save();
+		
+		assertFileContentsContains("oxm.xml", "name=\"String\"", true);
+		assertEquals("String", eJavaType.getName());
+		assertEquals("String", javaType.getSpecifiedName());
+		assertEquals("java.lang.String", javaType.getQualifiedName());
+		assertEquals("String", javaType.getSimpleName());
 		
 		xmlBindings.setPackageName("test.oxm2");
 		javaType.setSpecifiedName("Foo");
diff --git a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmXmlBindingsTests.java b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmXmlBindingsTests.java
index faf2452..fa51981 100644
--- a/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmXmlBindingsTests.java
+++ b/jaxb/tests/org.eclipse.jpt.jaxb.eclipselink.core.tests/src/org/eclipse/jpt/jaxb/eclipselink/core/tests/internal/context/oxm/OxmXmlBindingsTests.java
@@ -10,7 +10,7 @@
 package org.eclipse.jpt.jaxb.eclipselink.core.tests.internal.context.oxm;
 
 import org.eclipse.jpt.common.core.resource.xml.JptXmlResource;
-import org.eclipse.jpt.common.utility.internal.CollectionTools;
+import org.eclipse.jpt.common.utility.internal.iterable.IterableTools;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELJaxbContextRoot;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELXmlAccessOrder;
 import org.eclipse.jpt.jaxb.eclipselink.core.context.ELXmlAccessType;
@@ -327,7 +327,7 @@
 		JptXmlResource oxmResource = oxmFile.getOxmResource();
 		EXmlBindings eXmlBindings = (EXmlBindings) oxmResource.getRootObject();
 		
-		assertEquals(0, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(0, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(0, xmlBindings.getJavaTypesSize());
 		
 		EJavaType eJavaType = OxmFactory.eINSTANCE.createEJavaType();
@@ -337,7 +337,7 @@
 		
 		assertFileContentsContains("oxm.xml", "java-types", true);
 		assertFileContentsContains("oxm.xml", "test.oxm.Foo", true);
-		assertEquals(1, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(1, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(1, xmlBindings.getJavaTypesSize());
 		assertNotNull(xmlBindings.getJavaType("test.oxm.Foo"));
 		
@@ -347,7 +347,7 @@
 		oxmResource.save();
 		
 		assertFileContentsContains("oxm.xml", "test.oxm.Bar", true);
-		assertEquals(2, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(2, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(2, xmlBindings.getJavaTypesSize());
 		assertNotNull(xmlBindings.getJavaType("test.oxm.Bar"));
 		
@@ -356,7 +356,7 @@
 		
 		assertFileContentsContains("oxm.xml", "test.oxm.Foo", false);
 		assertFileContentsContains("oxm.xml", "test.oxm.Bar", true);
-		assertEquals(1, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(1, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(1, xmlBindings.getJavaTypesSize());
 		assertNull(xmlBindings.getJavaType("test.oxm.Foo"));
 		assertNotNull(xmlBindings.getJavaType("test.oxm.Bar"));
@@ -365,7 +365,7 @@
 		oxmResource.save();
 		
 		assertFileContentsContains("oxm.xml", "java-types", false);
-		assertEquals(0, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(0, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(0, xmlBindings.getJavaTypesSize());
 	}
 	
@@ -377,7 +377,7 @@
 		JptXmlResource oxmResource = oxmFile.getOxmResource();
 		EXmlBindings eXmlBindings = (EXmlBindings) oxmResource.getRootObject();
 		
-		assertEquals(0, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(0, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(0, xmlBindings.getJavaTypesSize());
 		
 		OxmJavaType javaType = xmlBindings.addJavaType(0);
@@ -386,7 +386,7 @@
 		
 		assertFileContentsContains("oxm.xml", "java-types", true);
 		assertFileContentsContains("oxm.xml", "test.oxm.Foo", true);
-		assertEquals(1, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(1, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(1, xmlBindings.getJavaTypesSize());
 		assertNotNull(xmlBindings.getJavaType("test.oxm.Foo"));
 		
@@ -395,7 +395,7 @@
 		oxmResource.save();
 		
 		assertFileContentsContains("oxm.xml", "test.oxm.Bar", true);
-		assertEquals(2, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(2, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(2, xmlBindings.getJavaTypesSize());
 		assertNotNull(xmlBindings.getJavaType("test.oxm.Bar"));
 		
@@ -404,7 +404,7 @@
 		
 		assertFileContentsContains("oxm.xml", "test.oxm.Foo", false);
 		assertFileContentsContains("oxm.xml", "test.oxm.Bar", true);
-		assertEquals(1, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(1, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(1, xmlBindings.getJavaTypesSize());
 		assertNull(xmlBindings.getJavaType("test.oxm.Foo"));
 		assertNotNull(xmlBindings.getJavaType("test.oxm.Bar"));
@@ -413,7 +413,7 @@
 		oxmResource.save();
 		
 		assertFileContentsContains("oxm.xml", "java-types", false);
-		assertEquals(0, CollectionTools.size(eXmlBindings.getJavaTypes()));
+		assertEquals(0, IterableTools.size(eXmlBindings.getJavaTypes()));
 		assertEquals(0, xmlBindings.getJavaTypesSize());
 	}
 }
