diff --git a/xstream/pom.xml b/xstream/pom.xml
index 8a5aec41e9..22c2ce2941 100644
--- a/xstream/pom.xml
+++ b/xstream/pom.xml
@@ -14,6 +14,12 @@
1.4.5
+
+ org.codehaus.jettison
+ jettison
+ 1.3.7
+
+
junit
junit
diff --git a/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java b/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
index 5dec19d181..744b60f78e 100644
--- a/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
+++ b/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
@@ -1,19 +1,23 @@
package com.baeldung.initializer;
import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver;
+import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver;
public class SimpleXstreamInitializer {
- private XStream xtreamInstance;
+ public XStream getXstreamInstance() {
+ XStream xtreamInstance = new XStream();
+ return xtreamInstance;
+ }
- public XStream getXstreamInstance() {
- if (xtreamInstance == null) {
- synchronized (SimpleXstreamInitializer.class) {
- if (xtreamInstance == null) {
- xtreamInstance = new XStream();
- }
- }
- }
- return xtreamInstance;
- }
+ public XStream getXstreamJettisonMappedInstance() {
+ XStream xstreamInstance = new XStream(new JettisonMappedXmlDriver());
+ return xstreamInstance;
+ }
+
+ public XStream getXstreamJsonHierarchicalInstance() {
+ XStream xstreamInstance = new XStream(new JsonHierarchicalStreamDriver());
+ return xstreamInstance;
+ }
}
\ No newline at end of file
diff --git a/xstream/src/test/java/com/baeldung/test/XStreamJettisonTest.java b/xstream/src/test/java/com/baeldung/test/XStreamJettisonTest.java
new file mode 100644
index 0000000000..6111dfbb24
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/test/XStreamJettisonTest.java
@@ -0,0 +1,48 @@
+package com.baeldung.test;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.ContactDetails;
+import com.baeldung.pojo.Customer;
+import com.baeldung.utility.SimpleDataGeneration;
+import com.thoughtworks.xstream.XStream;
+
+public class XStreamJettisonTest {
+
+ private Customer customer = null;
+
+ private String dataJson = null;
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamJettisonMappedInstance();
+ xstream.processAnnotations(Customer.class);
+ }
+
+ @Test
+ public void convertObjectToJson() {
+ customer = SimpleDataGeneration.generateData();
+ xstream.alias("customer" , Customer.class);
+ xstream.alias("contactDetails" , ContactDetails.class);
+ xstream.aliasField("fn" , Customer.class , "firstName");
+ dataJson = xstream.toXML(customer);
+ System.out.println(dataJson);
+ Assert.assertNotNull(dataJson);
+ }
+
+ @Test
+ public void convertJsonToObject() {
+ customer = SimpleDataGeneration.generateData();
+ dataJson = xstream.toXML(customer);
+ customer = (Customer) xstream.fromXML(dataJson);
+ System.out.println(customer);
+ Assert.assertNotNull(customer);
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalTest.java b/xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalTest.java
new file mode 100644
index 0000000000..f92faa7196
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/test/XStreamJsonHierarchicalTest.java
@@ -0,0 +1,45 @@
+package com.baeldung.test;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.ContactDetails;
+import com.baeldung.pojo.Customer;
+import com.baeldung.utility.SimpleDataGeneration;
+import com.thoughtworks.xstream.XStream;
+
+public class XStreamJsonHierarchicalTest {
+
+ private Customer customer = null;
+ private String dataJson = null;
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamJsonHierarchicalInstance();
+ xstream.processAnnotations(Customer.class);
+ }
+
+ @Test
+ public void convertObjectToJson() {
+ customer = SimpleDataGeneration.generateData();
+ xstream.alias("customer", Customer.class);
+ xstream.alias("contactDetails", ContactDetails.class);
+ xstream.aliasField("fn", Customer.class, "firstName");
+ dataJson = xstream.toXML(customer);
+ System.out.println(dataJson);
+ Assert.assertNotNull(dataJson);
+ }
+
+ @Test
+ public void convertJsonToObject() {
+ customer = SimpleDataGeneration.generateData();
+ dataJson = xstream.toXML(customer);
+ // customer = (Customer) xstream.fromXML(dataJson);
+ // Assert.assertNotNull(customer);
+ }
+
+}