diff --git a/xstream-introduction/.project b/xstream-introduction/.project
deleted file mode 100644
index cebf3c9cfa..0000000000
--- a/xstream-introduction/.project
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- xstream-introduction
- An Introduction To XStream. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
- org.eclipse.jdt.core.javanature
-
-
\ No newline at end of file
diff --git a/xstream-introduction/src/main/java/com/baeldung/annotation/pojo/Customer.java b/xstream-introduction/src/main/java/com/baeldung/annotation/pojo/Customer.java
deleted file mode 100644
index 42d1d039b0..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/annotation/pojo/Customer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.baeldung.annotation.pojo;
-
-import java.util.Date;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-@XStreamAlias("customer")
-public class Customer {
-
- @XStreamAlias("fn")
- private String firstName;
-
- private String lastName;
-
- private Date dob;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Date getDob() {
- return dob;
- }
-
- public void setDob(Date dob) {
- this.dob = dob;
- }
-
- @Override
- public String toString() {
- return "Customer [firstName=" + firstName + ", lastName=" + lastName
- + ", dob=" + dob + "]";
- }
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java b/xstream-introduction/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
deleted file mode 100644
index 881d7a5fc7..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.baeldung.annotation.pojo;
-
-import java.util.Date;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamOmitField;
-
-
-@XStreamAlias("customer")
-public class CustomerOmitField {
-
- @XStreamOmitField
- private String firstName;
-
- private String lastName;
-
- private Date dob;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Date getDob() {
- return dob;
- }
-
- public void setDob(Date dob) {
- this.dob = dob;
- }
-
- @Override
- public String toString() {
- return "CustomerOmitAnnotation [firstName=" + firstName + ", lastName="
- + lastName + ", dob=" + dob + "]";
- }
-
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/complex/pojo/ContactDetails.java b/xstream-introduction/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
deleted file mode 100644
index 88e721a84b..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.baeldung.complex.pojo;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-
-@XStreamAlias("ContactDetails")
-public class ContactDetails {
-
- private String mobile;
-
- private String landline;
-
- @XStreamAsAttribute
- private String contactType;
-
- public String getMobile() {
- return mobile;
- }
-
- public void setMobile(String mobile) {
- this.mobile = mobile;
- }
-
- public String getLandline() {
- return landline;
- }
-
- public void setLandline(String landline) {
- this.landline = landline;
- }
-
- public String getContactType() {
- return contactType;
- }
-
- public void setContactType(String contactType) {
- this.contactType = contactType;
- }
-
- @Override
- public String toString() {
- return "ContactDetails [mobile=" + mobile + ", landline=" + landline
- + ", contactType=" + contactType + "]";
- }
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/complex/pojo/Customer.java b/xstream-introduction/src/main/java/com/baeldung/complex/pojo/Customer.java
deleted file mode 100644
index 0cc3160c03..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/complex/pojo/Customer.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.baeldung.complex.pojo;
-
-import java.util.Date;
-import java.util.List;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-@XStreamAlias("customer")
-public class Customer {
-
- private String firstName;
-
- private String lastName;
-
- private Date dob;
-
- private List contactDetailsList;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Date getDob() {
- return dob;
- }
-
- public void setDob(Date dob) {
- this.dob = dob;
- }
-
- public List getContactDetailsList() {
- return contactDetailsList;
- }
-
- public void setContactDetailsList(List contactDetailsList) {
- this.contactDetailsList = contactDetailsList;
- }
-
- @Override
- public String toString() {
- return "Customer [firstName=" + firstName + ", lastName=" + lastName
- + ", dob=" + dob + ", contactDetailsList=" + contactDetailsList
- + "]";
- }
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java b/xstream-introduction/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
deleted file mode 100644
index 6d6a63bd7a..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.baeldung.implicit.collection.pojo;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
-
-@XStreamAlias("ContactDetails")
-public class ContactDetails {
-
- private String mobile;
-
- private String landline;
-
- @XStreamAsAttribute
- private String contactType;
-
- public String getMobile() {
- return mobile;
- }
-
- public void setMobile(String mobile) {
- this.mobile = mobile;
- }
-
- public String getLandline() {
- return landline;
- }
-
- public void setLandline(String landline) {
- this.landline = landline;
- }
-
- public String getContactType() {
- return contactType;
- }
-
- public void setContactType(String contactType) {
- this.contactType = contactType;
- }
-
- @Override
- public String toString() {
- return "ContactDetails [mobile=" + mobile + ", landline=" + landline
- + ", contactType=" + contactType + "]";
- }
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java b/xstream-introduction/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
deleted file mode 100644
index acbeff165e..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.baeldung.implicit.collection.pojo;
-
-import java.util.Date;
-import java.util.List;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamImplicit;
-
-@XStreamAlias("customer")
-public class Customer {
-
- private String firstName;
-
- private String lastName;
-
- private Date dob;
-
- @XStreamImplicit
- private List contactDetailsList;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Date getDob() {
- return dob;
- }
-
- public void setDob(Date dob) {
- this.dob = dob;
- }
-
- public List getContactDetailsList() {
- return contactDetailsList;
- }
-
- public void setContactDetailsList(List contactDetailsList) {
- this.contactDetailsList = contactDetailsList;
- }
-
- @Override
- public String toString() {
- return "Customer [firstName=" + firstName + ", lastName=" + lastName
- + ", dob=" + dob + ", contactDetailsList=" + contactDetailsList
- + "]";
- }
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java b/xstream-introduction/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
deleted file mode 100644
index d7dc3f7a81..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.baeldung.initializer;
-
-import com.thoughtworks.xstream.XStream;
-
-public class SimpleXstreamInitializer {
-
- private XStream xtreamInstance;
-
- public XStream getXstreamInstance() {
- if (xtreamInstance == null) {
- synchronized (SimpleXstreamInitializer.class) {
- if (xtreamInstance == null) {
- xtreamInstance = new XStream();
- }
- }
- }
- return xtreamInstance;
- }
-}
\ No newline at end of file
diff --git a/xstream-introduction/src/main/java/com/baeldung/pojo/AddressDetails.java b/xstream-introduction/src/main/java/com/baeldung/pojo/AddressDetails.java
deleted file mode 100644
index e9e30bf5fc..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/pojo/AddressDetails.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.baeldung.pojo;
-
-import java.util.List;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-@XStreamAlias("AddressDetails")
-public class AddressDetails {
-
- private String address;
-
- private String zipcode;
-
- private List contactDetails;
-
- public String getZipcode() {
- return zipcode;
- }
-
- public void setZipcode(String zipcode) {
- this.zipcode = zipcode;
- }
-
- public List getContactDetails() {
- return contactDetails;
- }
-
- public void setContactDetails(List contactDetails) {
- this.contactDetails = contactDetails;
- }
-
- public String getAddress() {
- return address;
- }
-
- public void setAddress(String address) {
- this.address = address;
- }
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/pojo/ContactDetails.java b/xstream-introduction/src/main/java/com/baeldung/pojo/ContactDetails.java
deleted file mode 100644
index 66475b9d8e..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/pojo/ContactDetails.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.pojo;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-@XStreamAlias("ContactDetails")
-public class ContactDetails {
-
- private String mobile;
-
- private String landline;
-
- public String getMobile() {
- return mobile;
- }
-
- public void setMobile(String mobile) {
- this.mobile = mobile;
- }
-
- public String getLandline() {
- return landline;
- }
-
- public void setLandline(String landline) {
- this.landline = landline;
- }
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/pojo/Customer.java b/xstream-introduction/src/main/java/com/baeldung/pojo/Customer.java
deleted file mode 100644
index 9bed3394ef..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/pojo/Customer.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.baeldung.pojo;
-
-import java.util.Date;
-import java.util.List;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-import com.thoughtworks.xstream.annotations.XStreamImplicit;
-
-@XStreamAlias("customer")
-public class Customer {
-
- private String firstName;
-
- private String lastName;
-
- private Date dob;
-
- @XStreamImplicit
- private List contactDetailsList;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public Date getDob() {
- return dob;
- }
-
- public void setDob(Date dob) {
- this.dob = dob;
- }
-
- public List getContactDetailsList() {
- return contactDetailsList;
- }
-
- public void setContactDetailsList(List contactDetailsList) {
- this.contactDetailsList = contactDetailsList;
- }
-
- @Override
- public String toString() {
- return "Customer [firstName=" + firstName + ", lastName=" + lastName + ", dob=" + dob + "]";
- }
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java b/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
deleted file mode 100644
index 30fda1b92c..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.baeldung.pojo;
-
-import java.util.List;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-@XStreamAlias("CustomerAddressDetails")
-public class CustomerAddressDetails {
-
- private List addressDetails;
-
- private String firstName;
-
- private String lastName;
-
- private int age;
-
- public String getFirstName() {
- return firstName;
- }
-
- public void setFirstName(String firstName) {
- this.firstName = firstName;
- }
-
- public String getLastName() {
- return lastName;
- }
-
- public void setLastName(String lastName) {
- this.lastName = lastName;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
-
-
- public List getAddressDetails() {
- return addressDetails;
- }
-
- public void setAddressDetails(List addressDetails) {
- this.addressDetails = addressDetails;
- }
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerPortfolio.java b/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
deleted file mode 100644
index 6f1ce4b651..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.baeldung.pojo;
-
-import java.util.List;
-
-import com.thoughtworks.xstream.annotations.XStreamAlias;
-
-@XStreamAlias("CustomerPortfolio")
-public class CustomerPortfolio {
-
- private List customerAddressDetailsList;
-
- public List getCustomerAddressDetailsList() {
- return customerAddressDetailsList;
- }
-
- public void setCustomerAddressDetailsList(List customerAddressDetailsList) {
- this.customerAddressDetailsList = customerAddressDetailsList;
- }
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/utility/MyDateConverter.java b/xstream-introduction/src/main/java/com/baeldung/utility/MyDateConverter.java
deleted file mode 100644
index 564a28d1c5..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/utility/MyDateConverter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.baeldung.utility;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.GregorianCalendar;
-
-import com.thoughtworks.xstream.converters.ConversionException;
-import com.thoughtworks.xstream.converters.Converter;
-import com.thoughtworks.xstream.converters.MarshallingContext;
-import com.thoughtworks.xstream.converters.UnmarshallingContext;
-import com.thoughtworks.xstream.io.HierarchicalStreamReader;
-import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
-
-public class MyDateConverter implements Converter {
-
- private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
-
- @Override
- public boolean canConvert(Class clazz) {
- return Date.class.isAssignableFrom(clazz);
- }
-
- @Override
- public void marshal(Object value , HierarchicalStreamWriter writer , MarshallingContext arg2) {
- Date date = (Date) value;
- writer.setValue(formatter.format(date));
- }
-
- @Override
- public Object unmarshal(HierarchicalStreamReader reader , UnmarshallingContext arg1) {
- GregorianCalendar calendar = new GregorianCalendar();
- try {
- calendar.setTime(formatter.parse(reader.getValue()));
- } catch (ParseException e) {
- throw new ConversionException(e.getMessage() , e);
- }
- return calendar;
- }
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/utility/MySingleValueConverter.java b/xstream-introduction/src/main/java/com/baeldung/utility/MySingleValueConverter.java
deleted file mode 100644
index 358d647835..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/utility/MySingleValueConverter.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.baeldung.utility;
-
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-import com.baeldung.pojo.Customer;
-import com.thoughtworks.xstream.converters.SingleValueConverter;
-
-public class MySingleValueConverter implements SingleValueConverter {
-
- @Override
- public boolean canConvert(Class clazz) {
- return Customer.class.isAssignableFrom(clazz);
- }
-
- @Override
- public Object fromString(String arg0) {
- return null;
- }
-
- @Override
- public String toString(Object obj) {
- SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
- Date date = ((Customer) obj).getDob();
- return ((Customer) obj).getFirstName() + "," + ((Customer) obj).getLastName() + "," + formatter.format(date);
- }
-
-}
diff --git a/xstream-introduction/src/main/java/com/baeldung/utility/SimpleDataGeneration.java b/xstream-introduction/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
deleted file mode 100644
index 22d0f0ce77..0000000000
--- a/xstream-introduction/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.baeldung.utility;
-
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-
-import com.baeldung.pojo.ContactDetails;
-import com.baeldung.pojo.Customer;
-
-public class SimpleDataGeneration {
-
- public static Customer generateData() {
- Customer customer = new Customer();
- Calendar cal = Calendar.getInstance();
- cal.set(1986 , 01 , 14);
- customer.setDob(cal.getTime());
- customer.setFirstName("XStream");
- customer.setLastName("Java");
-
- List contactDetailsList = new ArrayList();
-
- ContactDetails contactDetails1 = new ContactDetails();
- contactDetails1.setLandline("0124-2460311");
- contactDetails1.setMobile("6673543265");
-
- ContactDetails contactDetails2 = new ContactDetails();
- contactDetails2.setLandline("0120-223312");
- contactDetails2.setMobile("4676543565");
-
- contactDetailsList.add(contactDetails1);
- contactDetailsList.add(contactDetails2);
-
- customer.setContactDetailsList(contactDetailsList);
- return customer;
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java
deleted file mode 100644
index 10f59e843b..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.complex.pojo.Customer;
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.thoughtworks.xstream.XStream;
-
-public class ComplexXmlToObjectAnnotationTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.processAnnotations(Customer.class);
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field-complex.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
- Assert.assertNotNull(customer.getContactDetailsList());
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java
deleted file mode 100644
index 876a407f76..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.complex.pojo.ContactDetails;
-import com.baeldung.complex.pojo.Customer;
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.thoughtworks.xstream.XStream;
-
-public class ComplexXmlToObjectAttributeCollectionTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.processAnnotations(Customer.class);
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field-complex.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
- Assert.assertNotNull(customer.getContactDetailsList());
- for(ContactDetails contactDetails : customer.getContactDetailsList()){
- Assert.assertNotNull(contactDetails.getContactType());
- }
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java
deleted file mode 100644
index d701fc153b..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.implicit.collection.pojo.Customer;
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.thoughtworks.xstream.XStream;
-
-public class ComplexXmlToObjectCollectionTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.processAnnotations(Customer.class);
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-alias-implicit-collection.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
- Assert.assertNotNull(customer.getContactDetailsList());
- //System.out.println(customer);
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java
deleted file mode 100644
index cc6d945254..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.baeldung.pojo.Customer;
-import com.thoughtworks.xstream.XStream;
-
-public class XmlToObjectAliasTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.alias("customer" , Customer.class);
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-alias.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java
deleted file mode 100644
index f2012e2b12..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.annotation.pojo.Customer;
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.thoughtworks.xstream.XStream;
-
-public class XmlToObjectAnnotationTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.processAnnotations(Customer.class);
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
- Assert.assertNotNull(customer.getFirstName());
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java
deleted file mode 100644
index c4bba86265..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.baeldung.pojo.Customer;
-import com.thoughtworks.xstream.XStream;
-
-public class XmlToObjectFieldAliasTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.alias("customer" , Customer.class);
- xstream.aliasField("fn", Customer.class, "firstName");
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
- Assert.assertNotNull(customer.getFirstName());
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java
deleted file mode 100644
index cb13bb9570..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.baeldung.pojo.Customer;
-import com.thoughtworks.xstream.XStream;
-
-public class XmlToObjectIgnoreFieldsTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.alias("customer" , Customer.class);
- xstream.ignoreUnknownElements();
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file-ignore-field.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
- //System.out.println(customer);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java b/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java
deleted file mode 100644
index e24e54aea4..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.baeldung.pojo.test;
-
-import java.io.FileReader;
-import java.io.IOException;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.baeldung.pojo.Customer;
-import com.baeldung.utility.SimpleDataGeneration;
-import com.thoughtworks.xstream.XStream;
-
-public class XmlToObjectTest {
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- }
-
- @Test
- public void convertXmlToObjectFromFile() {
- try {
- ClassLoader classLoader = getClass().getClassLoader();
- FileReader reader = new FileReader(classLoader.getResource("data-file.xml").getFile());
- Customer customer = (Customer) xstream.fromXML(reader);
- Assert.assertNotNull(customer);
-
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @Test
- public void convertXmlToObjectFromString() {
- Customer customer = SimpleDataGeneration.generateData();
- String dataXml = xstream.toXML(customer);
- Customer convertedCustomer = (Customer) xstream.fromXML(dataXml);
- Assert.assertNotNull(convertedCustomer);
- }
-
-
-}
diff --git a/xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java b/xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java
deleted file mode 100644
index ea60e68743..0000000000
--- a/xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.baeldung.utility;
-
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.baeldung.initializer.SimpleXstreamInitializer;
-import com.baeldung.pojo.AddressDetails;
-import com.baeldung.pojo.ContactDetails;
-import com.baeldung.pojo.Customer;
-import com.baeldung.utility.SimpleDataGeneration;
-import com.thoughtworks.xstream.XStream;
-
-public class XStreamSimpleXmlTest {
-
- private Customer customer = null;
-
- private String dataXml = null;
-
- private XStream xstream = null;
-
- @Before
- public void dataSetup() {
- customer = SimpleDataGeneration.generateData();
- SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
- xstream = simpleXstreamInitializer.getXstreamInstance();
- xstream.processAnnotations(Customer.class);
- xstream.processAnnotations(AddressDetails.class);
- xstream.processAnnotations(ContactDetails.class);
- xstream.omitField(Customer.class , "lastName");
- xstream.registerConverter(new MyDateConverter());
- // xstream.registerConverter(new MySingleValueConverter());
- xstream.aliasField("fn" , Customer.class , "firstName");
- dataXml = xstream.toXML(customer);
- }
-
- @Test
- public void testClassAliasedAnnotation() {
- Assert.assertNotEquals(-1 , dataXml.indexOf(""));
- }
-
- @Test
- public void testFieldAliasedAnnotation() {
- Assert.assertNotEquals(-1 , dataXml.indexOf(""));
- }
-
- @Test
- public void testImplicitCollection() {
- Assert.assertEquals(-1 , dataXml.indexOf("contactDetailsList"));
- }
-
- @Test
- public void testDateFieldFormating() {
- Assert.assertEquals("14-02-1986" , dataXml.substring(dataXml.indexOf("") + 5 , dataXml.indexOf("")));
- }
-
- @Test
- public void testOmitField() {
- Assert.assertEquals(-1 , dataXml.indexOf("lastName"));
- }
-}
diff --git a/xstream-introduction/src/test/resources/data-file-alias-field-complex.xml b/xstream-introduction/src/test/resources/data-file-alias-field-complex.xml
deleted file mode 100644
index 2235aa7044..0000000000
--- a/xstream-introduction/src/test/resources/data-file-alias-field-complex.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
- XStream
- Java
- 1986-02-14 04:14:05.874 UTC
-
-
- 6673543265
- 0124-2460311
-
-
- 4676543565
- 0120-223312
-
-
-
\ No newline at end of file
diff --git a/xstream-introduction/src/test/resources/data-file-alias-field.xml b/xstream-introduction/src/test/resources/data-file-alias-field.xml
deleted file mode 100644
index 9bc1d0990a..0000000000
--- a/xstream-introduction/src/test/resources/data-file-alias-field.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
- XStream
- Java
- 1986-02-14 03:46:16.381 UTC
-
\ No newline at end of file
diff --git a/xstream-introduction/src/test/resources/data-file-alias-implicit-collection.xml b/xstream-introduction/src/test/resources/data-file-alias-implicit-collection.xml
deleted file mode 100644
index d8731900b9..0000000000
--- a/xstream-introduction/src/test/resources/data-file-alias-implicit-collection.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
- XStream
- Java
- 1986-02-14 04:14:20.541 UTC
-
- 6673543265
- 0124-2460311
-
-
- 4676543565
- 0120-223312
-
-
\ No newline at end of file
diff --git a/xstream-introduction/src/test/resources/data-file-alias.xml b/xstream-introduction/src/test/resources/data-file-alias.xml
deleted file mode 100644
index 964157f1dd..0000000000
--- a/xstream-introduction/src/test/resources/data-file-alias.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
- XStream
- Java
- 1986-02-14 03:46:16.381 UTC
-
\ No newline at end of file
diff --git a/xstream-introduction/src/test/resources/data-file-ignore-field.xml b/xstream-introduction/src/test/resources/data-file-ignore-field.xml
deleted file mode 100644
index 865e93d4b4..0000000000
--- a/xstream-introduction/src/test/resources/data-file-ignore-field.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
- XStream
- Java
- 1986-02-14 04:14:20.541 UTC
- XStream Java
-
\ No newline at end of file
diff --git a/xstream-introduction/src/test/resources/data-file.xml b/xstream-introduction/src/test/resources/data-file.xml
deleted file mode 100644
index 59f2ea1cca..0000000000
--- a/xstream-introduction/src/test/resources/data-file.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
- XStream
- Java
- 1986-02-14 03:46:16.381 UTC
-
\ No newline at end of file
diff --git a/xstream-introduction/pom.xml b/xstream/pom.xml
similarity index 75%
rename from xstream-introduction/pom.xml
rename to xstream/pom.xml
index 2f0f26d6f2..8a5aec41e9 100644
--- a/xstream-introduction/pom.xml
+++ b/xstream/pom.xml
@@ -27,4 +27,18 @@
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.5.1
+
+ 1.8
+ 1.8
+
+
+
+
+
\ No newline at end of file
diff --git a/xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java b/xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java
new file mode 100644
index 0000000000..2cdb0f56c9
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/annotation/pojo/Customer.java
@@ -0,0 +1,46 @@
+package com.baeldung.annotation.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+import java.util.Date;
+
+@XStreamAlias("customer")
+public class Customer {
+
+ @XStreamAlias("fn")
+ private String firstName;
+
+ private String lastName;
+
+ private Date dob;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public Date getDob() {
+ return dob;
+ }
+
+ public void setDob(Date dob) {
+ this.dob = dob;
+ }
+
+ @Override
+ public String toString() {
+ return "Customer [firstName=" + firstName + ", lastName=" + lastName
+ + ", dob=" + dob + "]";
+ }
+}
diff --git a/xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java b/xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
new file mode 100644
index 0000000000..f5b98c9c1b
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/annotation/pojo/CustomerOmitField.java
@@ -0,0 +1,50 @@
+package com.baeldung.annotation.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamOmitField;
+
+import java.util.Date;
+
+
+@XStreamAlias("customer")
+public class CustomerOmitField {
+
+ @XStreamOmitField
+ private String firstName;
+
+ private String lastName;
+
+ private Date dob;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public Date getDob() {
+ return dob;
+ }
+
+ public void setDob(Date dob) {
+ this.dob = dob;
+ }
+
+ @Override
+ public String toString() {
+ return "CustomerOmitAnnotation [firstName=" + firstName + ", lastName="
+ + lastName + ", dob=" + dob + "]";
+ }
+
+
+}
diff --git a/xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java b/xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
new file mode 100644
index 0000000000..e091492a1a
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/complex/pojo/ContactDetails.java
@@ -0,0 +1,46 @@
+package com.baeldung.complex.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("ContactDetails")
+public class ContactDetails {
+
+ private String mobile;
+
+ private String landline;
+
+ @XStreamAsAttribute
+ private String contactType;
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getLandline() {
+ return landline;
+ }
+
+ public void setLandline(String landline) {
+ this.landline = landline;
+ }
+
+ public String getContactType() {
+ return contactType;
+ }
+
+ public void setContactType(String contactType) {
+ this.contactType = contactType;
+ }
+
+ @Override
+ public String toString() {
+ return "ContactDetails [mobile=" + mobile + ", landline=" + landline
+ + ", contactType=" + contactType + "]";
+ }
+
+}
diff --git a/xstream/src/main/java/com/baeldung/complex/pojo/Customer.java b/xstream/src/main/java/com/baeldung/complex/pojo/Customer.java
new file mode 100644
index 0000000000..c6f98982f0
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/complex/pojo/Customer.java
@@ -0,0 +1,57 @@
+package com.baeldung.complex.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+import java.util.Date;
+import java.util.List;
+
+@XStreamAlias("customer")
+public class Customer {
+
+ private String firstName;
+
+ private String lastName;
+
+ private Date dob;
+
+ private List contactDetailsList;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public Date getDob() {
+ return dob;
+ }
+
+ public void setDob(Date dob) {
+ this.dob = dob;
+ }
+
+ public List getContactDetailsList() {
+ return contactDetailsList;
+ }
+
+ public void setContactDetailsList(List contactDetailsList) {
+ this.contactDetailsList = contactDetailsList;
+ }
+
+ @Override
+ public String toString() {
+ return "Customer [firstName=" + firstName + ", lastName=" + lastName
+ + ", dob=" + dob + ", contactDetailsList=" + contactDetailsList
+ + "]";
+ }
+}
diff --git a/xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java b/xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
new file mode 100644
index 0000000000..38ec7ff077
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/implicit/collection/pojo/ContactDetails.java
@@ -0,0 +1,46 @@
+package com.baeldung.implicit.collection.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
+
+@XStreamAlias("ContactDetails")
+public class ContactDetails {
+
+ private String mobile;
+
+ private String landline;
+
+ @XStreamAsAttribute
+ private String contactType;
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getLandline() {
+ return landline;
+ }
+
+ public void setLandline(String landline) {
+ this.landline = landline;
+ }
+
+ public String getContactType() {
+ return contactType;
+ }
+
+ public void setContactType(String contactType) {
+ this.contactType = contactType;
+ }
+
+ @Override
+ public String toString() {
+ return "ContactDetails [mobile=" + mobile + ", landline=" + landline
+ + ", contactType=" + contactType + "]";
+ }
+
+}
diff --git a/xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java b/xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
new file mode 100644
index 0000000000..a50ac850dd
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/implicit/collection/pojo/Customer.java
@@ -0,0 +1,59 @@
+package com.baeldung.implicit.collection.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.Date;
+import java.util.List;
+
+@XStreamAlias("customer")
+public class Customer {
+
+ private String firstName;
+
+ private String lastName;
+
+ private Date dob;
+
+ @XStreamImplicit
+ private List contactDetailsList;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public Date getDob() {
+ return dob;
+ }
+
+ public void setDob(Date dob) {
+ this.dob = dob;
+ }
+
+ public List getContactDetailsList() {
+ return contactDetailsList;
+ }
+
+ public void setContactDetailsList(List contactDetailsList) {
+ this.contactDetailsList = contactDetailsList;
+ }
+
+ @Override
+ public String toString() {
+ return "Customer [firstName=" + firstName + ", lastName=" + lastName
+ + ", dob=" + dob + ", contactDetailsList=" + contactDetailsList
+ + "]";
+ }
+}
diff --git a/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java b/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
new file mode 100644
index 0000000000..5dec19d181
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java
@@ -0,0 +1,19 @@
+package com.baeldung.initializer;
+
+import com.thoughtworks.xstream.XStream;
+
+public class SimpleXstreamInitializer {
+
+ private XStream xtreamInstance;
+
+ public XStream getXstreamInstance() {
+ if (xtreamInstance == null) {
+ synchronized (SimpleXstreamInitializer.class) {
+ if (xtreamInstance == null) {
+ xtreamInstance = new XStream();
+ }
+ }
+ }
+ return xtreamInstance;
+ }
+}
\ No newline at end of file
diff --git a/xstream/src/main/java/com/baeldung/pojo/AddressDetails.java b/xstream/src/main/java/com/baeldung/pojo/AddressDetails.java
new file mode 100644
index 0000000000..53ba7e9a85
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/pojo/AddressDetails.java
@@ -0,0 +1,40 @@
+package com.baeldung.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+import java.util.List;
+
+@XStreamAlias("AddressDetails")
+public class AddressDetails {
+
+ private String address;
+
+ private String zipcode;
+
+ private List contactDetails;
+
+ public String getZipcode() {
+ return zipcode;
+ }
+
+ public void setZipcode(String zipcode) {
+ this.zipcode = zipcode;
+ }
+
+ public List getContactDetails() {
+ return contactDetails;
+ }
+
+ public void setContactDetails(List contactDetails) {
+ this.contactDetails = contactDetails;
+ }
+
+ public String getAddress() {
+ return address;
+ }
+
+ public void setAddress(String address) {
+ this.address = address;
+ }
+
+}
diff --git a/xstream/src/main/java/com/baeldung/pojo/ContactDetails.java b/xstream/src/main/java/com/baeldung/pojo/ContactDetails.java
new file mode 100644
index 0000000000..75408bdba8
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/pojo/ContactDetails.java
@@ -0,0 +1,28 @@
+package com.baeldung.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+@XStreamAlias("ContactDetails")
+public class ContactDetails {
+
+ private String mobile;
+
+ private String landline;
+
+ public String getMobile() {
+ return mobile;
+ }
+
+ public void setMobile(String mobile) {
+ this.mobile = mobile;
+ }
+
+ public String getLandline() {
+ return landline;
+ }
+
+ public void setLandline(String landline) {
+ this.landline = landline;
+ }
+
+}
diff --git a/xstream/src/main/java/com/baeldung/pojo/Customer.java b/xstream/src/main/java/com/baeldung/pojo/Customer.java
new file mode 100644
index 0000000000..728939c356
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/pojo/Customer.java
@@ -0,0 +1,57 @@
+package com.baeldung.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import com.thoughtworks.xstream.annotations.XStreamImplicit;
+
+import java.util.Date;
+import java.util.List;
+
+@XStreamAlias("customer")
+public class Customer {
+
+ private String firstName;
+
+ private String lastName;
+
+ private Date dob;
+
+ @XStreamImplicit
+ private List contactDetailsList;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public Date getDob() {
+ return dob;
+ }
+
+ public void setDob(Date dob) {
+ this.dob = dob;
+ }
+
+ public List getContactDetailsList() {
+ return contactDetailsList;
+ }
+
+ public void setContactDetailsList(List contactDetailsList) {
+ this.contactDetailsList = contactDetailsList;
+ }
+
+ @Override
+ public String toString() {
+ return "Customer [firstName=" + firstName + ", lastName=" + lastName + ", dob=" + dob + "]";
+ }
+}
diff --git a/xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java b/xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
new file mode 100644
index 0000000000..f203c9cce9
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java
@@ -0,0 +1,50 @@
+package com.baeldung.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+import java.util.List;
+
+@XStreamAlias("CustomerAddressDetails")
+public class CustomerAddressDetails {
+
+ private List addressDetails;
+
+ private String firstName;
+
+ private String lastName;
+
+ private int age;
+
+ public String getFirstName() {
+ return firstName;
+ }
+
+ public void setFirstName(String firstName) {
+ this.firstName = firstName;
+ }
+
+ public String getLastName() {
+ return lastName;
+ }
+
+ public void setLastName(String lastName) {
+ this.lastName = lastName;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+
+ public List getAddressDetails() {
+ return addressDetails;
+ }
+
+ public void setAddressDetails(List addressDetails) {
+ this.addressDetails = addressDetails;
+ }
+}
diff --git a/xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java b/xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
new file mode 100644
index 0000000000..90722feb71
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/pojo/CustomerPortfolio.java
@@ -0,0 +1,20 @@
+package com.baeldung.pojo;
+
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+
+import java.util.List;
+
+@XStreamAlias("CustomerPortfolio")
+public class CustomerPortfolio {
+
+ private List customerAddressDetailsList;
+
+ public List getCustomerAddressDetailsList() {
+ return customerAddressDetailsList;
+ }
+
+ public void setCustomerAddressDetailsList(List customerAddressDetailsList) {
+ this.customerAddressDetailsList = customerAddressDetailsList;
+ }
+
+}
diff --git a/xstream/src/main/java/com/baeldung/utility/MyDateConverter.java b/xstream/src/main/java/com/baeldung/utility/MyDateConverter.java
new file mode 100644
index 0000000000..af7ca19aac
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/utility/MyDateConverter.java
@@ -0,0 +1,40 @@
+package com.baeldung.utility;
+
+import com.thoughtworks.xstream.converters.ConversionException;
+import com.thoughtworks.xstream.converters.Converter;
+import com.thoughtworks.xstream.converters.MarshallingContext;
+import com.thoughtworks.xstream.converters.UnmarshallingContext;
+import com.thoughtworks.xstream.io.HierarchicalStreamReader;
+import com.thoughtworks.xstream.io.HierarchicalStreamWriter;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.GregorianCalendar;
+
+public class MyDateConverter implements Converter {
+
+ private SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
+
+ @Override
+ public boolean canConvert(Class clazz) {
+ return Date.class.isAssignableFrom(clazz);
+ }
+
+ @Override
+ public void marshal(Object value, HierarchicalStreamWriter writer, MarshallingContext arg2) {
+ Date date = (Date) value;
+ writer.setValue(formatter.format(date));
+ }
+
+ @Override
+ public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext arg1) {
+ GregorianCalendar calendar = new GregorianCalendar();
+ try {
+ calendar.setTime(formatter.parse(reader.getValue()));
+ } catch (ParseException e) {
+ throw new ConversionException(e.getMessage(), e);
+ }
+ return calendar;
+ }
+}
diff --git a/xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java b/xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java
new file mode 100644
index 0000000000..9b242f1c7c
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/utility/MySingleValueConverter.java
@@ -0,0 +1,28 @@
+package com.baeldung.utility;
+
+import com.baeldung.pojo.Customer;
+import com.thoughtworks.xstream.converters.SingleValueConverter;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+public class MySingleValueConverter implements SingleValueConverter {
+
+ @Override
+ public boolean canConvert(Class clazz) {
+ return Customer.class.isAssignableFrom(clazz);
+ }
+
+ @Override
+ public Object fromString(String arg0) {
+ return null;
+ }
+
+ @Override
+ public String toString(Object obj) {
+ SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
+ Date date = ((Customer) obj).getDob();
+ return ((Customer) obj).getFirstName() + "," + ((Customer) obj).getLastName() + "," + formatter.format(date);
+ }
+
+}
diff --git a/xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java b/xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
new file mode 100644
index 0000000000..cf038bfd1b
--- /dev/null
+++ b/xstream/src/main/java/com/baeldung/utility/SimpleDataGeneration.java
@@ -0,0 +1,37 @@
+package com.baeldung.utility;
+
+import com.baeldung.pojo.ContactDetails;
+import com.baeldung.pojo.Customer;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+public class SimpleDataGeneration {
+
+ public static Customer generateData() {
+ Customer customer = new Customer();
+ Calendar cal = Calendar.getInstance();
+ cal.set(1986, 01, 14);
+ customer.setDob(cal.getTime());
+ customer.setFirstName("XStream");
+ customer.setLastName("Java");
+
+ List contactDetailsList = new ArrayList();
+
+ ContactDetails contactDetails1 = new ContactDetails();
+ contactDetails1.setLandline("0124-2460311");
+ contactDetails1.setMobile("6673543265");
+
+ ContactDetails contactDetails2 = new ContactDetails();
+ contactDetails2.setLandline("0120-223312");
+ contactDetails2.setMobile("4676543565");
+
+ contactDetailsList.add(contactDetails1);
+ contactDetailsList.add(contactDetails2);
+
+ customer.setContactDetailsList(contactDetailsList);
+ return customer;
+ }
+
+}
diff --git a/xstream-introduction/src/main/resources/log4j.properties b/xstream/src/main/resources/log4j.properties
similarity index 100%
rename from xstream-introduction/src/main/resources/log4j.properties
rename to xstream/src/main/resources/log4j.properties
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java
new file mode 100644
index 0000000000..479500c4a0
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAnnotationTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.complex.pojo.Customer;
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class ComplexXmlToObjectAnnotationTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.processAnnotations(Customer.class);
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field-complex.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+ Assert.assertNotNull(customer.getContactDetailsList());
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java
new file mode 100644
index 0000000000..8c569aa11e
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectAttributeCollectionTest.java
@@ -0,0 +1,42 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.complex.pojo.ContactDetails;
+import com.baeldung.complex.pojo.Customer;
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class ComplexXmlToObjectAttributeCollectionTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.processAnnotations(Customer.class);
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field-complex.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+ Assert.assertNotNull(customer.getContactDetailsList());
+ for (ContactDetails contactDetails : customer.getContactDetailsList()) {
+ Assert.assertNotNull(contactDetails.getContactType());
+ }
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java
new file mode 100644
index 0000000000..29ef7a5d64
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/ComplexXmlToObjectCollectionTest.java
@@ -0,0 +1,39 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.implicit.collection.pojo.Customer;
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class ComplexXmlToObjectCollectionTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.processAnnotations(Customer.class);
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-alias-implicit-collection.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+ Assert.assertNotNull(customer.getContactDetailsList());
+ //System.out.println(customer);
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java
new file mode 100644
index 0000000000..8a4de3b70a
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAliasTest.java
@@ -0,0 +1,37 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.Customer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class XmlToObjectAliasTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.alias("customer", Customer.class);
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-alias.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java
new file mode 100644
index 0000000000..4a7ff2f74a
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectAnnotationTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.annotation.pojo.Customer;
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class XmlToObjectAnnotationTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.processAnnotations(Customer.class);
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+ Assert.assertNotNull(customer.getFirstName());
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java
new file mode 100644
index 0000000000..3b1b8326ab
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectFieldAliasTest.java
@@ -0,0 +1,39 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.Customer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class XmlToObjectFieldAliasTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.alias("customer", Customer.class);
+ xstream.aliasField("fn", Customer.class, "firstName");
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-alias-field.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+ Assert.assertNotNull(customer.getFirstName());
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java
new file mode 100644
index 0000000000..95a034b3e7
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectIgnoreFieldsTest.java
@@ -0,0 +1,38 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.Customer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class XmlToObjectIgnoreFieldsTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.alias("customer", Customer.class);
+ xstream.ignoreUnknownElements();
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file-ignore-field.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+ //System.out.println(customer);
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+}
diff --git a/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java
new file mode 100644
index 0000000000..b6b64ce8da
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/pojo/test/XmlToObjectTest.java
@@ -0,0 +1,46 @@
+package com.baeldung.pojo.test;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.Customer;
+import com.baeldung.utility.SimpleDataGeneration;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.FileReader;
+import java.io.IOException;
+
+public class XmlToObjectTest {
+
+ private XStream xstream = null;
+
+ @Before
+ public void dataSetup() {
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ }
+
+ @Test
+ public void convertXmlToObjectFromFile() {
+ try {
+ ClassLoader classLoader = getClass().getClassLoader();
+ FileReader reader = new FileReader(classLoader.getResource("data-file.xml").getFile());
+ Customer customer = (Customer) xstream.fromXML(reader);
+ Assert.assertNotNull(customer);
+
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Test
+ public void convertXmlToObjectFromString() {
+ Customer customer = SimpleDataGeneration.generateData();
+ String dataXml = xstream.toXML(customer);
+ Customer convertedCustomer = (Customer) xstream.fromXML(dataXml);
+ Assert.assertNotNull(convertedCustomer);
+ }
+
+
+}
diff --git a/xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java b/xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java
new file mode 100644
index 0000000000..83a965ce1b
--- /dev/null
+++ b/xstream/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java
@@ -0,0 +1,57 @@
+package com.baeldung.utility;
+
+import com.baeldung.initializer.SimpleXstreamInitializer;
+import com.baeldung.pojo.AddressDetails;
+import com.baeldung.pojo.ContactDetails;
+import com.baeldung.pojo.Customer;
+import com.thoughtworks.xstream.XStream;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class XStreamSimpleXmlTest {
+
+ private Customer customer;
+ private String dataXml;
+ private XStream xstream;
+
+ @Before
+ public void dataSetup() {
+ customer = SimpleDataGeneration.generateData();
+ SimpleXstreamInitializer simpleXstreamInitializer = new SimpleXstreamInitializer();
+ xstream = simpleXstreamInitializer.getXstreamInstance();
+ xstream.processAnnotations(Customer.class);
+ xstream.processAnnotations(AddressDetails.class);
+ xstream.processAnnotations(ContactDetails.class);
+ xstream.omitField(Customer.class, "lastName");
+ xstream.registerConverter(new MyDateConverter());
+ // xstream.registerConverter(new MySingleValueConverter());
+ xstream.aliasField("fn", Customer.class, "firstName");
+ dataXml = xstream.toXML(customer);
+ }
+
+ @Test
+ public void testClassAliasedAnnotation() {
+ Assert.assertNotEquals(-1, dataXml.indexOf(""));
+ }
+
+ @Test
+ public void testFieldAliasedAnnotation() {
+ Assert.assertNotEquals(-1, dataXml.indexOf(""));
+ }
+
+ @Test
+ public void testImplicitCollection() {
+ Assert.assertEquals(-1, dataXml.indexOf("contactDetailsList"));
+ }
+
+ @Test
+ public void testDateFieldFormating() {
+ Assert.assertEquals("14-02-1986", dataXml.substring(dataXml.indexOf("") + 5, dataXml.indexOf("")));
+ }
+
+ @Test
+ public void testOmitField() {
+ Assert.assertEquals(-1, dataXml.indexOf("lastName"));
+ }
+}
diff --git a/xstream/src/test/resources/data-file-alias-field-complex.xml b/xstream/src/test/resources/data-file-alias-field-complex.xml
new file mode 100644
index 0000000000..06050cd1ed
--- /dev/null
+++ b/xstream/src/test/resources/data-file-alias-field-complex.xml
@@ -0,0 +1,15 @@
+
+ XStream
+ Java
+ 1986-02-14 04:14:05.874 UTC
+
+
+ 6673543265
+ 0124-2460311
+
+
+ 4676543565
+ 0120-223312
+
+
+
\ No newline at end of file
diff --git a/xstream/src/test/resources/data-file-alias-field.xml b/xstream/src/test/resources/data-file-alias-field.xml
new file mode 100644
index 0000000000..7e71d721ca
--- /dev/null
+++ b/xstream/src/test/resources/data-file-alias-field.xml
@@ -0,0 +1,5 @@
+
+ XStream
+ Java
+ 1986-02-14 03:46:16.381 UTC
+
\ No newline at end of file
diff --git a/xstream/src/test/resources/data-file-alias-implicit-collection.xml b/xstream/src/test/resources/data-file-alias-implicit-collection.xml
new file mode 100644
index 0000000000..0cb852fc04
--- /dev/null
+++ b/xstream/src/test/resources/data-file-alias-implicit-collection.xml
@@ -0,0 +1,13 @@
+
+ XStream
+ Java
+ 1986-02-14 04:14:20.541 UTC
+
+ 6673543265
+ 0124-2460311
+
+
+ 4676543565
+ 0120-223312
+
+
\ No newline at end of file
diff --git a/xstream/src/test/resources/data-file-alias.xml b/xstream/src/test/resources/data-file-alias.xml
new file mode 100644
index 0000000000..61ee9f1ac3
--- /dev/null
+++ b/xstream/src/test/resources/data-file-alias.xml
@@ -0,0 +1,5 @@
+
+ XStream
+ Java
+ 1986-02-14 03:46:16.381 UTC
+
\ No newline at end of file
diff --git a/xstream/src/test/resources/data-file-ignore-field.xml b/xstream/src/test/resources/data-file-ignore-field.xml
new file mode 100644
index 0000000000..7dc8023b96
--- /dev/null
+++ b/xstream/src/test/resources/data-file-ignore-field.xml
@@ -0,0 +1,6 @@
+
+ XStream
+ Java
+ 1986-02-14 04:14:20.541 UTC
+ XStream Java
+
\ No newline at end of file
diff --git a/xstream/src/test/resources/data-file.xml b/xstream/src/test/resources/data-file.xml
new file mode 100644
index 0000000000..b8dbce32c0
--- /dev/null
+++ b/xstream/src/test/resources/data-file.xml
@@ -0,0 +1,5 @@
+
+ XStream
+ Java
+ 1986-02-14 03:46:16.381 UTC
+
\ No newline at end of file