http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/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 deleted file mode 100644 index 182ffdd..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/xml/BasicXmlTest.java +++ /dev/null @@ -1,1505 +0,0 @@ -// *************************************************************************************************************************** -// * 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/e4dfdf81/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 deleted file mode 100755 index 481cfb7..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonParserTest.java +++ /dev/null @@ -1,179 +0,0 @@ -// *************************************************************************************************************************** -// * 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.apache.juneau.BeanContext.*; -import static org.junit.Assert.*; - -import java.util.*; - -import org.apache.juneau.*; -import org.apache.juneau.parser.*; -import org.junit.*; - -@SuppressWarnings({"rawtypes","serial","javadoc"}) -public class CommonParserTest { - - //==================================================================================================== - // testFromSerializer - //==================================================================================================== - @Test - public void testFromSerializer() throws Exception { - ReaderParser p = XmlParser.DEFAULT; - - Map m = null; - 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); - 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); - 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); - 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); - assertEquals("org.apache.juneau.test.Person", m.get("x")); - List l = (List)m.get("addresses"); - assertNotNull(l); - m = (Map)l.get(0); - assertNotNull(m); - assertEquals("org.apache.juneau.test.Address", m.get("x")); - assertEquals("city A", m.get("city")); - assertEquals("state A", m.get("state")); - 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); - 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); - assertEquals("value", jl.getObjectMap(0).getString("attribute")); - assertEquals("value", jl.getObjectMap(1).getString("attribute")); - } catch (Exception e) { - fail(e.getLocalizedMessage()); - } - - A1 t1 = new A1(); - A2 t2 = new A2(); - t2.add(new A3("name0","value0")); - t2.add(new A3("name1","value1")); - t1.list = t2; - String r = XmlSerializer.DEFAULT_NS.serialize(t1); - t1 = p.parse(r, A1.class); - assertEquals("value1", t1.list.get(1).value); - - r = XmlSerializer.DEFAULT_NS.serialize(t1); - t1 = p.parse(r, A1.class); - assertEquals("value1", t1.list.get(1).value); - } - - public static class A1 { - public A2 list; - } - - public static class A2 extends LinkedList<A3> { - } - - public static class A3 { - public String name, value; - public A3(){} - public A3(String name, String value) { - this.name = name; - this.value = value; - } - } - - //==================================================================================================== - // Correct handling of unknown properties. - //==================================================================================================== - @Test - public void testCorrectHandlingOfUnknownProperties() throws Exception { - ReaderParser p = new XmlParser().setProperty(BEAN_ignoreUnknownBeanProperties, true); - B t; - - String in = "<object><a>1</a><unknown>foo</unknown><b>2</b></object>"; - t = p.parse(in, B.class); - 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>"; - t = p.parse(in, B.class); - assertEquals(t.a, 1); - assertEquals(t.b, 2); - - - try { - p = new XmlParser(); - p.parse(in, B.class); - fail("Exception expected"); - } catch (ParseException e) {} - } - - public static class B { - public int a, b; - } - - //==================================================================================================== - // Writing to Collection properties with no setters. - //==================================================================================================== - @Test - public void testCollectionPropertiesWithNoSetters() throws Exception { - - 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>"; - C t = p.parse(in, C.class); - assertEquals(t.getInts().size(), 3); - assertEquals(t.getBeans().get(0).b, 2); - } - - public static class C { - private Collection<Integer> ints = new LinkedList<Integer>(); - private List<B> beans = new LinkedList<B>(); - public Collection<Integer> getInts() { - return ints; - } - public List<B> getBeans() { - return beans; - } - } - - //==================================================================================================== - // Parser listeners. - //==================================================================================================== - @Test - public void testParserListeners() throws Exception { - final List<String> events = new LinkedList<String>(); - XmlParser p = new XmlParser().setProperty(BEAN_ignoreUnknownBeanProperties, true); - p.addListener( - new ParserListener() { - @Override /* ParserListener */ - public <T> void onUnknownProperty(String propertyName, Class<T> beanClass, T bean, int line, int col) { - events.add(propertyName + "," + line + "," + col); - } - } - ); - - 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. - assertTrue(events.get(0).startsWith("unknownProperty,")); - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/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 deleted file mode 100755 index 7ef01fd..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonTest.java +++ /dev/null @@ -1,463 +0,0 @@ -// *************************************************************************************************************************** -// * 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.apache.juneau.TestUtils.*; -import static org.apache.juneau.serializer.SerializerContext.*; -import static org.apache.juneau.xml.XmlSerializerContext.*; -import static org.apache.juneau.xml.annotation.XmlFormat.*; -import static org.junit.Assert.*; - -import java.net.*; -import java.net.URI; -import java.util.*; - -import org.apache.juneau.*; -import org.apache.juneau.annotation.*; -import org.apache.juneau.jena.annotation.*; -import org.apache.juneau.serializer.*; -import org.apache.juneau.testbeans.*; -import org.apache.juneau.xml.annotation.*; -import org.junit.*; - -@SuppressWarnings({"serial","javadoc"}) -public class CommonTest { - - //==================================================================================================== - // Trim nulls from beans - //==================================================================================================== - @Test - public void testTrimNullsFromBeans() throws Exception { - 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 _type='null'/><s2>s2</s2></object>", r); - t2 = p.parse(r, A.class); - assertEqualObjects(t1, t2); - - s.setProperty(SERIALIZER_trimNullProperties, true); - r = s.serialize(t1); - assertEquals("<object><s2>s2</s2></object>", r); - t2 = p.parse(r, A.class); - assertEqualObjects(t1, t2); - } - - public static class A { - public String s1, s2; - - public static A create() { - A t = new A(); - t.s2 = "s2"; - return t; - } - } - - //==================================================================================================== - // Trim empty maps - //==================================================================================================== - @Test - public void testTrimEmptyMaps() throws Exception { - 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 _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 _type='null'/><f2b><s2>s2</s2></f2b></f2></object>", r); - t2 = p.parse(r, B.class); - assertNull(t2.f1); - } - - public static class B { - public TreeMap<String,A> f1, f2; - - public static B create() { - B t = new B(); - t.f1 = new TreeMap<String,A>(); - t.f2 = new TreeMap<String,A>(){{put("f2a",null);put("f2b",A.create());}}; - return t; - } - } - - //==================================================================================================== - // Trim empty lists - //==================================================================================================== - @Test - public void testTrimEmptyLists() throws Exception { - XmlSerializer s = new XmlSerializer.Sq(); - XmlParser p = XmlParser.DEFAULT; - C t1 = C.create(), t2; - String r; - - s.setProperty(SERIALIZER_trimEmptyCollections, false); - r = s.serialize(t1); - assertEquals("<object><f1></f1><f2><null/><object><s2>s2</s2></object></f2></object>", r); - t2 = p.parse(r, C.class); - assertEqualObjects(t1, t2); - - s.setProperty(SERIALIZER_trimEmptyCollections, true); - r = s.serialize(t1); - assertEquals("<object><f2><null/><object><s2>s2</s2></object></f2></object>", r); - t2 = p.parse(r, C.class); - assertNull(t2.f1); - } - - public static class C { - public List<A> f1, f2; - - public static C create() { - C t = new C(); - t.f1 = new LinkedList<A>(); - t.f2 = new LinkedList<A>(){{add(null);add(A.create());}}; - return t; - } - } - - //==================================================================================================== - // Trim empty arrays - //==================================================================================================== - @Test - public void testTrimEmptyArrays() throws Exception { - XmlSerializer s = new XmlSerializer.Sq(); - XmlParser p = XmlParser.DEFAULT; - D t1 = D.create(), t2; - String r; - - s.setProperty(SERIALIZER_trimEmptyCollections, false); - r = s.serialize(t1); - assertEquals("<object><f1></f1><f2><null/><object><s2>s2</s2></object></f2></object>", r); - t2 = p.parse(r, D.class); - assertEqualObjects(t1, t2); - - s.setProperty(SERIALIZER_trimEmptyCollections, true); - r = s.serialize(t1); - assertEquals("<object><f2><null/><object><s2>s2</s2></object></f2></object>", r); - t2 = p.parse(r, D.class); - assertNull(t2.f1); - } - - public static class D { - public A[] f1, f2; - - public static D create() { - D t = new D(); - t.f1 = new A[]{}; - t.f2 = new A[]{null, A.create()}; - return t; - } - } - - //==================================================================================================== - // @BeanProperty.properties annotation. - //==================================================================================================== - @Test - public void testBeanPropertyProperties() throws Exception { - 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 _type='number'>1</f1></object></x5>" - +"<x6><object><f1 _type='number'>1</f1></object></x6>" - +"</object>", - r); - TestUtils.validateXml(t); - } - - public static class E1 { - @BeanProperty(properties="f1,f2") public E2 x1 = new E2(); - @BeanProperty(properties="f1,f2") public Map<String,Integer> x2 = new LinkedHashMap<String,Integer>() {{ - put("f1",1); put("f3",3); - }}; - @BeanProperty(properties="f1,f2") public E2[] x3 = {new E2()}; - @BeanProperty(properties="f1,f2") public List<E2> x4 = new LinkedList<E2>() {{ - add(new E2()); - }}; - @BeanProperty(properties="f1") public ObjectMap[] x5 = {new ObjectMap().append("f1",1).append("f3",3)}; - @BeanProperty(properties="f1") public List<ObjectMap> x6 = new LinkedList<ObjectMap>() {{ - add(new ObjectMap().append("f1",1).append("f3",3)); - }}; - } - - public static class E2 { - public int f1 = 1; - @Xml(format=ATTR) public int f2 = 2; - public int f3 = 3; - @Xml(format=ATTR) public int f4 = 4; - } - - //==================================================================================================== - // @BeanProperty.properties annotation on list of beans. - //==================================================================================================== - @Test - public void testBeanPropertyPropertiesOnListOfBeans() throws Exception { - XmlSerializer s = XmlSerializer.DEFAULT_SQ; - List<Test7b> l = new LinkedList<Test7b>(); - Test7b t = new Test7b(); - t.x1.add(new Test7b()); - l.add(t); - String xml = s.serialize(l); - assertEquals("<array><object><x1><object><x2>2</x2></object></x1><x2>2</x2></object></array>", xml); - } - - public static class Test7b { - @BeanProperty(properties="x2") public List<Test7b> x1 = new LinkedList<Test7b>(); - public int x2 = 2; - } - - //==================================================================================================== - // Test that URLs and URIs are serialized and parsed correctly. - //==================================================================================================== - @Test - public void testURIAttr() throws Exception { - XmlSerializer s = XmlSerializer.DEFAULT_SQ; - XmlParser p = XmlParser.DEFAULT; - - G t = new G(); - t.uri = new URI("http://uri"); - t.f1 = new URI("http://f1"); - t.f2 = new URL("http://f2"); - - String xml = s.serialize(t); - t = p.parse(xml, G.class); - assertEquals("http://uri", t.uri.toString()); - assertEquals("http://f1", t.f1.toString()); - assertEquals("http://f2", t.f2.toString()); - } - - public static class G { - @Rdf(beanUri=true) public URI uri; - public URI f1; - public URL f2; - } - - //==================================================================================================== - // Test URIs with URI_CONTEXT and URI_AUTHORITY - //==================================================================================================== - @Test - public void testUris() throws Exception { - WriterSerializer s = new XmlSerializer.Sq(); - TestURI t = new TestURI(); - String r; - String expected; - - s.setProperty(SERIALIZER_relativeUriBase, null); - r = s.serialize(t); - expected = "" - +"<object f0='f0/x0'>" - +"<f1>f1/x1</f1>" - +"<f2>/f2/x2</f2>" - +"<f3>http://www.apache.org/f3/x3</f3>" - +"<f4>f4/x4</f4>" - +"<f5>/f5/x5</f5>" - +"<f6>http://www.apache.org/f6/x6</f6>" - +"<f7>http://www.apache.org/f7/x7</f7>" - +"<f8>f8/x8</f8>" - +"<f9>f9/x9</f9>" - +"<fa>http://www.apache.org/fa/xa#MY_LABEL</fa>" - +"<fb>http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar</fb>" - +"<fc>http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL</fc>" - +"<fd>http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar</fd>" - +"<fe>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</fe>" - +"</object>"; - assertEquals(expected, r); - - s.setProperty(SERIALIZER_relativeUriBase, ""); // Same as null. - r = s.serialize(t); - assertEquals(expected, r); - - s.setProperty(SERIALIZER_relativeUriBase, "/cr"); - r = s.serialize(t); - expected = "" - +"<object f0='/cr/f0/x0'>" - +"<f1>/cr/f1/x1</f1>" - +"<f2>/f2/x2</f2>" - +"<f3>http://www.apache.org/f3/x3</f3>" - +"<f4>/cr/f4/x4</f4>" - +"<f5>/f5/x5</f5>" - +"<f6>http://www.apache.org/f6/x6</f6>" - +"<f7>http://www.apache.org/f7/x7</f7>" - +"<f8>/cr/f8/x8</f8>" - +"<f9>/cr/f9/x9</f9>" - +"<fa>http://www.apache.org/fa/xa#MY_LABEL</fa>" - +"<fb>http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar</fb>" - +"<fc>http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL</fc>" - +"<fd>http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar</fd>" - +"<fe>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</fe>" - +"</object>"; - assertEquals(expected, r); - - s.setProperty(SERIALIZER_relativeUriBase, "/cr/"); // Same as above - r = s.serialize(t); - assertEquals(expected, r); - - s.setProperty(SERIALIZER_relativeUriBase, "/"); - r = s.serialize(t); - expected = "" - +"<object f0='/f0/x0'>" - +"<f1>/f1/x1</f1>" - +"<f2>/f2/x2</f2>" - +"<f3>http://www.apache.org/f3/x3</f3>" - +"<f4>/f4/x4</f4>" - +"<f5>/f5/x5</f5>" - +"<f6>http://www.apache.org/f6/x6</f6>" - +"<f7>http://www.apache.org/f7/x7</f7>" - +"<f8>/f8/x8</f8>" - +"<f9>/f9/x9</f9>" - +"<fa>http://www.apache.org/fa/xa#MY_LABEL</fa>" - +"<fb>http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar</fb>" - +"<fc>http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL</fc>" - +"<fd>http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar</fd>" - +"<fe>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</fe>" - +"</object>"; - assertEquals(expected, r); - - s.setProperty(SERIALIZER_relativeUriBase, null); - - s.setProperty(SERIALIZER_absolutePathUriBase, "http://foo"); - r = s.serialize(t); - expected = "" - +"<object f0='f0/x0'>" - +"<f1>f1/x1</f1>" - +"<f2>http://foo/f2/x2</f2>" - +"<f3>http://www.apache.org/f3/x3</f3>" - +"<f4>f4/x4</f4>" - +"<f5>http://foo/f5/x5</f5>" - +"<f6>http://www.apache.org/f6/x6</f6>" - +"<f7>http://www.apache.org/f7/x7</f7>" - +"<f8>f8/x8</f8>" - +"<f9>f9/x9</f9>" - +"<fa>http://www.apache.org/fa/xa#MY_LABEL</fa>" - +"<fb>http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar</fb>" - +"<fc>http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL</fc>" - +"<fd>http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar</fd>" - +"<fe>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</fe>" - +"</object>"; - assertEquals(expected, r); - - s.setProperty(SERIALIZER_absolutePathUriBase, "http://foo/"); - r = s.serialize(t); - assertEquals(expected, r); - - s.setProperty(SERIALIZER_absolutePathUriBase, ""); // Same as null. - r = s.serialize(t); - expected = "" - +"<object f0='f0/x0'>" - +"<f1>f1/x1</f1>" - +"<f2>/f2/x2</f2>" - +"<f3>http://www.apache.org/f3/x3</f3>" - +"<f4>f4/x4</f4>" - +"<f5>/f5/x5</f5>" - +"<f6>http://www.apache.org/f6/x6</f6>" - +"<f7>http://www.apache.org/f7/x7</f7>" - +"<f8>f8/x8</f8>" - +"<f9>f9/x9</f9>" - +"<fa>http://www.apache.org/fa/xa#MY_LABEL</fa>" - +"<fb>http://www.apache.org/fb/xb?label=MY_LABEL&foo=bar</fb>" - +"<fc>http://www.apache.org/fc/xc?foo=bar&label=MY_LABEL</fc>" - +"<fd>http://www.apache.org/fd/xd?label2=MY_LABEL&foo=bar</fd>" - +"<fe>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</fe>" - +"</object>"; - assertEquals(expected, r); - } - - //==================================================================================================== - // Validate that you cannot update properties on locked serializer. - //==================================================================================================== - @Test - public void testLockedSerializer() throws Exception { - XmlSerializer s = new XmlSerializer().lock(); - try { - s.setProperty(XmlSerializerContext.XML_enableNamespaces, true); - fail("Locked exception not thrown"); - } catch (LockedException e) {} - try { - s.setProperty(SerializerContext.SERIALIZER_addBeanTypeProperties, true); - fail("Locked exception not thrown"); - } catch (LockedException e) {} - try { - s.setProperty(BeanContext.BEAN_beanMapPutReturnsOldValue, true); - fail("Locked exception not thrown"); - } catch (LockedException e) {} - } - - //==================================================================================================== - // Recursion - //==================================================================================================== - @Test - public void testRecursion() throws Exception { - XmlSerializer s = new XmlSerializer().setProperty(XML_enableNamespaces, false); - - R1 r1 = new R1(); - R2 r2 = new R2(); - R3 r3 = new R3(); - r1.r2 = r2; - r2.r3 = r3; - r3.r1 = r1; - - // No recursion detection - try { - s.serialize(r1); - fail("Exception expected!"); - } catch (Exception e) { - String msg = e.getLocalizedMessage(); - assertTrue(msg.contains("It's recommended you use the SerializerContext.SERIALIZER_detectRecursions setting to help locate the loop.")); - } - - // Recursion detection, no ignore - s.setProperty(SERIALIZER_detectRecursions, true); - try { - s.serialize(r1); - fail("Exception expected!"); - } catch (Exception e) { - String msg = e.getLocalizedMessage(); - assertTrue(msg.contains("[0]<noname>:org.apache.juneau.xml.CommonTest$R1")); - assertTrue(msg.contains("->[1]r2:org.apache.juneau.xml.CommonTest$R2")); - assertTrue(msg.contains("->[2]r3:org.apache.juneau.xml.CommonTest$R3")); - assertTrue(msg.contains("->[3]r1:org.apache.juneau.xml.CommonTest$R1")); - } - - s.setProperty(SERIALIZER_ignoreRecursions, true); - assertEquals("<object><name>foo</name><r2><name>bar</name><r3><name>baz</name></r3></r2></object>", s.serialize(r1)); - - // Make sure this doesn't blow up. - s.getSchemaSerializer().serialize(r1); - } - - public static class R1 { - public String name = "foo"; - public R2 r2; - } - public static class R2 { - public String name = "bar"; - public R3 r3; - } - public static class R3 { - public String name = "baz"; - public R1 r1; - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/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 deleted file mode 100755 index e2fd383..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/xml/CommonXmlTest.java +++ /dev/null @@ -1,81 +0,0 @@ -// *************************************************************************************************************************** -// * 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.apache.juneau.TestUtils.*; -import static org.apache.juneau.xml.XmlSerializerContext.*; -import static org.apache.juneau.xml.annotation.XmlFormat.*; -import static org.junit.Assert.*; - -import java.net.*; - -import org.apache.juneau.xml.annotation.*; -import org.junit.*; - -@SuppressWarnings("javadoc") -public class CommonXmlTest { - - //==================================================================================================== - // Test 18a - @Bean.uri annotation - //==================================================================================================== - @Test - public void testBeanUriAnnotation() throws Exception { - XmlParser p = XmlParser.DEFAULT; - XmlSerializer s = XmlSerializer.DEFAULT_SQ; - - A t = new A("http://foo", 123, "bar"); - String xml = s.serialize(t); - assertEquals("<object url='http://foo' id='123'><name>bar</name></object>", xml); - - t = p.parse(xml, A.class); - assertEquals("http://foo", t.url.toString()); - assertEquals(123, t.id); - assertEquals("bar", t.name); - - validateXml(t, s); - } - - public static class A { - @Xml(format=XmlFormat.ATTR) public URL url; - @Xml(format=ATTR) public int id; - public String name; - public A() {} - public A(String url, int id, String name) throws Exception { - this.url = new URL(url); - this.id = id; - this.name = name; - } - } - - //==================================================================================================== - // Bean.uri annotation, only uri property - //==================================================================================================== - @Test - public void testBeanUriAnnotationOnlyUriProperty() throws Exception { - XmlSerializer s = new XmlSerializer.Sq().setProperty(XML_addNamespaceUrisToRoot, false); - - B t = new B("http://foo"); - String xml = s.serialize(t); - assertEquals("<object url='http://foo'><url2>http://foo/2</url2></object>", xml); - } - - public static class B { - @Xml(format=XmlFormat.ATTR) public URL url; - public URL url2; - public B() {} - public B(String url) throws Exception { - this.url = new URL(url); - this.url2 = new URL(url+"/2"); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/e4dfdf81/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 deleted file mode 100644 index 1bfec26..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/xml/InvalidXmlBeansTest.java +++ /dev/null @@ -1,230 +0,0 @@ -// *************************************************************************************************************************** -// * 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; - } -}