Trying to work on getting xml backed stuff working; next challenge, lists (and arrays)
diff --git a/build-test.xml b/build-test.xml
index 5884d68..929cc20 100644
--- a/build-test.xml
+++ b/build-test.xml
@@ -132,8 +132,6 @@
<batchtest fork="no" todir="${dir.test.xmlresults}">
<fileset dir="${dir.test.classes}">
<exclude name="**/*$*.class"/>
- <include name="org/codehaus/jackson/map/ext/Test*.class"/>
- <include name="org/codehaus/jackson/map/xml/Test*.class"/>
<!-- 25-Nov-2009, tatu: Argh. Looks like classloading
is problematic for this test; works when run
separately as single test... but not in sequence
@@ -159,6 +157,7 @@
<batchtest fork="no" todir="${dir.test.xmlresults}">
<fileset dir="${dir.test.classes}">
<exclude name="**/*$*.class"/>
+ <exclude name="org/codehaus/jackson/xml/XmlTestBase.class"/>
<include name="org/codehaus/jackson/jaxrs/*.class"/>
<include name="org/codehaus/jackson/xml/*.class"/>
</fileset>
diff --git a/src/test/org/codehaus/jackson/xml/TestDeserialization.java b/src/test/org/codehaus/jackson/xml/TestDeserialization.java
index ca36058..331b25f 100644
--- a/src/test/org/codehaus/jackson/xml/TestDeserialization.java
+++ b/src/test/org/codehaus/jackson/xml/TestDeserialization.java
@@ -1,7 +1,23 @@
package org.codehaus.jackson.xml;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.codehaus.jackson.xml.annotate.JacksonXmlProperty;
+
public class TestDeserialization extends main.BaseTest
{
+ static class AttributeBean
+ {
+ @JacksonXmlProperty(isAttribute=true, localName="attr")
+ public String text = "?";
+ }
+
+ static class ListBean
+ {
+ public final List<Integer> values = new ArrayList<Integer>();
+ }
+
/*
/**********************************************************
/* Unit tests
@@ -21,4 +37,26 @@
FiveMinuteUser result = mapper.readValue(xml, FiveMinuteUser.class);
assertEquals(user, result);
}
+
+ public void testFromAttribute() throws Exception
+ {
+ XmlMapper mapper = new XmlMapper();
+ AttributeBean bean = mapper.readValue("<AttributeBean attr=\"abc\"></AttributeBean>", AttributeBean.class);
+ assertNotNull(bean);
+ assertEquals("abc", bean.text);
+ }
+
+ public void testListBean() throws Exception
+ {
+ XmlMapper mapper = new XmlMapper();
+ ListBean bean = mapper.readValue(
+ "<ListBean><values><values>1</values><values>2</values><values>3</values></values></ListBean>",
+ ListBean.class);
+ assertNotNull(bean);
+ assertNotNull(bean.values);
+ assertEquals(3, bean.values.size());
+ assertEquals(Integer.valueOf(1), bean.values.get(0));
+ assertEquals(Integer.valueOf(2), bean.values.get(1));
+ assertEquals(Integer.valueOf(3), bean.values.get(2));
+ }
}
diff --git a/src/test/org/codehaus/jackson/xml/TestSerialization.java b/src/test/org/codehaus/jackson/xml/TestSerialization.java
index 3b9d39e..e40b3af 100644
--- a/src/test/org/codehaus/jackson/xml/TestSerialization.java
+++ b/src/test/org/codehaus/jackson/xml/TestSerialization.java
@@ -4,9 +4,14 @@
//import org.codehaus.jackson.xc.JaxbAnnotationIntrospector;
+import java.io.*;
+import java.util.*;
+
+import javax.xml.bind.JAXB;
+
import org.codehaus.jackson.xml.annotate.JacksonXmlProperty;
-public class TestSerialization extends BaseXmlTest
+public class TestSerialization extends XmlTestBase
{
static class StringBean
{
@@ -31,6 +36,18 @@
@JacksonXmlProperty(isAttribute=true, localName="id")
public int attr = 42;
}
+
+ static class ListBean
+ {
+ public final List<Integer> values = new ArrayList<Integer>();
+
+ public ListBean() { }
+ public ListBean(int... ints) {
+ for (int i : ints) {
+ values.add(Integer.valueOf(i));
+ }
+ }
+ }
/*
/**********************************************************
@@ -41,7 +58,7 @@
/**
* Unit test to verify that root name is properly set
*/
- public void testRootName() throws Exception
+ public void testRootName() throws IOException
{
XmlMapper mapper = new XmlMapper();
String xml = mapper.writeValueAsString(new StringBean());
@@ -54,19 +71,39 @@
}
}
- public void testSimpleAttribute() throws Exception
+ public void testSimpleAttribute() throws IOException
{
XmlMapper mapper = new XmlMapper();
String xml = mapper.writeValueAsString(new AttributeBean());
xml = removeSjsxpNamespace(xml);
- assertEquals("<AttributeBean attr=\"something\"></AttributeBean>", xml);
+ assertEquals("<AttributeBean attr=\"something\"/>", xml);
}
- public void testSimpleAttrAndElem() throws Exception
+ public void testSimpleAttrAndElem() throws IOException
{
XmlMapper mapper = new XmlMapper();
String xml = mapper.writeValueAsString(new AttrAndElem());
xml = removeSjsxpNamespace(xml);
assertEquals("<AttrAndElem id=\"42\"><elem>whatever</elem></AttrAndElem>", xml);
}
+
+ public void testSimpleList() throws IOException
+ {
+ XmlMapper mapper = new XmlMapper();
+ String xml = mapper.writeValueAsString(new ListBean(1, 2, 3));
+ xml = removeSjsxpNamespace(xml);
+ // 06-Dec-2010, tatu: Not completely ok; should default to not using wrapper...
+ assertEquals("<ListBean><values><values>1</values><values>2</values><values>3</values></values></ListBean>", xml);
+
+ }
+
+ /*
+ // manual 'test':
+ public void testJAXB() throws Exception
+ {
+ StringWriter sw = new StringWriter();
+ JAXB.marshal(new ListBean(1, 2, 3), sw);
+ System.out.println("JAXB -> "+sw);
+ }
+ */
}
diff --git a/src/test/org/codehaus/jackson/xml/TestXmlGenerator.java b/src/test/org/codehaus/jackson/xml/TestXmlGenerator.java
index 590103b..350eee5 100644
--- a/src/test/org/codehaus/jackson/xml/TestXmlGenerator.java
+++ b/src/test/org/codehaus/jackson/xml/TestXmlGenerator.java
@@ -2,7 +2,7 @@
import java.io.*;
-public class TestXmlGenerator extends BaseXmlTest
+public class TestXmlGenerator extends XmlTestBase
{
/*
public void testSimpleElement() throws Exception
@@ -41,7 +41,7 @@
String xml = out.toString();
// one more thing: remove that annoying 'xmlns' decl, if it's there:
xml = removeSjsxpNamespace(xml);
- assertEquals("<root attr=\"value\"></root>", xml);
+ assertEquals("<root attr=\"value\"/>", xml);
}
public void testSecondLevelAttribute() throws Exception
@@ -63,7 +63,7 @@
String xml = out.toString();
// one more thing: remove that annoying 'xmlns' decl, if it's there:
xml = removeSjsxpNamespace(xml);
- assertEquals("<root><elem attr=\"value\"></elem></root>", xml);
+ assertEquals("<root><elem attr=\"value\"/></root>", xml);
}
public void testAttrAndElem() throws Exception
diff --git a/src/test/org/codehaus/jackson/xml/BaseXmlTest.java b/src/test/org/codehaus/jackson/xml/XmlTestBase.java
similarity index 80%
rename from src/test/org/codehaus/jackson/xml/BaseXmlTest.java
rename to src/test/org/codehaus/jackson/xml/XmlTestBase.java
index 62c9603..3d28ba0 100644
--- a/src/test/org/codehaus/jackson/xml/BaseXmlTest.java
+++ b/src/test/org/codehaus/jackson/xml/XmlTestBase.java
@@ -1,10 +1,12 @@
package org.codehaus.jackson.xml;
-import junit.framework.TestCase;
-
-public abstract class BaseXmlTest
- extends TestCase
+public abstract class XmlTestBase
+ extends main.BaseTest
{
+ protected XmlTestBase() {
+ super();
+ }
+
/**
* Helper method that tries to remove unnecessary namespace
* declaration that default JDK XML parser (SJSXP) seems fit