You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2016/09/10 19:15:23 UTC

incubator-juneau git commit: Standardize XML on _type attributes for JSON and bean types.

Repository: incubator-juneau
Updated Branches:
  refs/heads/master 46f0645bb -> a8d50ab1f


Standardize XML on _type attributes for JSON and bean types.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/a8d50ab1
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/a8d50ab1
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/a8d50ab1

Branch: refs/heads/master
Commit: a8d50ab1f74482f08636ca56f9b27bffdb4af483
Parents: 46f0645
Author: jamesbognar <ja...@gmail.com>
Authored: Sat Sep 10 15:15:19 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sat Sep 10 15:15:19 2016 -0400

----------------------------------------------------------------------
 .../apache/juneau/internal/VersionRange.java    |  1 -
 .../java/org/apache/juneau/xml/XmlParser.java   | 19 +++++++++++--------
 .../apache/juneau/xml/XmlSchemaSerializer.java  | 10 ++--------
 .../org/apache/juneau/xml/XmlSerializer.java    | 13 ++++---------
 .../apache/juneau/html/CommonParserTest.java    |  1 -
 .../juneau/msgpack/MsgPackSerialzierTest.java   |  3 ---
 .../juneau/transforms/CalendarSwapTest.java     |  2 +-
 .../juneau/transforms/ReaderFilterTest.java     |  2 +-
 .../org/apache/juneau/xml/CommonParserTest.java | 20 ++++++++++----------
 .../java/org/apache/juneau/xml/XmlTest.java     |  8 ++++----
 .../resources/xml/testComparisonWithJson.xml    | 10 +++++-----
 .../src/test/resources/xml/testNamespaces.xml   | 10 +++++-----
 12 files changed, 43 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java b/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
index c89e038..e7dc46c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/VersionRange.java
@@ -41,7 +41,6 @@ public class VersionRange {
 			int c = range.indexOf(',');
 			if (c > -1 && (c1 == '[' || c1 == '(') && (c2 == ']' || c2 == ')')) {
 				String v1 = range.substring(1, c), v2 = range.substring(c+1, range.length()-1);
-				//System.err.println("v1=["+v1+"], v2=["+v2+"]");
 				minVersion = new Version(v1);
 				maxVersion = new Version(v2);
 				minExclusive = c1 == '(';

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
index f066c84..4b9b8f7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -73,23 +73,26 @@ public class XmlParser extends ReaderParser {
 		BeanDictionary bd = (pMeta == null ? bc.getBeanDictionary() : pMeta.getBeanDictionary());
 
 		String wrapperAttr = (isRoot && session.isPreserveRootElement()) ? r.getName().getLocalPart() : null;
-		String typeAttr = r.getAttributeValue(null, "type");
+		String typeAttr = r.getAttributeValue(null, bc.getBeanTypePropertyName());
 		int jsonType = getJsonType(typeAttr);
 		String b = r.getAttributeValue(session.getXsiNs(), "nil");
 		if (b == null)
 			b = r.getAttributeValue(null, "nil");
 		boolean isNull = b != null && b.equals("true");
+		String elementName = session.decodeString(r.getLocalName());
 		if (jsonType == 0) {
-			String elementName = session.decodeString(r.getLocalName());
 			if (elementName == null || elementName.equals(currAttr))
 				jsonType = UNKNOWN;
-			else
+			else {
+				typeAttr = elementName;
 				jsonType = getJsonType(elementName);
+			}
 		}
 		if (! sType.canCreateNewInstance(outer)) {
-			String c = r.getAttributeValue(null, bc.getBeanTypePropertyName());
-			if (c != null) {
-				sType = eType = (ClassMeta<T>)bc.getClassMetaFromString(c);
+			if (bd.hasName(typeAttr)) {
+				sType = eType = (ClassMeta<T>)bd.getClassMeta(typeAttr);
+			} else if (bd.hasName(elementName)) {
+				sType = eType = (ClassMeta<T>)bd.getClassMeta(elementName);
 			}
 		}
 		Object o = null;
@@ -186,7 +189,7 @@ public class XmlParser extends ReaderParser {
 		for (int i = 0; i < r.getAttributeCount(); i++) {
 			String a = r.getAttributeLocalName(i);
 			// TODO - Need better handling of namespaces here.
-			if (! (a.equals("type"))) {
+			if (! (a.equals(bc.getBeanTypePropertyName()))) {
 				K key = session.trim(convertAttrToType(session, m, a, keyType));
 				V value = session.trim(convertAttrToType(session, m, r.getAttributeValue(i), valueType));
 				setName(valueType, value, key);
@@ -374,7 +377,7 @@ public class XmlParser extends ReaderParser {
 			for (int i = 0; i < r.getAttributeCount(); i++) {
 				String key = session.decodeString(r.getAttributeLocalName(i));
 				String val = r.getAttributeValue(i);
-				if (! key.equals("type"))
+				if (! key.equals(bc.getBeanTypePropertyName()))
 					m.put(key, val);
 			}
 		}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
index 601e9e5..50dcfdc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
@@ -354,7 +354,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
 				if (session.isAddJsonTypeAttrs() || (session.isAddJsonStringTypeAttrs() && base.equals("string"))) {
 					w.cTag().nl();
 					w.oTag(i+3, "attribute")
-						.attr("name", "type")
+						.attr("name", bc.getBeanTypePropertyName())
 						.attr("type", "string")
 						.ceTag().nl();
 					w.eTag(i+2, "extension").nl();
@@ -492,18 +492,12 @@ public class XmlSchemaSerializer extends XmlSerializer {
 					w.eTag(i+1, "sequence").nl();
 				}
 
-				if (session.isAddBeanTypeProperties()) {
+				if (session.isAddBeanTypeProperties() || session.isAddJsonTypeAttrs()) {
 					w.oTag(i+1, "attribute")
 						.attr("name", bc.getBeanTypePropertyName())
 						.attr("type", "string")
 						.ceTag().nl();
 				}
-				if (session.isAddJsonTypeAttrs()) {
-					w.oTag(i+1, "attribute")
-						.attr("name", "type")
-						.attr("type", "string")
-						.ceTag().nl();
-				}
 			}
 
 			w.eTag(i, "complexType").nl();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index 32f618e..b3e6b83 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -343,9 +343,7 @@ public class XmlSerializer extends WriterSerializer {
 		String typeName = null;
 		if (session.isAddBeanTypeProperties()) {
 			if (o != null && ! eType.equals(aType))
-				typeName = aType.toString();
-			else if (o == null)
-				typeName = eType.toString();
+				typeName = aType.getDictionaryName();
 		}
 
 		// char '\0' is interpreted as null.
@@ -372,12 +370,9 @@ public class XmlSerializer extends WriterSerializer {
 		else
 			ts = "string";
 
-
 		// Is there a name associated with this bean?
 		if (elementName == null)
 			elementName = sType.getDictionaryName();
-		if (elementName == null)
-			elementName = aType.getDictionaryName();
 
 		// If the value is null then it's either going to be <null/> or <XmlSerializer nil='true'/>
 		// depending on whether the element has a name.
@@ -427,9 +422,9 @@ public class XmlSerializer extends WriterSerializer {
 				if (xsiNs != null)
 					out.attr("xmlns", xsiNs.name, xsiNs.uri);
 			}
-			if (elementName != null && session.isAddJsonTypeAttrs() && (session.isAddJsonStringTypeAttrs() || ! ts.equals("string")))
-				out.attr(dns, "type", ts);
-			if (typeName != null)
+			if (typeName == null && elementName != null && session.isAddJsonTypeAttrs() && (session.isAddJsonStringTypeAttrs() || ! ts.equals("string")))
+				typeName = ts;
+			if (typeName != null && ! typeName.equals(elementName))
 				out.attr(dns, bc.getBeanTypePropertyName(), typeName);
 			if (o == null) {
 				if (! isNullTag)

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java b/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
index ca1da18..abc948f 100755
--- a/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/html/CommonParserTest.java
@@ -66,7 +66,6 @@ public class CommonParserTest {
 		t2.add(new A3("name1","value1"));
 		t1.list = t2;
 		in = new HtmlSerializer().setProperty(SERIALIZER_addBeanTypeProperties, true).serialize(t1);
-		System.err.println(in);
 		t1 = (A1)p.parse(in, Object.class);
 		assertEquals("value1", t1.list.get(1).value);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java b/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
index f90bced..450d7ee 100755
--- a/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/msgpack/MsgPackSerialzierTest.java
@@ -201,9 +201,6 @@ public class MsgPackSerialzierTest {
 		test(new ObjectMap("{1:1}"), "81 A1 31 01");
 		test(new ObjectMap("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1}"), "8F A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01");
 		test(new ObjectMap("{1:1,2:1,3:1,4:1,5:1,6:1,7:1,8:1,9:1,a:1,b:1,c:1,d:1,e:1,f:1,g:1}"), "DE 00 10 A1 31 01 A1 32 01 A1 33 01 A1 34 01 A1 35 01 A1 36 01 A1 37 01 A1 38 01 A1 39 01 A1 61 01 A1 62 01 A1 63 01 A1 64 01 A1 65 01 A1 66 01 A1 67 01");
-
-		byte[] b = MsgPackSerializer.DEFAULT.serialize(new Person());
-		System.err.println(TestUtils.toReadableBytes2(b));
 	}
 
 	public static class Person {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
index df82751..e989d98 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
@@ -419,7 +419,7 @@ public class CalendarSwapTest {
 		Class<?> f = CalendarMapSwap.class;
 		WriterSerializer s = new XmlSerializer.SimpleXmlJsonSq().addPojoSwaps(f);
 		ReaderParser p = new XmlParser().addPojoSwaps(f);
-		doTest(s, p, true, "<object><time type='number'>-2172116928000</time><timeZone>PST</timeZone></object>");
+		doTest(s, p, true, "<object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object>");
 	}
 
 	//====================================================================================================

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
index 99dbf35..0398568 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -40,7 +40,7 @@ public class ReaderFilterTest {
 		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
 
 		s.addPojoSwaps(ReaderSwap.Xml.class);
-		r = new StringReader("<object><foo type='string'>bar</foo><baz type='string'>quz</baz></object>");
+		r = new StringReader("<object><foo _type='string'>bar</foo><baz _type='string'>quz</baz></object>");
 		m = new HashMap<String,Object>();
 		m.put("X", r);
 		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
index d9520e1..7081e83 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java
@@ -32,20 +32,20 @@ public class CommonParserTest {
 		ReaderParser p = XmlParser.DEFAULT;
 
 		Map m = null;
-		m = (Map)p.parse("<object><a type='number'>1</a></object>", Object.class);
+		m = (Map)p.parse("<object><a _type='number'>1</a></object>", Object.class);
 		assertEquals(1, m.get("a"));
-		m = (Map)p.parse("<object><a type='number'>1</a><b type='string'>foo bar</b></object>", Object.class);
+		m = (Map)p.parse("<object><a _type='number'>1</a><b _type='string'>foo bar</b></object>", Object.class);
 		assertEquals(1, m.get("a"));
 		assertEquals("foo bar", m.get("b"));
-		m = (Map)p.parse("<object><a type='number'>1</a><b type='string'>foo bar</b><c type='boolean'>false</c></object>", Object.class);
+		m = (Map)p.parse("<object><a _type='number'>1</a><b _type='string'>foo bar</b><c _type='boolean'>false</c></object>", Object.class);
 		assertEquals(1, m.get("a"));
 		assertEquals(false, m.get("c"));
-		m = (Map)p.parse("   <object>	<a type='number'>	1	</a>	<b type='string'>	foo	</b>	<c type='boolean'>	false 	</c>	</object>	", Object.class);
+		m = (Map)p.parse("   <object>	<a _type='number'>	1	</a>	<b _type='string'>	foo	</b>	<c _type='boolean'>	false 	</c>	</object>	", Object.class);
 		assertEquals(1, m.get("a"));
 		assertEquals("foo", m.get("b"));
 		assertEquals(false, m.get("c"));
 
-		m = (Map)p.parse("<object><x type='string'>org.apache.juneau.test.Person</x><addresses type='array'><object><x type='string'>org.apache.juneau.test.Address</x><city type='string'>city A</city><state type='string'>state A</state><street type='string'>street A</street><zip type='number'>12345</zip></object></addresses></object>", Object.class);
+		m = (Map)p.parse("<object><x _type='string'>org.apache.juneau.test.Person</x><addresses _type='array'><object><x _type='string'>org.apache.juneau.test.Address</x><city _type='string'>city A</city><state _type='string'>state A</state><street _type='string'>street A</street><zip _type='number'>12345</zip></object></addresses></object>", Object.class);
 		assertEquals("org.apache.juneau.test.Person", m.get("x"));
 		List l = (List)m.get("addresses");
 		assertNotNull(l);
@@ -57,12 +57,12 @@ public class CommonParserTest {
 		assertEquals("street A", m.get("street"));
 		assertEquals(12345, m.get("zip"));
 
-		ObjectList jl = (ObjectList)p.parse("<array><object><attribute type='string'>value</attribute></object><object><attribute type='string'>value</attribute></object></array>", Object.class);
+		ObjectList jl = (ObjectList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
 		assertEquals("value", jl.getObjectMap(0).getString("attribute"));
 		assertEquals("value", jl.getObjectMap(1).getString("attribute"));
 
 		try {
-			jl = (ObjectList)p.parse("<array><object><attribute type='string'>value</attribute></object><object><attribute type='string'>value</attribute></object></array>", Object.class);
+			jl = (ObjectList)p.parse("<array><object><attribute _type='string'>value</attribute></object><object><attribute _type='string'>value</attribute></object></array>", Object.class);
 			assertEquals("value", jl.getObjectMap(0).getString("attribute"));
 			assertEquals("value", jl.getObjectMap(1).getString("attribute"));
 		} catch (Exception e) {
@@ -112,7 +112,7 @@ public class CommonParserTest {
 		assertEquals(t.a, 1);
 		assertEquals(t.b, 2);
 
-		in =  "<object><a>1</a><unknown><object><a type='string'>foo</a></object></unknown><b>2</b></object>";
+		in =  "<object><a>1</a><unknown><object><a _type='string'>foo</a></object></unknown><b>2</b></object>";
 		t = p.parse(in, B.class);
 		assertEquals(t.a, 1);
 		assertEquals(t.b, 2);
@@ -137,7 +137,7 @@ public class CommonParserTest {
 
 		ReaderParser p = XmlParser.DEFAULT;
 
-		String in = "<object><ints type='array'><number>1</number><number>2</number><number>3</number></ints><beans type='array'><object><a type='number'>1</a><b type='number'>2</b></object></beans></object>";
+		String in = "<object><ints _type='array'><number>1</number><number>2</number><number>3</number></ints><beans _type='array'><object><a _type='number'>1</a><b _type='number'>2</b></object></beans></object>";
 		C t = p.parse(in, C.class);
 		assertEquals(t.getInts().size(), 3);
 		assertEquals(t.getBeans().get(0).b, 2);
@@ -170,7 +170,7 @@ public class CommonParserTest {
 			}
 		);
 
-		String in = "<object><a type='number'>1</a><unknownProperty type='string'>foo</unknownProperty><b type='number'>2</b></object>";
+		String in = "<object><a _type='number'>1</a><unknownProperty _type='string'>foo</unknownProperty><b _type='number'>2</b></object>";
 		p.parse(in, B.class);
 		assertEquals(1, events.size());
 		// XML parser may or may not support line numbers.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
index 3c8b371..5272651 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/XmlTest.java
@@ -73,9 +73,9 @@ public class XmlTest {
 	@Test
 	public void testBeanNameAnnotation() throws Exception {
 		String e =
-			  "<Person1 type='object'>\n"
+			  "<Person1 _type='object'>\n"
 			+ "	<name>John Smith</name>\n"
-			+ "	<age type='number'>123</age>\n"
+			+ "	<age _type='number'>123</age>\n"
 			+ "</Person1>\n";
 		String r = new XmlSerializer.SimpleXmlJsonSq().setProperty(SERIALIZER_useIndentation, true).serialize(new Person1("John Smith", 123));
 		assertEquals(e, r);
@@ -104,8 +104,8 @@ public class XmlTest {
 	@Test
 	public void testTrimNulls() throws Exception {
 		String e =
-			  "<Person1 type='object'>\n"
-			+ "	<age type='number'>123</age>\n"
+			  "<Person1 _type='object'>\n"
+			+ "	<age _type='number'>123</age>\n"
 			+ "</Person1>\n";
 		String r = new XmlSerializer.SimpleXmlJsonSq().setProperty(SERIALIZER_useIndentation, true).serialize(new Person1(null, 123));
 		assertEquals(e, r);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/resources/xml/testComparisonWithJson.xml b/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
index b79f07a..8994736 100755
--- a/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
+++ b/juneau-core/src/test/resources/xml/testComparisonWithJson.xml
@@ -15,18 +15,18 @@
 -->
 <object>
 	<name>John Smith</name>
-	<address type='object'>
+	<address _type='object'>
 		<streetAddress>21 2nd Street</streetAddress>
 		<city>New York</city>
 		<state>NY</state>
-		<postalCode type='number'>10021</postalCode>
+		<postalCode _type='number'>10021</postalCode>
 	</address>
-	<phoneNumbers type='array'>
+	<phoneNumbers _type='array'>
 		<string>212 555-1111</string>
 		<string>212 555-2222</string>
 	</phoneNumbers>
 	<additionalInfo nil='true'/>
-	<remote type='boolean'>false</remote>
-	<height type='number'>62.4</height>
+	<remote _type='boolean'>false</remote>
+	<height _type='number'>62.4</height>
 	<fico_x0020_score>_x0020_&gt; 640</fico_x0020_score>
 </object>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a8d50ab1/juneau-core/src/test/resources/xml/testNamespaces.xml
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/resources/xml/testNamespaces.xml b/juneau-core/src/test/resources/xml/testNamespaces.xml
index b09313e..17026fb 100755
--- a/juneau-core/src/test/resources/xml/testNamespaces.xml
+++ b/juneau-core/src/test/resources/xml/testNamespaces.xml
@@ -15,18 +15,18 @@
 -->
 <object xmlns='http://www.ibm.com' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
 	<name>John Smith</name>
-	<address type='object'>
+	<address _type='object'>
 		<streetAddress>21 2nd Street</streetAddress>
 		<city>New York</city>
 		<state>NY</state>
-		<postalCode type='number'>10021</postalCode>
+		<postalCode _type='number'>10021</postalCode>
 	</address>
-	<phoneNumbers type='array'>
+	<phoneNumbers _type='array'>
 		<string>212 555-1111</string>
 		<string>212 555-2222</string>
 	</phoneNumbers>
 	<additionalInfo xsi:nil='true'/>
-	<remote type='boolean'>false</remote>
-	<height type='number'>62.4</height>
+	<remote _type='boolean'>false</remote>
+	<height _type='number'>62.4</height>
 	<fico_x0020_score>_x0020_&gt; 640</fico_x0020_score>
 </object>