/*
* Copyright 2011, 2012 Odysseus Software GmbH
*
* Licensed 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.synapse.commons.staxon.core.json.jaxb;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlType;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import junit.framework.Assert;
import org.junit.Test;
import org.apache.synapse.commons.staxon.core.json.JsonXMLInputFactory;
import org.apache.synapse.commons.staxon.core.json.JsonXMLOutputFactory;
import org.apache.synapse.commons.staxon.core.json.jaxb.sample.SampleRootElement;
import org.apache.synapse.commons.staxon.core.json.jaxb.sample.SampleType;
import org.apache.synapse.commons.staxon.core.json.jaxb.sample.SampleTypeWithNamespace;
public class JsonXMLBinderTest {
@JsonXML
static class JsonXMLDefault {
}
@JsonXML(autoArray = true, namespaceDeclarations = false, namespaceSeparator = '_', prettyPrint = true, virtualRoot = true)
static class JsonXMLCustom {
}
@JsonXML(virtualRoot = true, multiplePaths = "/elements")
static class JsonXMLVirtualSampleRootElement {
}
@XmlType
static class EmptyType {
}
@Test
public void testIsBindable() {
Assert.assertTrue(new JsonXMLBinder().isBindable(SampleRootElement.class));
Assert.assertTrue(new JsonXMLBinder().isBindable(SampleType.class));
Assert.assertFalse(new JsonXMLBinder().isBindable(getClass()));
}
@Test
public void testCreateInputFactory() throws JAXBException {
JsonXMLInputFactory factory = new JsonXMLBinder().createInputFactory(SampleRootElement.class, JsonXMLDefault.class.getAnnotation(JsonXML.class));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLInputFactory.PROP_MULTIPLE_PI));
Assert.assertEquals(Character.valueOf(':'), factory.getProperty(JsonXMLInputFactory.PROP_NAMESPACE_SEPARATOR));
Assert.assertNull(factory.getProperty(JsonXMLInputFactory.PROP_VIRTUAL_ROOT));
factory = new JsonXMLBinder().createInputFactory(SampleRootElement.class, JsonXMLCustom.class.getAnnotation(JsonXML.class));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLInputFactory.PROP_MULTIPLE_PI));
Assert.assertEquals(Character.valueOf('_'), factory.getProperty(JsonXMLInputFactory.PROP_NAMESPACE_SEPARATOR));
Assert.assertEquals(new QName("sampleRootElement"), factory.getProperty(JsonXMLInputFactory.PROP_VIRTUAL_ROOT));
}
@Test
public void testCreateOutputFactory() throws JAXBException {
JsonXMLOutputFactory factory = new JsonXMLBinder().createOutputFactory(SampleRootElement.class, JsonXMLDefault.class.getAnnotation(JsonXML.class));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLOutputFactory.PROP_MULTIPLE_PI));
Assert.assertEquals(Character.valueOf(':'), factory.getProperty(JsonXMLOutputFactory.PROP_NAMESPACE_SEPARATOR));
Assert.assertNull(factory.getProperty(JsonXMLOutputFactory.PROP_VIRTUAL_ROOT));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLOutputFactory.PROP_NAMESPACE_DECLARATIONS));
Assert.assertEquals(Boolean.FALSE, factory.getProperty(JsonXMLOutputFactory.PROP_PRETTY_PRINT));
Assert.assertEquals(Boolean.FALSE, factory.getProperty(JsonXMLOutputFactory.PROP_AUTO_ARRAY));
factory = new JsonXMLBinder().createOutputFactory(SampleRootElement.class, JsonXMLCustom.class.getAnnotation(JsonXML.class));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLOutputFactory.PROP_MULTIPLE_PI));
Assert.assertEquals(Character.valueOf('_'), factory.getProperty(JsonXMLOutputFactory.PROP_NAMESPACE_SEPARATOR));
Assert.assertEquals(new QName("sampleRootElement"), factory.getProperty(JsonXMLOutputFactory.PROP_VIRTUAL_ROOT));
Assert.assertEquals(Boolean.FALSE, factory.getProperty(JsonXMLOutputFactory.PROP_NAMESPACE_DECLARATIONS));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLOutputFactory.PROP_PRETTY_PRINT));
Assert.assertEquals(Boolean.TRUE, factory.getProperty(JsonXMLOutputFactory.PROP_AUTO_ARRAY));
}
@Test
public void testMarshallSampleRootElement() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
StringWriter result = new StringWriter();
Class<?> type = SampleRootElement.class;
SampleRootElement sampleRootElement = new SampleRootElement();
sampleRootElement.attribute = "hello";
sampleRootElement.elements = Arrays.asList("world");
XMLStreamWriter writer = new JsonXMLBinder().createXMLStreamWriter(type, config, result);
Marshaller marshaller = JAXBContext.newInstance(type).createMarshaller();
new JsonXMLBinder().marshal(type, config, marshaller, writer, sampleRootElement);
writer.close();
String json = "{\"sampleRootElement\":{\"@attribute\":\"hello\",\"elements\":\"world\"}}";
Assert.assertEquals(json, result.toString());
}
@Test
public void testMarshallSampleRootElementWithVirtualRoot() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
StringWriter result = new StringWriter();
Class<?> type = SampleRootElement.class;
SampleRootElement sampleRootElement = new SampleRootElement();
sampleRootElement.attribute = "hello";
sampleRootElement.elements = Arrays.asList("world");
XMLStreamWriter writer = new JsonXMLBinder().createXMLStreamWriter(type, config, result);
Marshaller marshaller = JAXBContext.newInstance(type).createMarshaller();
new JsonXMLBinder().marshal(type, config, marshaller, writer, sampleRootElement);
writer.close();
String json = "{\"@attribute\":\"hello\",\"elements\":[\"world\"]}";
Assert.assertEquals(json, result.toString());
}
@Test
public void testMarshallSampleType() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
StringWriter result = new StringWriter();
Class<?> type = SampleType.class;
SampleType sampleType = new SampleType();
sampleType.element = "hi!";
XMLStreamWriter writer = new JsonXMLBinder().createXMLStreamWriter(type, config, result);
Marshaller marshaller = JAXBContext.newInstance(type).createMarshaller();
new JsonXMLBinder().marshal(type, config, marshaller, writer, sampleType);
writer.close();
String json = "{\"sampleType\":{\"element\":\"hi!\"}}";
Assert.assertEquals(json, result.toString());
}
@Test
public void testMarshallSampleTypeWithNamespace() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
StringWriter result = new StringWriter();
Class<?> type = SampleTypeWithNamespace.class;
SampleTypeWithNamespace sampleTypeWithNamespace = new SampleTypeWithNamespace();
XMLStreamWriter writer = new JsonXMLBinder().createXMLStreamWriter(type, config, result);
Marshaller marshaller = JAXBContext.newInstance(type).createMarshaller();
new JsonXMLBinder().marshal(type, config, marshaller, writer, sampleTypeWithNamespace);
writer.close();
Matcher prefixMatcher = Pattern.compile("@xmlns:([a-z1-9]+)").matcher(result.toString());
Assert.assertTrue(prefixMatcher.find());
String prefix = prefixMatcher.group(1);
String json = String.format("{\"%s:sampleTypeWithNamespace\":{\"@xmlns:%s\":\"urn:staxon:jaxb:test\"}}", prefix, prefix);
Assert.assertEquals(json, result.toString());
}
@Test
public void testUnmarshallSampleRootElement() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleRootElement\":{\"@attribute\":\"hello\",\"elements\":[\"world\"]}}";
Class<SampleRootElement> type = SampleRootElement.class;
XMLStreamReader reader = new JsonXMLBinder().createXMLStreamReader(type, config, new StringReader(json));
Unmarshaller unmarshaller = JAXBContext.newInstance(type).createUnmarshaller();
SampleRootElement sampleRootElement = new JsonXMLBinder().unmarshal(type, config, unmarshaller, reader);
Assert.assertEquals("hello", sampleRootElement.attribute);
Assert.assertEquals("world", sampleRootElement.elements.get(0));
}
@Test
public void testUnmarshallSampleRootElementWithVirtualRoot() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
String json = "{\"@attribute\":\"hello\",\"elements\":[\"world\"]}";
Class<SampleRootElement> type = SampleRootElement.class;
XMLStreamReader reader = new JsonXMLBinder().createXMLStreamReader(type, config, new StringReader(json));
Unmarshaller unmarshaller = JAXBContext.newInstance(type).createUnmarshaller();
SampleRootElement sampleRootElement = new JsonXMLBinder().unmarshal(type, config, unmarshaller, reader);
Assert.assertEquals("hello", sampleRootElement.attribute);
Assert.assertEquals("world", sampleRootElement.elements.get(0));
}
@Test
public void testUnmarshallSampleType() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleType\":{\"element\":\"hi!\"}}";
Class<SampleType> type = SampleType.class;
XMLStreamReader reader = new JsonXMLBinder().createXMLStreamReader(type, config, new StringReader(json));
Unmarshaller unmarshaller = JAXBContext.newInstance(type).createUnmarshaller();
SampleType sampleType = new JsonXMLBinder().unmarshal(type, config, unmarshaller, reader);
Assert.assertEquals("hi!", sampleType.element);
}
@Test
public void testUnmarshallSampleTypeWithNamespace() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleTypeWithNamespace\":{\"@xmlns\":\"urn:staxon-jaxrs:test\"}}";
Class<SampleTypeWithNamespace> type = SampleTypeWithNamespace.class;
XMLStreamReader reader = new JsonXMLBinder().createXMLStreamReader(type, config, new StringReader(json));
Unmarshaller unmarshaller = JAXBContext.newInstance(SampleTypeWithNamespace.class).createUnmarshaller();
Assert.assertNotNull(new JsonXMLBinder().unmarshal(SampleTypeWithNamespace.class, config, unmarshaller, reader));
}
@Test
public void testWriteObjectSampleRootElement() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
SampleRootElement sampleRootElement = new SampleRootElement();
sampleRootElement.attribute = "hello";
sampleRootElement.elements = Arrays.asList("world");
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeObject(SampleRootElement.class, config, context, writer, sampleRootElement);
String json = "{\"sampleRootElement\":{\"@attribute\":\"hello\",\"elements\":\"world\"}}";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteObjectSampleType() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
SampleType sampleType = new SampleType();
sampleType.element = "hi!";
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleType.class);
new JsonXMLBinder().writeObject(SampleType.class, config, context, writer, sampleType);
String json = "{\"sampleType\":{\"element\":\"hi!\"}}";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteObjectNull() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleType.class);
new JsonXMLBinder().writeObject(SampleType.class, config, context, writer, null);
Assert.assertEquals("null", writer.toString());
}
@Test
public void testWriteObjectNullWithVirtualRoot() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleType.class);
new JsonXMLBinder().writeObject(SampleType.class, config, context, writer, null);
Assert.assertEquals("null", writer.toString());
}
@Test
public void testReadObjectSampleRootElement() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleRootElement\":{\"@attribute\":\"hello\",\"elements\":[\"world\"]}}";
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
SampleRootElement sampleRootElement =
new JsonXMLBinder().readObject(SampleRootElement.class, config, context, new StringReader(json));
Assert.assertEquals("hello", sampleRootElement.attribute);
Assert.assertEquals("world", sampleRootElement.elements.get(0));
}
@Test
public void testReadObjectSampleType() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleType\":{\"element\":\"hi!\"}}";
JAXBContext context = JAXBContext.newInstance(SampleType.class);
SampleType sampleType =
new JsonXMLBinder().readObject(SampleType.class, config, context, new StringReader(json));
Assert.assertEquals("hi!", sampleType.element);
}
@Test
public void testReadObjectNull() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
Assert.assertNull(new JsonXMLBinder().readObject(SampleRootElement.class, config, context, new StringReader("null")));
}
@Test
public void testReadObjectNullWithVirtualRoot() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
Assert.assertNotNull(new JsonXMLBinder().readObject(SampleRootElement.class, config, context, new StringReader("null")));
}
@Test
public void testWriteArraySampleRootElement() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
List<SampleRootElement> list = new ArrayList<SampleRootElement>();
list.add(new SampleRootElement());
list.get(0).attribute = "hello";
list.add(new SampleRootElement());
list.get(1).attribute = "world";
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeArray(SampleRootElement.class, config, context, writer, list);
String json = "[{\"sampleRootElement\":{\"@attribute\":\"hello\"}},{\"sampleRootElement\":{\"@attribute\":\"world\"}}]";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteArraySampleRootElement_Document() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
List<SampleRootElement> list = new ArrayList<SampleRootElement>();
list.add(new SampleRootElement());
list.get(0).attribute = "hello";
list.add(new SampleRootElement());
list.get(1).attribute = "world";
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder(false).writeArray(SampleRootElement.class, config, context, writer, list);
String json = "{\"sampleRootElement\":[{\"@attribute\":\"hello\"},{\"@attribute\":\"world\"}]}";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteArraySampleType() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
List<SampleType> list = new ArrayList<SampleType>();
list.add(new SampleType());
list.get(0).element = "hello";
list.add(new SampleType());
list.get(1).element = "world";
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleType.class);
new JsonXMLBinder().writeArray(SampleType.class, config, context, writer, list);
String json = "[{\"sampleType\":{\"element\":\"hello\"}},{\"sampleType\":{\"element\":\"world\"}}]";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteArraySampleRootElementWithNull1() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
List<SampleRootElement> list = new ArrayList<SampleRootElement>();
list.add(new SampleRootElement());
list.get(0).attribute = "hello";
list.add(null);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeArray(SampleRootElement.class, config, context, writer, list);
String json = "[{\"@attribute\":\"hello\"},null]";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteArraySampleRootElementWithNull2() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
List<SampleRootElement> list = new ArrayList<SampleRootElement>();
list.add(null);
list.add(new SampleRootElement());
list.get(1).attribute = "hello";
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeArray(SampleRootElement.class, config, context, writer, list);
String json = "[null,{\"@attribute\":\"hello\"}]";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteArraySampleRootElementWithNull3() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
List<SampleRootElement> list = new ArrayList<SampleRootElement>();
list.add(null);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeArray(SampleRootElement.class, config, context, writer, list);
String json = "[null]";
Assert.assertEquals(json, writer.toString());
}
@Test
public void testWriteArrayEmpty1() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeArray(SampleRootElement.class, config, context, writer, new ArrayList<SampleRootElement>());
Assert.assertEquals("[]", writer.toString());
}
@Test
public void testWriteArrayEmpty2() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
new JsonXMLBinder().writeArray(SampleRootElement.class, config, context, writer, new ArrayList<SampleRootElement>());
Assert.assertEquals("[]", writer.toString());
}
@Test
public void testWriteArrayNull() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleType.class);
new JsonXMLBinder().writeArray(SampleType.class, config, context, writer, null);
Assert.assertEquals("null", writer.toString());
}
@Test
public void testWriteArrayNullWithVirtualRoot() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
StringWriter writer = new StringWriter();
JAXBContext context = JAXBContext.newInstance(SampleType.class);
new JsonXMLBinder().writeArray(SampleType.class, config, context, writer, null);
Assert.assertEquals("null", writer.toString());
}
@Test
public void testReadArraySampleRootElement() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleRootElement\":[{\"@attribute\":\"hello\"},{\"@attribute\":\"world\"}]}";
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
List<SampleRootElement> list =
new JsonXMLBinder().readArray(SampleRootElement.class, config, context, new StringReader(json));
Assert.assertEquals(2, list.size());
Assert.assertEquals("hello", list.get(0).attribute);
Assert.assertEquals("world", list.get(1).attribute);
}
@Test
public void testReadArraySampleRootElement_DocumentArray() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "[{\"sampleRootElement\":{\"@attribute\":\"hello\"}},{\"sampleRootElement\":{\"@attribute\":\"world\"}}]";
JAXBContext context = JAXBContext.newInstance(SampleRootElement.class);
List<SampleRootElement> list =
new JsonXMLBinder().readArray(SampleRootElement.class, config, context, new StringReader(json));
Assert.assertEquals(2, list.size());
Assert.assertEquals("hello", list.get(0).attribute);
Assert.assertEquals("world", list.get(1).attribute);
}
@Test
public void testReadArraySampleTypeWithNull1() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleType\":[{\"element\":\"hi!\"},null]}";
JAXBContext context = JAXBContext.newInstance(SampleType.class);
List<SampleType> list = new JsonXMLBinder().readArray(SampleType.class, config, context, new StringReader(json));
Assert.assertEquals(2, list.size());
Assert.assertEquals("hi!", list.get(0).element);
Assert.assertNull(list.get(1).element);
}
@Test
public void testReadArraySampleTypeWithNull2() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "{\"sampleType\":[null,{\"element\":\"hi!\"}]}";
JAXBContext context = JAXBContext.newInstance(SampleType.class);
List<SampleType> list = new JsonXMLBinder().readArray(SampleType.class, config, context, new StringReader(json));
Assert.assertEquals(2, list.size());
Assert.assertNull(list.get(0).element);
Assert.assertEquals("hi!", list.get(1).element);
}
@Test
public void testReadArraySampleTypeWithNull_DocumentArray1() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "[{\"sampleType\":{\"element\":\"hi!\"}},null]";
JAXBContext context = JAXBContext.newInstance(SampleType.class);
List<SampleType> list = new JsonXMLBinder().readArray(SampleType.class, config, context, new StringReader(json));
Assert.assertEquals(2, list.size());
Assert.assertEquals("hi!", list.get(0).element);
Assert.assertNull(list.get(1));
}
@Test
public void testReadArraySampleTypeWithNull_DocumentArray2() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
String json = "[null,{\"sampleType\":{\"element\":\"hi!\"}}]";
JAXBContext context = JAXBContext.newInstance(SampleType.class);
List<SampleType> list = new JsonXMLBinder().readArray(SampleType.class, config, context, new StringReader(json));
Assert.assertEquals(2, list.size());
Assert.assertNull(list.get(0));
Assert.assertEquals("hi!", list.get(1).element);
}
@Test
public void testReadArrayNull() throws Exception {
JsonXML config = JsonXMLDefault.class.getAnnotation(JsonXML.class);
JAXBContext context = JAXBContext.newInstance(SampleType.class);
Assert.assertNull(new JsonXMLBinder().readArray(SampleType.class, config, context, new StringReader("null")));
}
@Test
public void testReadArrayNullWithVirtualRoot() throws Exception {
JsonXML config = JsonXMLVirtualSampleRootElement.class.getAnnotation(JsonXML.class);
JAXBContext context = JAXBContext.newInstance(SampleType.class);
Assert.assertNotNull(new JsonXMLBinder().readArray(SampleType.class, config, context, new StringReader("null")));
}
}