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 2017/01/21 22:25:03 UTC
[04/21] incubator-juneau git commit: HTML and XML serialization
support improvements.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/html/CommonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/html/CommonTest.java b/juneau-core/src/test/java/org/apache/juneau/html/CommonTest.java
index 1549dce..e5f316d 100755
--- a/juneau-core/src/test/java/org/apache/juneau/html/CommonTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/html/CommonTest.java
@@ -42,13 +42,13 @@ public class CommonTest {
s.setProperty(SERIALIZER_trimNullProperties, false);
String r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>s1</string></td><td><null/></td></tr><tr><td><string>s2</string></td><td><string>s2</string></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>s1</td><td><null/></td></tr><tr><td>s2</td><td>s2</td></tr></table>", r);
t2 = p.parse(r, A.class);
assertEqualObjects(t1, t2);
s.setProperty(SERIALIZER_trimNullProperties, true);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>s2</string></td><td><string>s2</string></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table>", r);
t2 = p.parse(r, A.class);
assertEqualObjects(t1, t2);
}
@@ -75,13 +75,13 @@ public class CommonTest {
s.setProperty(SERIALIZER_trimEmptyMaps, false);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr></table></td></tr><tr><td><string>f2</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f2a</string></td><td><null/></td></tr><tr><td><string>f2b</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>s2</string></td><td><string>s2</string></td></tr></table></td></tr></table></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><table><tr><th>key</th><th>value</th></tr></table></td></tr><tr><td>f2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>f2a</td><td><null/></td></tr><tr><td>f2b</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table></td></tr></table></td></tr></table>", r);
t2 = p.parse(r, B.class);
assertEqualObjects(t1, t2);
s.setProperty(SERIALIZER_trimEmptyMaps, true);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f2</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f2a</string></td><td><null/></td></tr><tr><td><string>f2b</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>s2</string></td><td><string>s2</string></td></tr></table></td></tr></table></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>f2a</td><td><null/></td></tr><tr><td>f2b</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table></td></tr></table></td></tr></table>", r);
t2 = p.parse(r, B.class);
assertNull(t2.f1);
}
@@ -109,13 +109,13 @@ public class CommonTest {
s.setProperty(SERIALIZER_trimEmptyCollections, false);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><ul></ul></td></tr><tr><td><string>f2</string></td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td><string>s2</string></td></tr></table></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><ul></ul></td></tr><tr><td>f2</td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td>s2</td></tr></table></td></tr></table>", r);
t2 = p.parse(r, C.class);
assertEqualObjects(t1, t2);
s.setProperty(SERIALIZER_trimEmptyCollections, true);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f2</string></td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td><string>s2</string></td></tr></table></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f2</td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td>s2</td></tr></table></td></tr></table>", r);
t2 = p.parse(r, C.class);
assertNull(t2.f1);
}
@@ -143,13 +143,45 @@ public class CommonTest {
s.setProperty(SERIALIZER_trimEmptyCollections, false);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><ul></ul></td></tr><tr><td><string>f2</string></td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td><string>s2</string></td></tr></table></td></tr></table>", r);
+ assertEquals(
+ "<table>"
+ +"<tr><th>key</th><th>value</th></tr>"
+ +"<tr>"
+ +"<td>f1</td>"
+ +"<td><ul></ul></td>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>f2</td>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>s2</th></tr>"
+ +"<tr><null/></tr>"
+ +"<tr><td>s2</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"</table>",
+ r);
t2 = p.parse(r, D.class);
assertEqualObjects(t1, t2);
s.setProperty(SERIALIZER_trimEmptyCollections, true);
r = s.serialize(t1);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f2</string></td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td><string>s2</string></td></tr></table></td></tr></table>", r);
+ assertEquals(
+ "<table>"
+ +"<tr><th>key</th><th>value</th></tr>"
+ +"<tr>"
+ +"<td>f2</td>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>s2</th></tr>"
+ +"<tr><null/></tr>"
+ +"<tr><td>s2</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"</table>",
+ r);
t2 = p.parse(r, D.class);
assertNull(t2.f1);
}
@@ -175,7 +207,68 @@ public class CommonTest {
String r;
r = s.serialize(t);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>x1</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><number>1</number></td></tr></table></td></tr><tr><td><string>x2</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><number>1</number></td></tr></table></td></tr><tr><td><string>x3</string></td><td><table _type='array'><tr><th>f1</th></tr><tr><td><number>1</number></td></tr></table></td></tr><tr><td><string>x4</string></td><td><table _type='array'><tr><th>f1</th></tr><tr><td><number>1</number></td></tr></table></td></tr><tr><td><string>x5</string></td><td><table _type='array'><tr><th>f1</th></tr><tr><td><number>1</number></td></tr></table></td></tr><tr><td><string>x6</string></td><td><table _type='array'><tr><th>f1</th></tr><t
r><td><number>1</number></td></tr></table></td></tr></table>", r);
+ assertEquals(
+ "<table>"
+ +"<tr>"
+ +"<th>key</th>"
+ +"<th>value</th>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>x1</td>"
+ +"<td>"
+ +"<table>"
+ +"<tr><th>key</th><th>value</th></tr>"
+ +"<tr><td>f1</td><td>1</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>x2</td>"
+ +"<td>"
+ +"<table>"
+ +"<tr><th>key</th><th>value</th></tr>"
+ +"<tr><td>f1</td><td>3</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>x3</td>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>f1</th></tr>"
+ +"<tr><td>1</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>x4</td>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>f1</th></tr>"
+ +"<tr><td>1</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>x5</td>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>f1</th></tr>"
+ +"<tr><td><number>5</number></td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"<tr>"
+ +"<td>x6</td>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>f1</th></tr>"
+ +"<tr><td><number>7</number></td></tr>"
+ +"</table>"
+ +"</td>"
+ +"</tr>"
+ +"</table>",
+ r);
r = s.getSchemaSerializer().serialize(new E1());
assertTrue(r.indexOf("f2") == -1);
}
@@ -183,15 +276,15 @@ public class CommonTest {
public static class E1 {
@BeanProperty(properties="f1") public E2 x1 = new E2();
@BeanProperty(properties="f1") public Map<String,Integer> x2 = new LinkedHashMap<String,Integer>() {{
- put("f1",1); put("f2",2);
+ put("f1",3); put("f2",4);
}};
@BeanProperty(properties="f1") public E2[] x3 = {new E2()};
@BeanProperty(properties="f1") public List<E2> x4 = new LinkedList<E2>() {{
add(new E2());
}};
- @BeanProperty(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f2",2)};
+ @BeanProperty(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",5).append("f2",6)};
@BeanProperty(properties="f1") public List<ObjectMap> x6 = new LinkedList<ObjectMap>() {{
- add(new ObjectMap().append("f1",1).append("f2",2));
+ add(new ObjectMap().append("f1",7).append("f2",8));
}};
}
@@ -211,7 +304,19 @@ public class CommonTest {
t.x1.add(new F());
l.add(t);
String html = s.serialize(l);
- assertEquals("<table _type='array'><tr><th>x1</th><th>x2</th></tr><tr><td><table _type='array'><tr><th>x2</th></tr><tr><td><number>2</number></td></tr></table></td><td><number>2</number></td></tr></table>", html);
+ assertEquals(
+ "<table _type='array'>"
+ +"<tr><th>x1</th><th>x2</th></tr>"
+ +"<tr>"
+ +"<td>"
+ +"<table _type='array'>"
+ +"<tr><th>x2</th></tr>"
+ +"<tr><td>2</td></tr>"
+ +"</table>"
+ +"</td>"
+ +"<td>2</td>"
+ +"</tr>"
+ +"</table>", html);
}
public static class F {
@@ -428,10 +533,10 @@ public class CommonTest {
private String strip(String html) {
return html
- .replace("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr>", "")
+ .replace("<table><tr><th>key</th><th>value</th></tr>", "")
.replace("</table>", "")
- .replace("<tr><td><string>", "\n[")
- .replace("</string></td><td>", "]=")
+ .replace("<tr><td>", "\n[")
+ .replace("</td><td>", "]=")
.replace("</td></tr>", "");
}
@@ -492,7 +597,7 @@ public class CommonTest {
}
s.setProperty(SERIALIZER_ignoreRecursions, true);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>name</string></td><td><string>foo</string></td></tr><tr><td><string>r2</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>name</string></td><td><string>bar</string></td></tr><tr><td><string>r3</string></td><td><table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>name</string></td><td><string>baz</string></td></tr></table></td></tr></table></td></tr></table>",
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>foo</td></tr><tr><td>r2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>bar</td></tr><tr><td>r3</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>baz</td></tr></table></td></tr></table></td></tr></table>",
s.serialize(r1));
// Make sure this doesn't blow up.
@@ -523,7 +628,14 @@ public class CommonTest {
a.setF1("J");
a.setF2(100);
a.setF3(true);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><string>J</string></td></tr><tr><td><string>f2</string></td><td><number>100</number></td></tr><tr><td><string>f3</string></td><td><boolean>true</boolean></td></tr></table>", s.serialize(a));
+ assertEquals(
+ "<table>"
+ +"<tr><th>key</th><th>value</th></tr>"
+ +"<tr><td>f1</td><td>J</td></tr>"
+ +"<tr><td>f2</td><td>100</td></tr>"
+ +"<tr><td>f3</td><td>true</td></tr>"
+ +"</table>",
+ s.serialize(a));
}
public static class J {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java b/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
index d9ee860..435f85f 100755
--- a/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
@@ -36,7 +36,7 @@ public class HtmlTest {
t = new Object[] {new A1(), new A1()};
html = s.serialize(t);
- assertEquals("<table _type='array'><tr><th>f1</th></tr><tr><td><string>f1</string></td></tr><tr><td><string>f1</string></td></tr></table>", html);
+ assertEquals("<table _type='array'><tr><th>f1</th></tr><tr><td>f1</td></tr><tr><td>f1</td></tr></table>", html);
}
@@ -189,11 +189,11 @@ public class HtmlTest {
+"\n[f7]=<a href='http://www.apache.org/f7/x7'>http://www.apache.org/f7/x7</a>"
+"\n[f8]=<a href='/cr/f8/x8'>f8/x8</a>"
+"\n[f9]=<a href='/cr/f9/x9'>f9/x9</a>"
- +"\n[fa]=<string>http://www.apache.org/fa/xa#MY_LABEL</string>"
- +"\n[fb]=<string>http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar</string>"
- +"\n[fc]=<string>http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL</string>"
- +"\n[fd]=<string>http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar</string>"
- +"\n[fe]=<string>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</string>";
+ +"\n[fa]=http://www.apache.org/fa/xa#MY_LABEL"
+ +"\n[fb]=http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar"
+ +"\n[fc]=http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL"
+ +"\n[fd]=http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar"
+ +"\n[fe]=http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL";
assertEquals(expected, r);
s.setProperty(HTML_detectLinksInStrings, true);
@@ -220,10 +220,10 @@ public class HtmlTest {
private String strip(String html) {
return html
- .replace("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr>", "")
+ .replace("<table><tr><th>key</th><th>value</th></tr>", "")
.replace("</table>", "")
- .replace("<tr><td><string>", "\n[")
- .replace("</string></td><td>", "]=")
+ .replace("<tr><td>", "\n[")
+ .replace("</td><td>", "]=")
.replace("</td></tr>", "");
}
@@ -242,7 +242,7 @@ public class HtmlTest {
o = new B2();
r = s.serialize(o);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><f1></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><f1></td></tr></table>", r);
}
@Html(asPlainText=true)
@@ -274,7 +274,7 @@ public class HtmlTest {
o = new C2();
r = s.serialize(o);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>f1</string></td><td><string><f1></string></td></tr></table>", r);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><f1></td></tr></table>", r);
}
@Html(asXml=true)
@@ -300,7 +300,7 @@ public class HtmlTest {
m.put("foo", "bar");
o = new ObjectList().append(m);
r = s.serialize(o);
- assertEquals("<ul><li><table _type='object'><tr><td><string>foo</string></td><td><string>bar</string></td></tr></table></li></ul>", r);
+ assertEquals("<ul><li><table><tr><td>foo</td><td>bar</td></tr></table></li></ul>", r);
}
@Html(noTables=true, noTableHeaders=true)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/json/JsonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/json/JsonParserTest.java b/juneau-core/src/test/java/org/apache/juneau/json/JsonParserTest.java
index 19eee59..49b359c 100755
--- a/juneau-core/src/test/java/org/apache/juneau/json/JsonParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/json/JsonParserTest.java
@@ -108,12 +108,6 @@ public class JsonParserTest {
}
@Test
- public void testCognosJson() throws Exception {
- String json = TestUtils.readFile(getClass().getResource("/json/BrokenCognosOutput.json").getPath());
- p.parse(json, ObjectMap.class);
- }
-
- @Test
public void testStrictMode() throws Exception {
JsonParser p = sp;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
index 893bf3f..0f44984 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
@@ -81,14 +81,14 @@ public class BeanMapTest {
public String f2;
}
- public static class B1Swap extends PojoSwap<B1,ObjectMap> {
+ public static class B1Swap extends MapSwap<B1> {
@Override /* PojoSwap */
public ObjectMap swap(BeanSession session, B1 b1) {
return new ObjectMap().append("type", "b1").append("f1", b1.f1);
}
}
- public static class B2Swap extends PojoSwap<B2,ObjectMap> {
+ public static class B2Swap extends MapSwap<B2> {
@Override /* PojoSwap */
public ObjectMap swap(BeanSession session, B2 b2) {
return new ObjectMap().append("type", "b2").append("f1", b2.f1);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/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 72889ef..16a79c8 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
@@ -164,7 +164,7 @@ public class CalendarSwapTest {
@Test
public void testDefaultStringXml() throws Exception {
Class<?> f = CalendarSwap.ToString.class;
- WriterSerializer s = new XmlSerializer.SimpleSq().addPojoSwaps(f);
+ WriterSerializer s = new XmlSerializer.Sq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
doTest(s, p, true, "<string>Sun Mar 03 10:11:12 PST 1901</string>");
}
@@ -231,7 +231,7 @@ public class CalendarSwapTest {
@Test
public void testISO8601DTXml() throws Exception {
Class<?> f = CalendarSwap.ISO8601DT.class;
- WriterSerializer s = new XmlSerializer.SimpleSq().addPojoSwaps(f);
+ WriterSerializer s = new XmlSerializer.Sq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
doTest(s, p, true, "<string>1901-03-03T10:11:12-08:00</string>");
}
@@ -297,7 +297,7 @@ public class CalendarSwapTest {
@Test
public void testRFC2822DTXml() throws Exception {
Class<?> f = CalendarSwap.RFC2822DTZ.class;
- WriterSerializer s = new XmlSerializer.SimpleSq().addPojoSwaps(f);
+ WriterSerializer s = new XmlSerializer.Sq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
doTest(s, p, true, "<string>Sun, 03 Mar 1901 18:11:12 GMT</string>");
}
@@ -363,7 +363,7 @@ public class CalendarSwapTest {
@Test
public void testDefaultLongXml() throws Exception {
Class<?> f = CalendarLongSwap.class;
- WriterSerializer s = new XmlSerializer.SimpleSq().addPojoSwaps(f);
+ WriterSerializer s = new XmlSerializer.Sq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
doTest(s, p, true, "<number>-2172116928000</number>");
}
@@ -429,7 +429,7 @@ public class CalendarSwapTest {
@Test
public void testDefaultMapXml() throws Exception {
Class<?> f = CalendarMapSwap.class;
- WriterSerializer s = new XmlSerializer.SimpleXmlJsonSq().addPojoSwaps(f);
+ WriterSerializer s = new XmlSerializer.Sq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
doTest(s, p, true, "<object><time _type='number'>-2172116928000</time><timeZone>PST</timeZone></object>");
}
@@ -442,7 +442,7 @@ public class CalendarSwapTest {
Class<?> f = CalendarMapSwap.class;
WriterSerializer s = new HtmlSerializer.Sq().addPojoSwaps(f).setProperty(HTML_addKeyValueTableHeaders, true);
ReaderParser p = new HtmlParser().addPojoSwaps(f);
- doTest(s, p, true, "<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>time</string></td><td><number>-2172116928000</number></td></tr><tr><td><string>timeZone</string></td><td><string>PST</string></td></tr></table>");
+ doTest(s, p, true, "<table><tr><th>key</th><th>value</th></tr><tr><td>time</td><td><number>-2172116928000</number></td></tr><tr><td>timeZone</td><td>PST</td></tr></table>");
}
//====================================================================================================
@@ -495,7 +495,7 @@ public class CalendarSwapTest {
@Test
public void testDefaultMediumXml() throws Exception {
Class<?> f = CalendarSwap.DateMedium.class;
- WriterSerializer s = new XmlSerializer.SimpleSq().addPojoSwaps(f);
+ WriterSerializer s = new XmlSerializer.Sq().addPojoSwaps(f);
ReaderParser p = new XmlParser().addPojoSwaps(f);
doTest(s, p, false, "<string>Mar 3, 1901</string>");
}
@@ -567,7 +567,7 @@ public class CalendarSwapTest {
//====================================================================================================
@Test
public void testBeanProperyFilterXml() throws Exception {
- WriterSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ WriterSerializer s = XmlSerializer.DEFAULT_SQ;
ReaderParser p = XmlParser.DEFAULT;
Calendar c = testDate;
@@ -591,7 +591,7 @@ public class CalendarSwapTest {
Calendar c = testDate;
A t = new A(c);
String html = s.serialize(t);
- assertEquals("<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>d1</string></td><td><string>1901-03-03T18:11:12Z</string></td></tr><tr><td><string>d2</string></td><td><string>Sun, 03 Mar 1901 18:11:12 GMT</string></td></tr><tr><td><string>d3</string></td><td><number>-2172116928000</number></td></tr></table>", html);
+ assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>d1</td><td>1901-03-03T18:11:12Z</td></tr><tr><td>d2</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr><tr><td>d3</td><td>-2172116928000</td></tr></table>", html);
t = p.parse(html, A.class);
assertEquals(t.d1.getTime().getTime(), c.getTime().getTime());
assertEquals(t.getD2().getTime().getTime(), c.getTime().getTime());
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/utils/FilteredMapTest.java b/juneau-core/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
index 48949da..ec75da3 100755
--- a/juneau-core/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/utils/FilteredMapTest.java
@@ -30,16 +30,21 @@ public class FilteredMapTest {
// testBasic
//====================================================================================================
@Test
+ @SuppressWarnings("unchecked")
public void testBasic() throws Exception {
ObjectMap m = new ObjectMap("{a:'1',b:'2'}");
- FilteredMap<String,Object> m2 = new FilteredMap<String,Object>(m, new String[]{"a"});
+
+ ClassMeta<Map<String,Object>> cm = BeanContext.DEFAULT.getMapClassMeta(Map.class, String.class, Object.class);
+ ClassMeta<Map<String,String>> cm2 = BeanContext.DEFAULT.getMapClassMeta(Map.class, String.class, String.class);
+
+ FilteredMap<String,Object> m2 = new FilteredMap<String,Object>(cm, m, new String[]{"a"});
assertObjectEquals("{a:'1'}", m2);
m2.entrySet().iterator().next().setValue("3");
assertObjectEquals("{a:'3'}", m2);
- try { m3 = new FilteredMap<String,String>(null, new String[0]); fail(); } catch (IllegalArgumentException e) {}
- try { m3 = new FilteredMap<String,Object>(m, null); fail(); } catch (IllegalArgumentException e) {}
+ try { m3 = new FilteredMap<String,String>(cm2, null, new String[0]); fail(); } catch (IllegalArgumentException e) {}
+ try { m3 = new FilteredMap<String,Object>(cm, m, null); fail(); } catch (IllegalArgumentException e) {}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/BasicXmlTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
new file mode 100644
index 0000000..182ffdd
--- /dev/null
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
@@ -0,0 +1,1505 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+// * with the License. You may obtain a copy of the License at *
+// * *
+// * http://www.apache.org/licenses/LICENSE-2.0 *
+// * *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+// * specific language governing permissions and limitations under the License. *
+// ***************************************************************************************************************************
+package org.apache.juneau.xml;
+
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.xml.annotation.*;
+import org.junit.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+
+@RunWith(Parameterized.class)
+@SuppressWarnings({"javadoc","serial"})
+public class BasicXmlTest {
+
+ private static final XmlSerializer
+ s1 = XmlSerializer.DEFAULT_SQ,
+ s2 = XmlSerializer.DEFAULT_SQ_READABLE,
+ s3 = XmlSerializer.DEFAULT_NS_SQ;
+ private static final XmlParser parser = XmlParser.DEFAULT;
+
+ @Parameterized.Parameters
+ public static Collection<Object[]> getParameters() {
+ return Arrays.asList(new Object[][] {
+
+ {
+ "SimpleTypes-1",
+ "foo",
+ "<string>foo</string>",
+ "<string>foo</string>\n",
+ "<string>foo</string>",
+ },
+ {
+ "SimpleTypes-2",
+ true,
+ "<boolean>true</boolean>",
+ "<boolean>true</boolean>\n",
+ "<boolean>true</boolean>",
+ },
+ {
+ "SimpleTypes-3",
+ 123,
+ "<number>123</number>",
+ "<number>123</number>\n",
+ "<number>123</number>",
+ },
+ {
+ "SimpleTypes-4",
+ 1.23f,
+ "<number>1.23</number>",
+ "<number>1.23</number>\n",
+ "<number>1.23</number>",
+ },
+ {
+ "SimpleTypes-5",
+ null,
+ "<null/>",
+ "<null/>\n",
+ "<null/>",
+ },
+ {
+ "Arrays-1",
+ new String[]{"foo"},
+ "<array><string>foo</string></array>",
+ "<array>\n\t<string>foo</string>\n</array>\n",
+ "<array><string>foo</string></array>",
+ },
+ {
+ "Arrays-2",
+ new String[]{null},
+ "<array><null/></array>",
+ "<array>\n\t<null/>\n</array>\n",
+ "<array><null/></array>",
+ },
+ {
+ "Arrays-3",
+ new Object[]{"foo"},
+ "<array><string>foo</string></array>",
+ "<array>\n\t<string>foo</string>\n</array>\n",
+ "<array><string>foo</string></array>",
+ },
+ {
+ "Arrays-4",
+ new int[]{123},
+ "<array><number>123</number></array>",
+ "<array>\n\t<number>123</number>\n</array>\n",
+ "<array><number>123</number></array>",
+ },
+ {
+ "Arrays-5",
+ new boolean[]{true},
+ "<array><boolean>true</boolean></array>",
+ "<array>\n\t<boolean>true</boolean>\n</array>\n",
+ "<array><boolean>true</boolean></array>",
+ },
+ {
+ "Arrays-6",
+ new String[][]{{"foo"}},
+ "<array><array><string>foo</string></array></array>",
+ "<array>\n\t<array>\n\t\t<string>foo</string>\n\t</array>\n</array>\n",
+ "<array><array><string>foo</string></array></array>",
+ },
+ {
+ "MapWithStrings",
+ new MapWithStrings().append("k1", "v1").append("k2", null),
+ "<object><k1>v1</k1><k2 _type='null'/></object>",
+ "<object>\n\t<k1>v1</k1>\n\t<k2 _type='null'/>\n</object>\n",
+ "<object><k1>v1</k1><k2 _type='null'/></object>",
+ },
+ {
+ "MapsWithNumbers",
+ new MapWithNumbers().append("k1", 123).append("k2", 1.23).append("k3", null),
+ "<object><k1>123</k1><k2>1.23</k2><k3 _type='null'/></object>",
+ "<object>\n\t<k1>123</k1>\n\t<k2>1.23</k2>\n\t<k3 _type='null'/>\n</object>\n",
+ "<object><k1>123</k1><k2>1.23</k2><k3 _type='null'/></object>",
+ },
+ {
+ "MapWithObjects",
+ new MapWithObjects().append("k1", "v1").append("k2", 123).append("k3", 1.23).append("k4", true).append("k5", null),
+ "<object><k1>v1</k1><k2 _type='number'>123</k2><k3 _type='number'>1.23</k3><k4 _type='boolean'>true</k4><k5 _type='null'/></object>",
+ "<object>\n\t<k1>v1</k1>\n\t<k2 _type='number'>123</k2>\n\t<k3 _type='number'>1.23</k3>\n\t<k4 _type='boolean'>true</k4>\n\t<k5 _type='null'/>\n</object>\n",
+ "<object><k1>v1</k1><k2 _type='number'>123</k2><k3 _type='number'>1.23</k3><k4 _type='boolean'>true</k4><k5 _type='null'/></object>",
+ },
+ {
+ "ListWithStrings",
+ new ListWithStrings().append("foo").append(null),
+ "<array><string>foo</string><null/></array>",
+ "<array>\n\t<string>foo</string>\n\t<null/>\n</array>\n",
+ "<array><string>foo</string><null/></array>",
+ },
+ {
+ "ListWithNumbers",
+ new ListWithNumbers().append(123).append(1.23).append(null),
+ "<array><number>123</number><number>1.23</number><null/></array>",
+ "<array>\n\t<number>123</number>\n\t<number>1.23</number>\n\t<null/>\n</array>\n",
+ "<array><number>123</number><number>1.23</number><null/></array>",
+ },
+ {
+ "ListWithObjects",
+ new ListWithObjects().append("foo").append(123).append(1.23).append(true).append(null),
+ "<array><string>foo</string><number>123</number><number>1.23</number><boolean>true</boolean><null/></array>",
+ "<array>\n\t<string>foo</string>\n\t<number>123</number>\n\t<number>1.23</number>\n\t<boolean>true</boolean>\n\t<null/>\n</array>\n",
+ "<array><string>foo</string><number>123</number><number>1.23</number><boolean>true</boolean><null/></array>",
+ },
+ {
+ "BeanWithNormalProperties",
+ new BeanWithNormalProperties().init(),
+ "<object>"
+ +"<a>foo</a>"
+ +"<b>123</b>"
+ +"<c>bar</c>"
+ +"<d _type='number'>456</d>"
+ +"<e>"
+ +"<h>qux</h>"
+ +"</e>"
+ +"<f>"
+ +"<string>baz</string>"
+ +"</f>"
+ +"<g>"
+ +"<number>789</number>"
+ +"</g>"
+ +"</object>",
+ "<object>"
+ +"\n\t<a>foo</a>"
+ +"\n\t<b>123</b>"
+ +"\n\t<c>bar</c>"
+ +"\n\t<d _type='number'>456</d>"
+ +"\n\t<e>"
+ +"\n\t\t<h>qux</h>"
+ +"\n\t</e>"
+ +"\n\t<f>"
+ +"\n\t\t<string>baz</string>"
+ +"\n\t</f>"
+ +"\n\t<g>"
+ +"\n\t\t<number>789</number>"
+ +"\n\t</g>"
+ +"\n</object>\n",
+ "<object>"
+ +"<a>foo</a>"
+ +"<b>123</b>"
+ +"<c>bar</c>"
+ +"<d _type='number'>456</d>"
+ +"<e>"
+ +"<h>qux</h>"
+ +"</e>"
+ +"<f>"
+ +"<string>baz</string>"
+ +"</f>"
+ +"<g>"
+ +"<number>789</number>"
+ +"</g>"
+ +"</object>",
+ },
+ {
+ "BeanWithMapProperties",
+ new BeanWithMapProperties().init(),
+ "<object>"
+ +"<a>"
+ +"<k1>foo</k1>"
+ +"</a>"
+ +"<b>"
+ +"<k2>123</k2>"
+ +"</b>"
+ +"<c>"
+ +"<k3>bar</k3>"
+ +"<k4 _type='number'>456</k4>"
+ +"<k5 _type='boolean'>true</k5>"
+ +"<k6 _type='null'/>"
+ +"</c>"
+ +"</object>",
+ "<object>"
+ +"\n\t<a>"
+ +"\n\t\t<k1>foo</k1>"
+ +"\n\t</a>"
+ +"\n\t<b>"
+ +"\n\t\t<k2>123</k2>"
+ +"\n\t</b>"
+ +"\n\t<c>"
+ +"\n\t\t<k3>bar</k3>"
+ +"\n\t\t<k4 _type='number'>456</k4>"
+ +"\n\t\t<k5 _type='boolean'>true</k5>"
+ +"\n\t\t<k6 _type='null'/>"
+ +"\n\t</c>"
+ +"\n</object>\n",
+ "<object>"
+ +"<a>"
+ +"<k1>foo</k1>"
+ +"</a>"
+ +"<b>"
+ +"<k2>123</k2>"
+ +"</b>"
+ +"<c>"
+ +"<k3>bar</k3>"
+ +"<k4 _type='number'>456</k4>"
+ +"<k5 _type='boolean'>true</k5>"
+ +"<k6 _type='null'/>"
+ +"</c>"
+ +"</object>",
+ },
+ {
+ "BeanWithTypeName",
+ new BeanWithTypeName().init(),
+ "<X><a>123</a><b>foo</b></X>",
+ "<X>\n\t<a>123</a>\n\t<b>foo</b>\n</X>\n",
+ "<X><a>123</a><b>foo</b></X>",
+ },
+ {
+ "BeanWithPropertiesWithTypeNames",
+ new BeanWithPropertiesWithTypeNames().init(),
+ "<object><b1><b>foo</b></b1><b2 _type='B'><b>foo</b></b2></object>",
+ "<object>\n\t<b1>\n\t\t<b>foo</b>\n\t</b1>\n\t<b2 _type='B'>\n\t\t<b>foo</b>\n\t</b2>\n</object>\n",
+ "<object><b1><b>foo</b></b1><b2 _type='B'><b>foo</b></b2></object>"
+ },
+ {
+ "BeanWithPropertiesWithArrayTypeNames",
+ new BeanWithPropertiesWithArrayTypeNames().init(),
+ "<object>"
+ +"<b1>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</b1>"
+ +"<b2 _type='B^'>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</b2>"
+ +"<b3>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</b3>"
+ +"</object>",
+ "<object>\n"
+ +"\t<b1>\n"
+ +"\t\t<B>\n"
+ +"\t\t\t<b>foo</b>\n"
+ +"\t\t</B>\n"
+ +"\t</b1>\n"
+ +"\t<b2 _type='B^'>\n"
+ +"\t\t<B>\n"
+ +"\t\t\t<b>foo</b>\n"
+ +"\t\t</B>\n"
+ +"\t</b2>\n"
+ +"\t<b3>\n"
+ +"\t\t<B>\n"
+ +"\t\t\t<b>foo</b>\n"
+ +"\t\t</B>\n"
+ +"\t</b3>\n"
+ +"</object>\n",
+ "<object>"
+ +"<b1>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</b1>"
+ +"<b2 _type='B^'>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</b2>"
+ +"<b3>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</b3>"
+ +"</object>",
+ },
+ {
+ "BeanWithPropertiesWithArray2dTypeNames",
+ new BeanWithPropertiesWith2dArrayTypeNames().init(),
+ "<object>"
+ +"<b1>"
+ +"<array>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</array>"
+ +"</b1>"
+ +"<b2 _type='B^^'>"
+ +"<array>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</array>"
+ +"</b2>"
+ +"<b3>"
+ +"<array>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</array>"
+ +"</b3>"
+ +"</object>",
+ "<object>\n"
+ +"\t<b1>\n"
+ +"\t\t<array>\n"
+ +"\t\t\t<B>\n"
+ +"\t\t\t\t<b>foo</b>\n"
+ +"\t\t\t</B>\n"
+ +"\t\t</array>\n"
+ +"\t</b1>\n"
+ +"\t<b2 _type='B^^'>\n"
+ +"\t\t<array>\n"
+ +"\t\t\t<B>\n"
+ +"\t\t\t\t<b>foo</b>\n"
+ +"\t\t\t</B>\n"
+ +"\t\t</array>\n"
+ +"\t</b2>\n"
+ +"\t<b3>\n"
+ +"\t\t<array>\n"
+ +"\t\t\t<B>\n"
+ +"\t\t\t\t<b>foo</b>\n"
+ +"\t\t\t</B>\n"
+ +"\t\t</array>\n"
+ +"\t</b3>\n"
+ +"</object>\n",
+ "<object>"
+ +"<b1>"
+ +"<array>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</array>"
+ +"</b1>"
+ +"<b2 _type='B^^'>"
+ +"<array>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</array>"
+ +"</b2>"
+ +"<b3>"
+ +"<array>"
+ +"<B>"
+ +"<b>foo</b>"
+ +"</B>"
+ +"</array>"
+ +"</b3>"
+ +"</object>",
+ },
+ {
+ "BeanWithPropertiesWithMapTypeNames",
+ new BeanWithPropertiesWithMapTypeNames().init(),
+ "<object>"
+ +"<b1>"
+ +"<k1>"
+ +"<b>foo</b>"
+ +"</k1>"
+ +"</b1>"
+ +"<b2>"
+ +"<k2 _type='B'>"
+ +"<b>foo</b>"
+ +"</k2>"
+ +"</b2>"
+ +"</object>",
+ "<object>\n"
+ +"\t<b1>\n"
+ +"\t\t<k1>\n"
+ +"\t\t\t<b>foo</b>\n"
+ +"\t\t</k1>\n"
+ +"\t</b1>\n"
+ +"\t<b2>\n"
+ +"\t\t<k2 _type='B'>\n"
+ +"\t\t\t<b>foo</b>\n"
+ +"\t\t</k2>\n"
+ +"\t</b2>\n"
+ +"</object>\n",
+ "<object>"
+ +"<b1>"
+ +"<k1>"
+ +"<b>foo</b>"
+ +"</k1>"
+ +"</b1>"
+ +"<b2>"
+ +"<k2 _type='B'>"
+ +"<b>foo</b>"
+ +"</k2>"
+ +"</b2>"
+ +"</object>",
+ },
+ {
+ "BeanWithChildTypeNames",
+ new BeanWithChildTypeNames().init(),
+ "<object>"
+ +"<a>"
+ +"<fx>fx1</fx>"
+ +"</a>"
+ +"<b _type='X'>"
+ +"<fx>fx1</fx>"
+ +"</b>"
+ +"<c>"
+ +"<X>"
+ +"<fx>fx1</fx>"
+ +"</X>"
+ +"</c>"
+ +"<d>"
+ +"<X>"
+ +"<fx>fx1</fx>"
+ +"</X>"
+ +"</d>"
+ +"</object>",
+ "<object>"
+ +"\n\t<a>"
+ +"\n\t\t<fx>fx1</fx>"
+ +"\n\t</a>"
+ +"\n\t<b _type='X'>"
+ +"\n\t\t<fx>fx1</fx>"
+ +"\n\t</b>"
+ +"\n\t<c>"
+ +"\n\t\t<X>"
+ +"\n\t\t\t<fx>fx1</fx>"
+ +"\n\t\t</X>"
+ +"\n\t</c>"
+ +"\n\t<d>"
+ +"\n\t\t<X>"
+ +"\n\t\t\t<fx>fx1</fx>"
+ +"\n\t\t</X>"
+ +"\n\t</d>"
+ +"\n</object>\n",
+ "<object>"
+ +"<a>"
+ +"<fx>fx1</fx>"
+ +"</a>"
+ +"<b _type='X'>"
+ +"<fx>fx1</fx>"
+ +"</b>"
+ +"<c>"
+ +"<X>"
+ +"<fx>fx1</fx>"
+ +"</X>"
+ +"</c>"
+ +"<d>"
+ +"<X>"
+ +"<fx>fx1</fx>"
+ +"</X>"
+ +"</d>"
+ +"</object>",
+ },
+ {
+ "BeanWithChildName",
+ new BeanWithChildName().init(),
+ "<object><a><X>foo</X><X>bar</X></a><b><Y>123</Y><Y>456</Y></b></object>",
+ "<object>\n\t<a>\n\t\t<X>foo</X>\n\t\t<X>bar</X>\n\t</a>\n\t<b>\n\t\t<Y>123</Y>\n\t\t<Y>456</Y>\n\t</b>\n</object>\n",
+ "<object><a><X>foo</X><X>bar</X></a><b><Y>123</Y><Y>456</Y></b></object>",
+ },
+ {
+ "BeanWithXmlFormatAttrProperty",
+ new BeanWithXmlFormatAttrProperty().init(),
+ "<object a='foo' b='123'/>",
+ "<object a='foo' b='123'/>\n",
+ "<object a='foo' b='123'/>",
+ },
+ {
+ "BeanWithXmlFormatAttrs",
+ new BeanWithXmlFormatAttrs().init(),
+ "<object a='foo' b='123'/>",
+ "<object a='foo' b='123'/>\n",
+ "<object a='foo' b='123'/>",
+ },
+ {
+ "BeanWithXmlFormatElementProperty",
+ new BeanWithXmlFormatElementProperty().init(),
+ "<object a='foo'><b>123</b></object>",
+ "<object a='foo'>\n\t<b>123</b>\n</object>\n",
+ "<object a='foo'><b>123</b></object>",
+ },
+ {
+ "BeanWithXmlFormatAttrsProperty",
+ new BeanWithXmlFormatAttrsProperty().init(),
+ "<object k1='foo' k2='123' b='456'/>",
+ "<object k1='foo' k2='123' b='456'/>\n",
+ "<object k1='foo' k2='123' b='456'/>",
+ },
+ {
+ "BeanWithXmlFormatCollapsedProperty",
+ new BeanWithXmlFormatCollapsedProperty().init(),
+ "<object><A>foo</A><A>bar</A><B>123</B><B>456</B></object>",
+ "<object>\n\t<A>foo</A>\n\t<A>bar</A>\n\t<B>123</B>\n\t<B>456</B>\n</object>\n",
+ "<object><A>foo</A><A>bar</A><B>123</B><B>456</B></object>",
+ },
+ {
+ "BeanWithXmlFormatTextProperty",
+ new BeanWithXmlFormatTextProperty().init(),
+ "<object a='foo'>bar</object>",
+ "<object a='foo'>bar</object>\n",
+ "<object a='foo'>bar</object>",
+ },
+ {
+ "BeanWithXmlFormatXmlTextProperty",
+ new BeanWithXmlFormatXmlTextProperty().init(),
+ "<object a='foo'>bar<b>baz</b>qux</object>",
+ "<object a='foo'>bar<b>baz</b>qux</object>\n",
+ "<object a='foo'>bar<b>baz</b>qux</object>",
+ },
+ {
+ "BeanWithXmlFormatElementsPropertyCollection",
+ new BeanWithXmlFormatElementsPropertyCollection().init(),
+ "<object a='foo'><string>bar</string><string>baz</string><number>123</number><boolean>true</boolean><null/></object>",
+ "<object a='foo'>\n\t<string>bar</string>\n\t<string>baz</string>\n\t<number>123</number>\n\t<boolean>true</boolean>\n\t<null/>\n</object>\n",
+ "<object a='foo'><string>bar</string><string>baz</string><number>123</number><boolean>true</boolean><null/></object>",
+ },
+ {
+ "BeanWithMixedContent",
+ new BeanWithMixedContent().init(),
+ "<object>foo<X fx='fx1'/>bar<Y fy='fy1'/>baz</object>",
+ "<object>foo<X fx='fx1'/>bar<Y fy='fy1'/>baz</object>\n", // Mixed content doesn't use whitespace!
+ "<object>foo<X fx='fx1'/>bar<Y fy='fy1'/>baz</object>",
+ },
+ {
+ "BeanWithSpecialCharacters",
+ new BeanWithSpecialCharacters().init(),
+ "<object><a>_x000A__x0008__x000C__x0009_</a></object>",
+ "<object>\n\t<a>_x000A__x0008__x000C__x0009_</a>\n</object>\n",
+ "<object><a>_x000A__x0008__x000C__x0009_</a></object>"
+ },
+ {
+ "BeanWithSpecialCharacters2",
+ new BeanWithSpecialCharacters2().init(),
+ "<_x0024__x0023__x0021_><_x002A__x0028__x0029_>_x000A__x0008__x000C__x0009_</_x002A__x0028__x0029_></_x0024__x0023__x0021_>",
+ "<_x0024__x0023__x0021_>\n\t<_x002A__x0028__x0029_>_x000A__x0008__x000C__x0009_</_x002A__x0028__x0029_>\n</_x0024__x0023__x0021_>\n",
+ "<_x0024__x0023__x0021_><_x002A__x0028__x0029_>_x000A__x0008__x000C__x0009_</_x002A__x0028__x0029_></_x0024__x0023__x0021_>"
+ },
+ {
+ "BeanWithNullProperties",
+ new BeanWithNullProperties(),
+ "<object/>",
+ "<object/>\n",
+ "<object/>"
+ },
+ {
+ "BeanWithAbstractFields",
+ new BeanWithAbstractFields().init(),
+ "<object>"
+ +"<a>"
+ +"<a>foo</a>"
+ +"</a>"
+ +"<ia _type='A'>"
+ +"<a>foo</a>"
+ +"</ia>"
+ +"<aa _type='A'>"
+ +"<a>foo</a>"
+ +"</aa>"
+ +"<o _type='A'>"
+ +"<a>foo</a>"
+ +"</o>"
+ +"</object>",
+ "<object>\n"
+ +"\t<a>\n"
+ +"\t\t<a>foo</a>\n"
+ +"\t</a>\n"
+ +"\t<ia _type='A'>\n"
+ +"\t\t<a>foo</a>\n"
+ +"\t</ia>\n"
+ +"\t<aa _type='A'>\n"
+ +"\t\t<a>foo</a>\n"
+ +"\t</aa>\n"
+ +"\t<o _type='A'>\n"
+ +"\t\t<a>foo</a>\n"
+ +"\t</o>\n"
+ +"</object>\n",
+ "<object>"
+ +"<a>"
+ +"<a>foo</a>"
+ +"</a>"
+ +"<ia _type='A'>"
+ +"<a>foo</a>"
+ +"</ia>"
+ +"<aa _type='A'>"
+ +"<a>foo</a>"
+ +"</aa>"
+ +"<o _type='A'>"
+ +"<a>foo</a>"
+ +"</o>"
+ +"</object>",
+ },
+ {
+ "BeanWithAbstractArrayFields",
+ new BeanWithAbstractArrayFields().init(),
+ "<object>"
+ +"<a>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</a>"
+ +"<ia1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia1>"
+ +"<ia2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia2>"
+ +"<aa1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa1>"
+ +"<aa2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa2>"
+ +"<o1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o1>"
+ +"<o2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o2>"
+ +"</object>",
+ "<object>\n"
+ +"\t<a>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</a>\n"
+ +"\t<ia1 _type='A^'>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</ia1>\n"
+ +"\t<ia2>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</ia2>\n"
+ +"\t<aa1 _type='A^'>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</aa1>\n"
+ +"\t<aa2>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</aa2>\n"
+ +"\t<o1 _type='A^'>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</o1>\n"
+ +"\t<o2>\n"
+ +"\t\t<A>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</A>\n"
+ +"\t</o2>\n"
+ +"</object>\n",
+ "<object>"
+ +"<a>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</a>"
+ +"<ia1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia1>"
+ +"<ia2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia2>"
+ +"<aa1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa1>"
+ +"<aa2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa2>"
+ +"<o1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o1>"
+ +"<o2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o2>"
+ +"</object>",
+ },
+ {
+ "BeanWithAbstractMapFields",
+ new BeanWithAbstractMapFields().init(),
+ "<object>"
+ +"<a>"
+ +"<k1>"
+ +"<a>foo</a>"
+ +"</k1>"
+ +"</a>"
+ +"<b>"
+ +"<k2 _type='A'>"
+ +"<a>foo</a>"
+ +"</k2>"
+ +"</b>"
+ +"<c>"
+ +"<k3 _type='A'>"
+ +"<a>foo</a>"
+ +"</k3>"
+ +"</c>"
+ +"</object>",
+ "<object>\n"
+ +"\t<a>\n"
+ +"\t\t<k1>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</k1>\n"
+ +"\t</a>\n"
+ +"\t<b>\n"
+ +"\t\t<k2 _type='A'>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</k2>\n"
+ +"\t</b>\n"
+ +"\t<c>\n"
+ +"\t\t<k3 _type='A'>\n"
+ +"\t\t\t<a>foo</a>\n"
+ +"\t\t</k3>\n"
+ +"\t</c>\n"
+ +"</object>\n",
+ "<object>"
+ +"<a>"
+ +"<k1>"
+ +"<a>foo</a>"
+ +"</k1>"
+ +"</a>"
+ +"<b>"
+ +"<k2 _type='A'>"
+ +"<a>foo</a>"
+ +"</k2>"
+ +"</b>"
+ +"<c>"
+ +"<k3 _type='A'>"
+ +"<a>foo</a>"
+ +"</k3>"
+ +"</c>"
+ +"</object>",
+ },
+ {
+ "BeanWithAbstractMapArrayFields",
+ new BeanWithAbstractMapArrayFields().init(),
+ "<object>"
+ +"<a>"
+ +"<a1>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</a1>"
+ +"</a>"
+ +"<ia>"
+ +"<ia1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia1>"
+ +"<ia2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia2>"
+ +"</ia>"
+ +"<aa>"
+ +"<aa1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa1>"
+ +"<aa2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa2>"
+ +"</aa>"
+ +"<o>"
+ +"<o1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o1>"
+ +"<o2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o2>"
+ +"</o>"
+ +"</object>",
+ "<object>\n"
+ +"\t<a>\n"
+ +"\t\t<a1>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</a1>\n"
+ +"\t</a>\n"
+ +"\t<ia>\n"
+ +"\t\t<ia1 _type='A^'>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</ia1>\n"
+ +"\t\t<ia2>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</ia2>\n"
+ +"\t</ia>\n"
+ +"\t<aa>\n"
+ +"\t\t<aa1 _type='A^'>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</aa1>\n"
+ +"\t\t<aa2>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</aa2>\n"
+ +"\t</aa>\n"
+ +"\t<o>\n"
+ +"\t\t<o1 _type='A^'>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</o1>\n"
+ +"\t\t<o2>\n"
+ +"\t\t\t<A>\n"
+ +"\t\t\t\t<a>foo</a>\n"
+ +"\t\t\t</A>\n"
+ +"\t\t</o2>\n"
+ +"\t</o>\n"
+ +"</object>\n",
+ "<object>"
+ +"<a>"
+ +"<a1>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</a1>"
+ +"</a>"
+ +"<ia>"
+ +"<ia1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia1>"
+ +"<ia2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</ia2>"
+ +"</ia>"
+ +"<aa>"
+ +"<aa1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa1>"
+ +"<aa2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</aa2>"
+ +"</aa>"
+ +"<o>"
+ +"<o1 _type='A^'>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o1>"
+ +"<o2>"
+ +"<A>"
+ +"<a>foo</a>"
+ +"</A>"
+ +"</o2>"
+ +"</o>"
+ +"</object>",
+ }
+ });
+ }
+
+ private String label, e1, e2, e3;
+ private Object in;
+
+ public BasicXmlTest(String label, Object in, String e1, String e2, String e3) throws Exception {
+ this.label = label;
+ this.in = in;
+ this.e1 = e1;
+ this.e2 = e2;
+ this.e3 = e3;
+ }
+
+ @Test
+ public void serializeNormal() {
+ try {
+ String r = s1.serialize(in);
+ assertEquals(label + " serialize-normal failed", e1, r);
+ } catch (AssertionError e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new RuntimeException(label + " test failed", e);
+ }
+ }
+
+ @Test
+ public void parseNormal() {
+ try {
+ String r = s1.serialize(in);
+ Object o = parser.parse(r, in == null ? Object.class : in.getClass());
+ r = s1.serialize(o);
+ assertEquals(label + " parse-normal failed", e1, r);
+ } catch (AssertionError e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new RuntimeException(label + " test failed", e);
+ }
+ }
+
+ @Test
+ public void serializeReadable() {
+ try {
+ String r = s2.serialize(in);
+ assertEquals(label + " serialize-readable failed", e2, r);
+ } catch (AssertionError e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new RuntimeException(label + " test failed", e);
+ }
+ }
+
+ @Test
+ public void parseReadable() {
+ try {
+ String r = s2.serialize(in);
+ Object o = parser.parse(r, in == null ? Object.class : in.getClass());
+ r = s2.serialize(o);
+ assertEquals(label + " parse-readable failed", e2, r);
+ } catch (AssertionError e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new RuntimeException(label + " test failed", e);
+ }
+ }
+
+ @Test
+ public void serializeNsEnabled() {
+ try {
+ String r = s3.serialize(in);
+ assertEquals(label + " serialize-ns-enabled failed", e3, r);
+ } catch (AssertionError e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new RuntimeException(label + " test failed", e);
+ }
+ }
+
+ @Test
+ public void parseNsEnabled() {
+ try {
+ String r = s3.serialize(in);
+ Object o = parser.parse(r, in == null ? Object.class : in.getClass());
+ r = s3.serialize(o);
+ assertEquals(label + " parse-ns-enabled failed", e3, r);
+ } catch (AssertionError e) {
+ throw e;
+ } catch (Throwable e) {
+ throw new RuntimeException(label + " test failed", e);
+ }
+ }
+
+
+ //--------------------------------------------------------------------------------
+ // Test beans
+ //--------------------------------------------------------------------------------
+
+ public static class MapWithStrings extends LinkedHashMap<String,String> {
+ public MapWithStrings append(String key, String value) {
+ put(key, value);
+ return this;
+ }
+ }
+
+ public static class MapWithNumbers extends LinkedHashMap<String,Number> {
+ public MapWithNumbers append(String key, Number value) {
+ put(key, value);
+ return this;
+ }
+ }
+
+ public static class MapWithObjects extends LinkedHashMap<String,Object> {
+ public MapWithObjects append(String key, Object value) {
+ put(key, value);
+ return this;
+ }
+ }
+
+ public static class ListWithStrings extends ArrayList<String> {
+ public ListWithStrings append(String value) {
+ this.add(value);
+ return this;
+ }
+ }
+
+ public static class ListWithNumbers extends ArrayList<Number> {
+ public ListWithNumbers append(Number value) {
+ this.add(value);
+ return this;
+ }
+ }
+
+ public static class ListWithObjects extends ArrayList<Object> {
+ public ListWithObjects append(Object value) {
+ this.add(value);
+ return this;
+ }
+ }
+
+ public static class BeanWithNormalProperties {
+ public String a;
+ public int b;
+ public Object c;
+ public Object d;
+ public Bean1a e;
+ public String[] f;
+ public int[] g;
+
+ BeanWithNormalProperties init() {
+ a = "foo";
+ b = 123;
+ c = "bar";
+ d = 456;
+ e = new Bean1a().init();
+ f = new String[]{ "baz" };
+ g = new int[]{ 789 };
+ return this;
+ }
+ }
+
+ public static class Bean1a {
+ public String h;
+
+ Bean1a init() {
+ h = "qux";
+ return this;
+ }
+ }
+
+ public static class BeanWithMapProperties {
+ @BeanProperty(type=MapWithStrings.class)
+ public Map<String,String> a;
+ @BeanProperty(type=MapWithNumbers.class)
+ public Map<String,Number> b;
+ @BeanProperty(type=MapWithObjects.class)
+ public Map<String,Object> c;
+
+ BeanWithMapProperties init() {
+ a = new MapWithStrings().append("k1","foo");
+ b = new MapWithNumbers().append("k2",123);
+ c = new MapWithObjects().append("k3","bar").append("k4",456).append("k5",true).append("k6",null);
+ return this;
+ }
+ }
+
+ @Bean(typeName="X")
+ public static class BeanWithTypeName {
+ public int a;
+ public String b;
+
+ BeanWithTypeName init() {
+ a = 123;
+ b = "foo";
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={B.class})
+ public static class BeanWithPropertiesWithTypeNames {
+ public B b1;
+ public Object b2;
+
+ BeanWithPropertiesWithTypeNames init() {
+ b1 = new B().init();
+ b2 = new B().init();
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={B.class})
+ public static class BeanWithPropertiesWithArrayTypeNames {
+ public B[] b1;
+ public Object[] b2;
+ public Object[] b3;
+
+ BeanWithPropertiesWithArrayTypeNames init() {
+ b1 = new B[]{new B().init()};
+ b2 = new B[]{new B().init()};
+ b3 = new Object[]{new B().init()};
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={B.class})
+ public static class BeanWithPropertiesWith2dArrayTypeNames {
+ public B[][] b1;
+ public Object[][] b2;
+ public Object[][] b3;
+
+ BeanWithPropertiesWith2dArrayTypeNames init() {
+ b1 = new B[][]{{new B().init()}};
+ b2 = new B[][]{{new B().init()}};
+ b3 = new Object[][]{{new B().init()}};
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={B.class})
+ public static class BeanWithPropertiesWithMapTypeNames {
+ public Map<String,B> b1;
+ public Map<String,Object> b2;
+
+ BeanWithPropertiesWithMapTypeNames init() {
+ b1 = new HashMap<String,B>();
+ b1.put("k1", new B().init());
+ b2 = new HashMap<String,Object>();
+ b2.put("k2", new B().init());
+ return this;
+ }
+ }
+
+ @Bean(typeName="B")
+ public static class B {
+ public String b;
+
+ B init() {
+ b = "foo";
+ return this;
+ }
+ }
+
+ public static class BeanWithChildTypeNames {
+ public BeanX a;
+ @BeanProperty(beanDictionary=BeanX.class)
+ public Object b;
+ public BeanX[] c;
+ @BeanProperty(beanDictionary=BeanX.class)
+ public Object[] d;
+ BeanWithChildTypeNames init() {
+ a = new BeanX().init();
+ b = new BeanX().init();
+ c = new BeanX[]{new BeanX().init()};
+ d = new Object[]{new BeanX().init()};
+ return this;
+ }
+ }
+
+ public static class BeanWithChildName {
+ @Xml(childName = "X")
+ public String[] a;
+ @Xml(childName = "Y")
+ public int[] b;
+ BeanWithChildName init() {
+ a = new String[] { "foo", "bar" };
+ b = new int[] { 123, 456 };
+ return this;
+ }
+ }
+
+ public static class BeanWithXmlFormatAttrProperty {
+ @Xml(format=XmlFormat.ATTR)
+ public String a;
+ @Xml(format=XmlFormat.ATTR)
+ public int b;
+ BeanWithXmlFormatAttrProperty init() {
+ a = "foo";
+ b = 123;
+ return this;
+ }
+ }
+
+ @Xml(format=XmlFormat.ATTRS)
+ public static class BeanWithXmlFormatAttrs {
+ public String a;
+ public int b;
+ BeanWithXmlFormatAttrs init() {
+ a = "foo";
+ b = 123;
+ return this;
+ }
+ }
+
+ @Xml(format=XmlFormat.ATTRS)
+ public static class BeanWithXmlFormatElementProperty {
+ public String a;
+ @Xml(format=XmlFormat.ELEMENT)
+ public int b;
+ BeanWithXmlFormatElementProperty init() {
+ a = "foo";
+ b = 123;
+ return this;
+ }
+ }
+
+ public static class BeanWithXmlFormatAttrsProperty {
+ @Xml(format=XmlFormat.ATTRS)
+ public Map<String,Object> a;
+ @Xml(format=XmlFormat.ATTR)
+ public int b;
+ BeanWithXmlFormatAttrsProperty init() {
+ a = new ObjectMap().append("k1", "foo").append("k2", 123);
+ b = 456;
+ return this;
+ }
+ }
+
+ public static class BeanWithXmlFormatCollapsedProperty {
+ @Xml(childName="A",format=XmlFormat.COLLAPSED)
+ public String[] a;
+ @Xml(childName="B",format=XmlFormat.COLLAPSED)
+ public int[] b;
+ BeanWithXmlFormatCollapsedProperty init() {
+ a = new String[]{"foo","bar"};
+ b = new int[]{123,456};
+ return this;
+ }
+ }
+
+ public static class BeanWithXmlFormatTextProperty {
+ @Xml(format=XmlFormat.ATTR)
+ public String a;
+ @Xml(format=XmlFormat.TEXT)
+ public String b;
+ BeanWithXmlFormatTextProperty init() {
+ a = "foo";
+ b = "bar";
+ return this;
+ }
+ }
+
+ public static class BeanWithXmlFormatXmlTextProperty {
+ @Xml(format=XmlFormat.ATTR)
+ public String a;
+ @Xml(format=XmlFormat.XMLTEXT)
+ public String b;
+ BeanWithXmlFormatXmlTextProperty init() {
+ a = "foo";
+ b = "bar<b>baz</b>qux";
+ return this;
+ }
+ }
+
+ public static class BeanWithXmlFormatElementsPropertyCollection {
+ @Xml(format=XmlFormat.ATTR)
+ public String a;
+ @Xml(format=XmlFormat.ELEMENTS)
+ public Object[] b;
+ BeanWithXmlFormatElementsPropertyCollection init() {
+ a = "foo";
+ b = new Object[]{"bar","baz",123,true,null};
+ return this;
+ }
+ }
+
+ public static class BeanWithMixedContent {
+ @Xml(format=XmlFormat.MIXED)
+ @BeanProperty(beanDictionary={BeanXSimple.class, BeanYSimple.class})
+ public Object[] a;
+ BeanWithMixedContent init() {
+ a = new Object[]{
+ "foo",
+ new BeanXSimple().init(),
+ "bar",
+ new BeanYSimple().init(),
+ "baz"
+ };
+ return this;
+ }
+ }
+
+ @Bean(typeName="X")
+ public static class BeanX {
+ public String fx;
+ BeanX init() {
+ fx = "fx1";
+ return this;
+ }
+ }
+
+ @Bean(typeName="X")
+ public static class BeanXSimple {
+ @Xml(format=XmlFormat.ATTR)
+ public String fx;
+ BeanXSimple init() {
+ fx = "fx1";
+ return this;
+ }
+ }
+
+ @Bean(typeName="Y")
+ public static class BeanY {
+ public String fy;
+ BeanY init() {
+ fy = "fy1";
+ return this;
+ }
+ }
+
+ @Bean(typeName="Y")
+ public static class BeanYSimple {
+ @Xml(format=XmlFormat.ATTR)
+ public String fy;
+ BeanYSimple init() {
+ fy = "fy1";
+ return this;
+ }
+ }
+
+ public static class BeanWithSpecialCharacters {
+ public String a;
+
+ BeanWithSpecialCharacters init() {
+ a = "\n\b\f\t";
+ return this;
+ }
+ }
+
+ @Bean(typeName="$#!")
+ public static class BeanWithSpecialCharacters2 {
+
+ @BeanProperty(name="*()")
+ public String a;
+
+ BeanWithSpecialCharacters2 init() {
+ a = "\n\b\f\t";
+ return this;
+ }
+ }
+
+ public static class BeanWithNullProperties {
+ public String a;
+ public String[] b;
+ }
+
+ @Bean(beanDictionary={A.class})
+ public static class BeanWithAbstractFields {
+ public A a;
+ public IA ia;
+ public AA aa;
+ public Object o;
+
+ BeanWithAbstractFields init() {
+ ia = new A().init();
+ aa = new A().init();
+ a = new A().init();
+ o = new A().init();
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={A.class})
+ public static class BeanWithAbstractArrayFields {
+ public A[] a;
+ public IA[] ia1, ia2;
+ public AA[] aa1, aa2;
+ public Object[] o1, o2;
+
+ BeanWithAbstractArrayFields init() {
+ a = new A[]{new A().init()};
+ ia1 = new A[]{new A().init()};
+ aa1 = new A[]{new A().init()};
+ o1 = new A[]{new A().init()};
+ ia2 = new IA[]{new A().init()};
+ aa2 = new AA[]{new A().init()};
+ o2 = new Object[]{new A().init()};
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={A.class})
+ public static class BeanWithAbstractMapFields {
+ public Map<String,A> a;
+ public Map<String,AA> b;
+ public Map<String,Object> c;
+
+ BeanWithAbstractMapFields init() {
+ a = new HashMap<String,A>();
+ b = new HashMap<String,AA>();
+ c = new HashMap<String,Object>();
+ a.put("k1", new A().init());
+ b.put("k2", new A().init());
+ c.put("k3", new A().init());
+ return this;
+ }
+ }
+
+ @Bean(beanDictionary={A.class})
+ public static class BeanWithAbstractMapArrayFields {
+ public Map<String,A[]> a;
+ public Map<String,IA[]> ia;
+ public Map<String,AA[]> aa;
+ public Map<String,Object[]> o;
+
+ BeanWithAbstractMapArrayFields init() {
+ a = new LinkedHashMap<String,A[]>();
+ ia = new LinkedHashMap<String,IA[]>();
+ aa = new LinkedHashMap<String,AA[]>();
+ o = new LinkedHashMap<String,Object[]>();
+ a.put("a1", new A[]{new A().init()});
+ ia.put("ia1", new A[]{new A().init()});
+ ia.put("ia2", new IA[]{new A().init()});
+ aa.put("aa1", new A[]{new A().init()});
+ aa.put("aa2", new AA[]{new A().init()});
+ o.put("o1", new A[]{new A().init()});
+ o.put("o2", new Object[]{new A().init()});
+ return this;
+ }
+ }
+
+ public static interface IA {
+ public String getA();
+ public void setA(String a);
+ }
+
+ public static abstract class AA implements IA {}
+
+ @Bean(typeName="A")
+ public static class A extends AA {
+ private String a;
+
+ @Override
+ public String getA() {
+ return a;
+ }
+
+ @Override
+ public void setA(String a) {
+ this.a = a;
+ }
+
+ A init() {
+ this.a = "foo";
+ return this;
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/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 7081e83..481cfb7 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
@@ -74,11 +74,11 @@ public class CommonParserTest {
t2.add(new A3("name0","value0"));
t2.add(new A3("name1","value1"));
t1.list = t2;
- String r = XmlSerializer.DEFAULT.serialize(t1);
+ String r = XmlSerializer.DEFAULT_NS.serialize(t1);
t1 = p.parse(r, A1.class);
assertEquals("value1", t1.list.get(1).value);
- r = XmlSerializer.DEFAULT.serialize(t1);
+ r = XmlSerializer.DEFAULT_NS.serialize(t1);
t1 = p.parse(r, A1.class);
assertEquals("value1", t1.list.get(1).value);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/xml/CommonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/CommonTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/CommonTest.java
index f6cb225..7ef01fd 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/CommonTest.java
@@ -38,13 +38,13 @@ public class CommonTest {
//====================================================================================================
@Test
public void testTrimNullsFromBeans() throws Exception {
- XmlSerializer s = new XmlSerializer.SimpleSq();
+ XmlSerializer s = new XmlSerializer.Sq();
XmlParser p = new XmlParser();
A t1 = A.create(), t2;
s.setProperty(SERIALIZER_trimNullProperties, false);
String r = s.serialize(t1);
- assertEquals("<object><s1 nil='true'/><s2>s2</s2></object>", r);
+ assertEquals("<object><s1 _type='null'/><s2>s2</s2></object>", r);
t2 = p.parse(r, A.class);
assertEqualObjects(t1, t2);
@@ -70,20 +70,20 @@ public class CommonTest {
//====================================================================================================
@Test
public void testTrimEmptyMaps() throws Exception {
- XmlSerializer s = new XmlSerializer.SimpleSq();
+ XmlSerializer s = new XmlSerializer.Sq();
XmlParser p = XmlParser.DEFAULT;
B t1 = B.create(), t2;
String r;
s.setProperty(SERIALIZER_trimEmptyMaps, false);
r = s.serialize(t1);
- assertEquals("<object><f1/><f2><f2a nil='true'/><f2b><s2>s2</s2></f2b></f2></object>", r);
+ assertEquals("<object><f1/><f2><f2a _type='null'/><f2b><s2>s2</s2></f2b></f2></object>", r);
t2 = p.parse(r, B.class);
assertEqualObjects(t1, t2);
s.setProperty(SERIALIZER_trimEmptyMaps, true);
r = s.serialize(t1);
- assertEquals("<object><f2><f2a nil='true'/><f2b><s2>s2</s2></f2b></f2></object>", r);
+ assertEquals("<object><f2><f2a _type='null'/><f2b><s2>s2</s2></f2b></f2></object>", r);
t2 = p.parse(r, B.class);
assertNull(t2.f1);
}
@@ -104,7 +104,7 @@ public class CommonTest {
//====================================================================================================
@Test
public void testTrimEmptyLists() throws Exception {
- XmlSerializer s = new XmlSerializer.SimpleSq();
+ XmlSerializer s = new XmlSerializer.Sq();
XmlParser p = XmlParser.DEFAULT;
C t1 = C.create(), t2;
String r;
@@ -138,7 +138,7 @@ public class CommonTest {
//====================================================================================================
@Test
public void testTrimEmptyArrays() throws Exception {
- XmlSerializer s = new XmlSerializer.SimpleSq();
+ XmlSerializer s = new XmlSerializer.Sq();
XmlParser p = XmlParser.DEFAULT;
D t1 = D.create(), t2;
String r;
@@ -172,10 +172,19 @@ public class CommonTest {
//====================================================================================================
@Test
public void testBeanPropertyProperties() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
E1 t = new E1();
String r = s.serialize(t);
- assertEquals("<object><x1 f2='2'><f1>1</f1></x1><x2><f1>1</f1></x2><x3><object f2='2'><f1>1</f1></object></x3><x4><object f2='2'><f1>1</f1></object></x4><x5><object><f1>1</f1></object></x5><x6><object><f1>1</f1></object></x6></object>", r);
+ assertEquals(
+ "<object>"
+ +"<x1 f2='2'><f1>1</f1></x1>"
+ +"<x2><f1>1</f1></x2>"
+ +"<x3><object f2='2'><f1>1</f1></object></x3>"
+ +"<x4><object f2='2'><f1>1</f1></object></x4>"
+ +"<x5><object><f1 _type='number'>1</f1></object></x5>"
+ +"<x6><object><f1 _type='number'>1</f1></object></x6>"
+ +"</object>",
+ r);
TestUtils.validateXml(t);
}
@@ -206,7 +215,7 @@ public class CommonTest {
//====================================================================================================
@Test
public void testBeanPropertyPropertiesOnListOfBeans() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
List<Test7b> l = new LinkedList<Test7b>();
Test7b t = new Test7b();
t.x1.add(new Test7b());
@@ -225,7 +234,7 @@ public class CommonTest {
//====================================================================================================
@Test
public void testURIAttr() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
G t = new G();
@@ -251,7 +260,7 @@ public class CommonTest {
//====================================================================================================
@Test
public void testUris() throws Exception {
- WriterSerializer s = new XmlSerializer.SimpleSq();
+ WriterSerializer s = new XmlSerializer.Sq();
TestURI t = new TestURI();
String r;
String expected;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/CommonXmlTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
index 848d76a..e2fd383 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/CommonXmlTest.java
@@ -31,7 +31,7 @@ public class CommonXmlTest {
@Test
public void testBeanUriAnnotation() throws Exception {
XmlParser p = XmlParser.DEFAULT;
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
A t = new A("http://foo", 123, "bar");
String xml = s.serialize(t);
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java
new file mode 100644
index 0000000..1bfec26
--- /dev/null
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java
@@ -0,0 +1,230 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance *
+// * with the License. You may obtain a copy of the License at *
+// * *
+// * http://www.apache.org/licenses/LICENSE-2.0 *
+// * *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the *
+// * specific language governing permissions and limitations under the License. *
+// ***************************************************************************************************************************
+package org.apache.juneau.xml;
+
+import static org.junit.Assert.*;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.xml.annotation.*;
+import org.junit.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+
+/**
+ * Verifies that the correct error messages are displayed when you do something wrong with the @Xml annotation.
+ */
+@RunWith(Parameterized.class)
+@SuppressWarnings({"javadoc"})
+public class InvalidXmlBeansTest {
+
+ private static final XmlSerializer
+ s1 = XmlSerializer.DEFAULT_SQ;
+
+ @Parameterized.Parameters
+ public static Collection<Object[]> getParameters() {
+ return Arrays.asList(new Object[][] {
+
+ {
+ "BeanWithAttrFormat",
+ new BeanWithAttrFormat(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithAttrFormat: Invalid format specified in @Xml annotation on bean: ATTR. Must be one of the following: DEFAULT,ATTRS,ELEMENTS",
+ },
+ {
+ "BeanWithElementFormat",
+ new BeanWithElementFormat(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithElementFormat: Invalid format specified in @Xml annotation on bean: ELEMENT. Must be one of the following: DEFAULT,ATTRS,ELEMENTS",
+ },
+ {
+ "BeanWithCollapsedFormat",
+ new BeanWithCollapsedFormat(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithCollapsedFormat: Invalid format specified in @Xml annotation on bean: COLLAPSED. Must be one of the following: DEFAULT,ATTRS,ELEMENTS",
+ },
+ {
+ "BeanWithMixedFormat",
+ new BeanWithMixedFormat(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithMixedFormat: Invalid format specified in @Xml annotation on bean: MIXED. Must be one of the following: DEFAULT,ATTRS,ELEMENTS",
+ },
+ {
+ "BeanWithMultipleAttrs",
+ new BeanWithMultipleAttrs(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithMultipleAttrs: Multiple instances of ATTRS properties defined on class. Only one property can be designated as such.",
+ },
+ {
+ "BeanWithWrongAttrsType",
+ new BeanWithWrongAttrsType(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithWrongAttrsType: Invalid type for ATTRS property. Only properties of type Map and bean can be used.",
+ },
+ {
+ "BeanWithMulipleElements",
+ new BeanWithMulipleElements(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithMulipleElements: Multiple instances of ELEMENTS properties defined on class. Only one property can be designated as such.",
+ },
+ {
+ "BeanWithWrongElementsType",
+ new BeanWithWrongElementsType(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithWrongElementsType: Invalid type for ELEMENTS property. Only properties of type Collection and array can be used.",
+ },
+ {
+ "BeanWithMulipleMixed",
+ new BeanWithMulipleMixed(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithMulipleMixed: Multiple instances of MIXED properties defined on class. Only one property can be designated as such.",
+ },
+ {
+ "BeanWithConflictingChildNames",
+ new BeanWithConflictingChildNames(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithConflictingChildNames: Multiple properties found with the child name 'X'.",
+ },
+ {
+ "BeanWithElementsAndMixed",
+ new BeanWithElementsAndMixed(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithElementsAndMixed: ELEMENTS and MIXED properties found on the same bean. Only one property can be designated as such.",
+ },
+ {
+ "BeanWithElementsAndElement",
+ new BeanWithElementsAndElement(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithElementsAndElement: ELEMENTS and ELEMENT properties found on the same bean. These cannot be mixed.",
+ },
+ {
+ "BeanWithElementsAndDefault",
+ new BeanWithElementsAndDefault(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithElementsAndDefault: ELEMENTS and ELEMENT properties found on the same bean. These cannot be mixed.",
+ },
+ {
+ "BeanWithElementsAndCollapsed",
+ new BeanWithElementsAndCollapsed(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithElementsAndCollapsed: ELEMENTS and COLLAPSED properties found on the same bean. These cannot be mixed.",
+ },
+ {
+ "BeanWithChildAndPropNameConflict",
+ new BeanWithChildAndPropNameConflict(),
+ "org.apache.juneau.xml.InvalidXmlBeansTest$BeanWithChildAndPropNameConflict: Child element name conflicts found with another property.",
+ },
+ });
+ }
+
+ private String label, expected;
+ private Object in;
+
+ public InvalidXmlBeansTest(String label, Object in, String expected) throws Exception {
+ this.label = label;
+ this.in = in;
+ this.expected = expected;
+ }
+
+ @Test
+ public void test() {
+ try {
+ s1.serialize(in);
+ fail(label + ": Expected exception didn't occur.");
+ } catch (Exception e) {
+ assertEquals(label + ": Wrong error message.", expected, e.getLocalizedMessage());
+ }
+ }
+
+ //--------------------------------------------------------------------------------
+ // Test beans
+ //--------------------------------------------------------------------------------
+
+ @Xml(format=XmlFormat.ATTR)
+ public static class BeanWithAttrFormat {
+ public int f1;
+ }
+
+ @Xml(format=XmlFormat.ELEMENT)
+ public static class BeanWithElementFormat {
+ public int f1;
+ }
+
+ @Xml(format=XmlFormat.COLLAPSED)
+ public static class BeanWithCollapsedFormat {
+ public int f1;
+ }
+
+ @Xml(format=XmlFormat.MIXED)
+ public static class BeanWithMixedFormat {
+ public int f1;
+ }
+
+ public static class BeanWithMultipleAttrs {
+ @Xml(format=XmlFormat.ATTRS)
+ public ObjectMap f1;
+ @Xml(format=XmlFormat.ATTRS)
+ public ObjectMap f2;
+ }
+
+ public static class BeanWithWrongAttrsType {
+ @Xml(format=XmlFormat.ATTRS)
+ public ObjectList f1;
+ }
+
+ public static class BeanWithMulipleElements {
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectList f1;
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectList f2;
+ }
+
+ public static class BeanWithWrongElementsType {
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectMap f1;
+ }
+
+ public static class BeanWithMulipleMixed {
+ @Xml(format=XmlFormat.MIXED)
+ public ObjectList f1;
+ @Xml(format=XmlFormat.MIXED)
+ public ObjectList f2;
+ }
+
+ public static class BeanWithConflictingChildNames {
+ @Xml(format=XmlFormat.COLLAPSED, childName="X")
+ public ObjectList f1;
+ @Xml(format=XmlFormat.COLLAPSED, childName="X")
+ public ObjectList f2;
+ }
+
+ public static class BeanWithElementsAndMixed {
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectList f1;
+ @Xml(format=XmlFormat.MIXED)
+ public ObjectList f2;
+ }
+
+ public static class BeanWithElementsAndElement {
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectList f1;
+ @Xml(format=XmlFormat.ELEMENT)
+ public ObjectList f2;
+ }
+
+ public static class BeanWithElementsAndDefault {
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectList f1;
+ public ObjectList f2;
+ }
+
+ public static class BeanWithElementsAndCollapsed {
+ @Xml(format=XmlFormat.ELEMENTS)
+ public ObjectList f1;
+ @Xml(format=XmlFormat.COLLAPSED)
+ public ObjectList f2;
+ }
+
+ public static class BeanWithChildAndPropNameConflict {
+ @Xml(format=XmlFormat.COLLAPSED, childName="f2")
+ public ObjectList f1;
+ public ObjectList f2;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4fb01038/juneau-core/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java b/juneau-core/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
index c7d1417..1baf835 100755
--- a/juneau-core/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/xml/XmlCollapsedTest.java
@@ -19,7 +19,6 @@ import static org.junit.Assert.*;
import java.util.*;
import org.apache.juneau.annotation.*;
-import org.apache.juneau.serializer.*;
import org.apache.juneau.xml.annotation.*;
import org.junit.*;
@@ -31,7 +30,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testBasic() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
A t = new A();
@@ -71,7 +70,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testUninitializedFields() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
B t = new B();
@@ -111,7 +110,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testInitializedFields() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
C t = new C();
@@ -158,7 +157,7 @@ public class XmlCollapsedTest {
@Test
@SuppressWarnings("synthetic-access")
public void testGetters() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
D t = new D();
@@ -219,7 +218,7 @@ public class XmlCollapsedTest {
@Test
@SuppressWarnings("synthetic-access")
public void testNullConstructibleCollectionFields() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
E t = new E();
@@ -265,7 +264,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testElementNameOnElementClass() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
Object t1 = FA.newInstance(), t2;
String r;
@@ -282,14 +281,6 @@ public class XmlCollapsedTest {
t2 = p.parse(r, FB.class);
assertEqualObjects(t1, t2);
validateXml(t1, s);
-
- t1 = FC.newInstance();
- try {
- r = s.serialize(t1);
- fail("Exception expected.");
- } catch (SerializeException e) {
- assertEquals("org.apache.juneau.xml.XmlCollapsedTest$FC: Multiple properties found with the name 'xf1'.", e.getLocalizedMessage());
- }
}
public static class FA {
@@ -320,25 +311,10 @@ public class XmlCollapsedTest {
}
}
- // Should cause name collision.
- public static class FC {
-
- @Xml(format=COLLAPSED)
- public List<F1> f1;
-
- @Xml(format=COLLAPSED)
- public F1[] f2;
-
- public static FC newInstance() {
- FC t = new FC();
- return t;
- }
- }
-
@Bean(typeName="xf1")
public static class F1 {
- @Xml(format=CONTENT)
+ @Xml(format=TEXT)
public String text;
public static F1 newInstance(String text) {
@@ -355,7 +331,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testElementNameOnElementClassOverridden() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
G t = G.newInstance(), t2;
@@ -389,7 +365,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testElementNameOnCollectionClass() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
H t = H.newInstance(), t2;
@@ -428,7 +404,7 @@ public class XmlCollapsedTest {
//====================================================================================================
@Test
public void testElementNameOnCollectionClassOverridden() throws Exception {
- XmlSerializer s = XmlSerializer.DEFAULT_SIMPLE_SQ;
+ XmlSerializer s = XmlSerializer.DEFAULT_SQ;
XmlParser p = XmlParser.DEFAULT;
G t = G.newInstance(), t2;