From a6057698e146829474a68a7eb223b88c71415bf5 Mon Sep 17 00:00:00 2001 From: ankur-singhal Date: Tue, 1 Mar 2016 15:21:06 +0530 Subject: [PATCH 1/3] XStream - Object to xml XStream - Object to xml --- xstream-introduction/.classpath | 15 +++++ xstream-introduction/.project | 14 +++++ xstream-introduction/pom.xml | 30 ++++++++++ .../initializer/SimpleXstreamInitializer.java | 19 +++++++ .../org/baeldung/pojo/AddressDetails.java | 40 ++++++++++++++ .../org/baeldung/pojo/ContactDetails.java | 28 ++++++++++ .../main/java/org/baeldung/pojo/Customer.java | 55 +++++++++++++++++++ .../baeldung/pojo/CustomerAddressDetails.java | 50 +++++++++++++++++ .../org/baeldung/pojo/CustomerPortfolio.java | 20 +++++++ .../org/baeldung/utility/MyDateConverter.java | 40 ++++++++++++++ .../utility/MySingleValueConverter.java | 29 ++++++++++ .../utility/SimpleDataGeneration.java | 37 +++++++++++++ .../src/main/resources/log4j.properties | 16 ++++++ .../utility/XStreamSimpleXmlTest.java | 46 ++++++++++++++++ 14 files changed, 439 insertions(+) create mode 100644 xstream-introduction/.classpath create mode 100644 xstream-introduction/.project create mode 100644 xstream-introduction/pom.xml create mode 100644 xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/pojo/AddressDetails.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/pojo/ContactDetails.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/pojo/Customer.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/pojo/CustomerPortfolio.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/utility/MyDateConverter.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/utility/MySingleValueConverter.java create mode 100644 xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java create mode 100644 xstream-introduction/src/main/resources/log4j.properties create mode 100644 xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java diff --git a/xstream-introduction/.classpath b/xstream-introduction/.classpath new file mode 100644 index 0000000000..138df490af --- /dev/null +++ b/xstream-introduction/.classpath @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/xstream-introduction/.project b/xstream-introduction/.project new file mode 100644 index 0000000000..cebf3c9cfa --- /dev/null +++ b/xstream-introduction/.project @@ -0,0 +1,14 @@ + + + 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/pom.xml b/xstream-introduction/pom.xml new file mode 100644 index 0000000000..2f0f26d6f2 --- /dev/null +++ b/xstream-introduction/pom.xml @@ -0,0 +1,30 @@ + + 4.0.0 + org.baeldung + xstream-introduction + 0.0.1-SNAPSHOT + xstream-introduction + An Introduction To XStream + + + + com.thoughtworks.xstream + xstream + 1.4.5 + + + + junit + junit + 4.12 + + + + log4j + log4j + 1.2.17 + + + + \ No newline at end of file diff --git a/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java b/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java new file mode 100644 index 0000000000..c96392daf5 --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java @@ -0,0 +1,19 @@ +package org.baeldung.initializer; + +import com.thoughtworks.xstream.XStream; + +public class SimpleXstreamInitializer { + + private static XStream xtreamInstance; + + public static 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/org/baeldung/pojo/AddressDetails.java b/xstream-introduction/src/main/java/org/baeldung/pojo/AddressDetails.java new file mode 100644 index 0000000000..16930cb8ab --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/pojo/AddressDetails.java @@ -0,0 +1,40 @@ +package org.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/org/baeldung/pojo/ContactDetails.java b/xstream-introduction/src/main/java/org/baeldung/pojo/ContactDetails.java new file mode 100644 index 0000000000..1cb353414b --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/pojo/ContactDetails.java @@ -0,0 +1,28 @@ +package org.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/org/baeldung/pojo/Customer.java b/xstream-introduction/src/main/java/org/baeldung/pojo/Customer.java new file mode 100644 index 0000000000..aeb6e0aaf3 --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/pojo/Customer.java @@ -0,0 +1,55 @@ +package org.baeldung.pojo; + +import java.util.Date; +import java.util.List; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamImplicit; +import com.thoughtworks.xstream.annotations.XStreamOmitField; + +@XStreamAlias("customer") +public class Customer { + + @XStreamOmitField + 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; + } + +} diff --git a/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java b/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java new file mode 100644 index 0000000000..e4ce5ae5cd --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java @@ -0,0 +1,50 @@ +package org.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/org/baeldung/pojo/CustomerPortfolio.java b/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerPortfolio.java new file mode 100644 index 0000000000..cc65128650 --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerPortfolio.java @@ -0,0 +1,20 @@ +package org.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/org/baeldung/utility/MyDateConverter.java b/xstream-introduction/src/main/java/org/baeldung/utility/MyDateConverter.java new file mode 100644 index 0000000000..a11b58bd12 --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/utility/MyDateConverter.java @@ -0,0 +1,40 @@ +package org.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/org/baeldung/utility/MySingleValueConverter.java b/xstream-introduction/src/main/java/org/baeldung/utility/MySingleValueConverter.java new file mode 100644 index 0000000000..0cabc4fe03 --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/utility/MySingleValueConverter.java @@ -0,0 +1,29 @@ +package org.baeldung.utility; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.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/org/baeldung/utility/SimpleDataGeneration.java b/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java new file mode 100644 index 0000000000..e6a97e5ea6 --- /dev/null +++ b/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java @@ -0,0 +1,37 @@ +package org.baeldung.utility; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; + +import org.baeldung.pojo.ContactDetails; +import org.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/main/resources/log4j.properties b/xstream-introduction/src/main/resources/log4j.properties new file mode 100644 index 0000000000..9cdafc6bdb --- /dev/null +++ b/xstream-introduction/src/main/resources/log4j.properties @@ -0,0 +1,16 @@ +# Root logger option +log4j.rootLogger=DEBUG, file + +# Redirect log messages to console +# log4j.appender.stdout=org.apache.log4j.ConsoleAppender +# log4j.appender.stdout.Target=System.out +# log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +# log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +# Redirect log messages to a log file, support file rolling. +log4j.appender.file=org.apache.log4j.RollingFileAppender +log4j.appender.file.File=D:\\Test\\xstream-application.log +log4j.appender.file.MaxFileSize=5MB +log4j.appender.file.MaxBackupIndex=10 +log4j.appender.file.layout=org.apache.log4j.PatternLayout +log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n \ No newline at end of file diff --git a/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java b/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java new file mode 100644 index 0000000000..489960d6ca --- /dev/null +++ b/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java @@ -0,0 +1,46 @@ +package org.baeldung.utility; + +import org.baeldung.initializer.SimpleXstreamInitializer; +import org.baeldung.pojo.AddressDetails; +import org.baeldung.pojo.ContactDetails; +import org.baeldung.pojo.Customer; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +import com.thoughtworks.xstream.XStream; + +public class XStreamSimpleXmlTest { + + private Customer customer = null; + private String dataXml = null; + private XStream xtream = null; + + @Before + public void dataSetup() { + customer = SimpleDataGeneration.generateData(); + xtream = SimpleXstreamInitializer.getXstreamInstance(); + xtream.processAnnotations(Customer.class); + xtream.processAnnotations(AddressDetails.class); + xtream.processAnnotations(ContactDetails.class); + xtream.omitField(Customer.class , "firstName"); + xtream.registerConverter(new MyDateConverter()); + //xtream.registerConverter(new MySingleValueConverter()); + xtream.aliasField("fn", Customer.class, "firstName"); + + dataXml = xtream.toXML(customer); + System.out.println(dataXml); + } + + @Test + public void convertDataToXml() { + Assert.assertNotNull(dataXml); + } + + @Test + public void convertXmlToObject() { + customer = (Customer) xtream.fromXML(dataXml); + Assert.assertNotNull(customer); + } + +} From bd2afce4d643721af142995f1a8da67b5a3734a0 Mon Sep 17 00:00:00 2001 From: ankur-singhal Date: Tue, 1 Mar 2016 18:37:46 +0530 Subject: [PATCH 2/3] XStream - Object to xml XStream - Object to xml --- .../initializer/SimpleXstreamInitializer.java | 10 +++++----- .../utility/SimpleDataGeneration.java | 2 +- .../utility/XStreamSimpleXmlTest.java | 20 +++++++++---------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java b/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java index c96392daf5..59912539ca 100644 --- a/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java +++ b/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java @@ -4,16 +4,16 @@ import com.thoughtworks.xstream.XStream; public class SimpleXstreamInitializer { - private static XStream xtreamInstance; + private static XStream xstreamInstance; public static XStream getXstreamInstance() { - if (xtreamInstance == null) { + if (xstreamInstance == null) { synchronized (SimpleXstreamInitializer.class) { - if (xtreamInstance == null) { - xtreamInstance = new XStream(); + if (xstreamInstance == null) { + xstreamInstance = new XStream(); } } } - return xtreamInstance; + return xstreamInstance; } } \ No newline at end of file diff --git a/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java b/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java index e6a97e5ea6..2b2a7a8bb8 100644 --- a/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java +++ b/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java @@ -14,7 +14,7 @@ public class SimpleDataGeneration { Calendar cal = Calendar.getInstance(); cal.set(1986 , 01 , 14); customer.setDob(cal.getTime()); - customer.setFirstName("Xstream"); + customer.setFirstName("XStream"); customer.setLastName("Java"); List contactDetailsList = new ArrayList(); diff --git a/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java b/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java index 489960d6ca..57d0bd2b55 100644 --- a/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java +++ b/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java @@ -14,21 +14,21 @@ public class XStreamSimpleXmlTest { private Customer customer = null; private String dataXml = null; - private XStream xtream = null; + private XStream xstream = null; @Before public void dataSetup() { customer = SimpleDataGeneration.generateData(); - xtream = SimpleXstreamInitializer.getXstreamInstance(); - xtream.processAnnotations(Customer.class); - xtream.processAnnotations(AddressDetails.class); - xtream.processAnnotations(ContactDetails.class); - xtream.omitField(Customer.class , "firstName"); - xtream.registerConverter(new MyDateConverter()); + xstream = SimpleXstreamInitializer.getXstreamInstance(); + xstream.processAnnotations(Customer.class); + xstream.processAnnotations(AddressDetails.class); + xstream.processAnnotations(ContactDetails.class); + xstream.omitField(Customer.class , "firstName"); + xstream.registerConverter(new MyDateConverter()); //xtream.registerConverter(new MySingleValueConverter()); - xtream.aliasField("fn", Customer.class, "firstName"); + xstream.aliasField("fn", Customer.class, "firstName"); - dataXml = xtream.toXML(customer); + dataXml = xstream.toXML(customer); System.out.println(dataXml); } @@ -39,7 +39,7 @@ public class XStreamSimpleXmlTest { @Test public void convertXmlToObject() { - customer = (Customer) xtream.fromXML(dataXml); + customer = (Customer) xstream.fromXML(dataXml); Assert.assertNotNull(customer); } From 452070aa354a24f82583260048fa3a7935f6ce3a Mon Sep 17 00:00:00 2001 From: ankur-singhal Date: Sun, 20 Mar 2016 20:46:58 +0530 Subject: [PATCH 3/3] XStream- Object to Xml Closing Review comments, test cases added. --- xstream-introduction/.classpath | 15 ----- .../initializer/SimpleXstreamInitializer.java | 2 +- .../baeldung/pojo/AddressDetails.java | 2 +- .../baeldung/pojo/ContactDetails.java | 2 +- .../{org => com}/baeldung/pojo/Customer.java | 4 +- .../baeldung/pojo/CustomerAddressDetails.java | 2 +- .../baeldung/pojo/CustomerPortfolio.java | 2 +- .../baeldung/utility/MyDateConverter.java | 2 +- .../utility/MySingleValueConverter.java | 5 +- .../utility/SimpleDataGeneration.java | 6 +- .../utility/XStreamSimpleXmlTest.java | 62 +++++++++++++++++++ .../utility/XStreamSimpleXmlTest.java | 46 -------------- 12 files changed, 75 insertions(+), 75 deletions(-) delete mode 100644 xstream-introduction/.classpath rename xstream-introduction/src/main/java/{org => com}/baeldung/initializer/SimpleXstreamInitializer.java (91%) rename xstream-introduction/src/main/java/{org => com}/baeldung/pojo/AddressDetails.java (96%) rename xstream-introduction/src/main/java/{org => com}/baeldung/pojo/ContactDetails.java (94%) rename xstream-introduction/src/main/java/{org => com}/baeldung/pojo/Customer.java (95%) rename xstream-introduction/src/main/java/{org => com}/baeldung/pojo/CustomerAddressDetails.java (96%) rename xstream-introduction/src/main/java/{org => com}/baeldung/pojo/CustomerPortfolio.java (94%) rename xstream-introduction/src/main/java/{org => com}/baeldung/utility/MyDateConverter.java (97%) rename xstream-introduction/src/main/java/{org => com}/baeldung/utility/MySingleValueConverter.java (90%) rename xstream-introduction/src/main/java/{org => com}/baeldung/utility/SimpleDataGeneration.java (89%) create mode 100644 xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java delete mode 100644 xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java diff --git a/xstream-introduction/.classpath b/xstream-introduction/.classpath deleted file mode 100644 index 138df490af..0000000000 --- a/xstream-introduction/.classpath +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java b/xstream-introduction/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java similarity index 91% rename from xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java rename to xstream-introduction/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java index 59912539ca..618df877b9 100644 --- a/xstream-introduction/src/main/java/org/baeldung/initializer/SimpleXstreamInitializer.java +++ b/xstream-introduction/src/main/java/com/baeldung/initializer/SimpleXstreamInitializer.java @@ -1,4 +1,4 @@ -package org.baeldung.initializer; +package com.baeldung.initializer; import com.thoughtworks.xstream.XStream; diff --git a/xstream-introduction/src/main/java/org/baeldung/pojo/AddressDetails.java b/xstream-introduction/src/main/java/com/baeldung/pojo/AddressDetails.java similarity index 96% rename from xstream-introduction/src/main/java/org/baeldung/pojo/AddressDetails.java rename to xstream-introduction/src/main/java/com/baeldung/pojo/AddressDetails.java index 16930cb8ab..e9e30bf5fc 100644 --- a/xstream-introduction/src/main/java/org/baeldung/pojo/AddressDetails.java +++ b/xstream-introduction/src/main/java/com/baeldung/pojo/AddressDetails.java @@ -1,4 +1,4 @@ -package org.baeldung.pojo; +package com.baeldung.pojo; import java.util.List; diff --git a/xstream-introduction/src/main/java/org/baeldung/pojo/ContactDetails.java b/xstream-introduction/src/main/java/com/baeldung/pojo/ContactDetails.java similarity index 94% rename from xstream-introduction/src/main/java/org/baeldung/pojo/ContactDetails.java rename to xstream-introduction/src/main/java/com/baeldung/pojo/ContactDetails.java index 1cb353414b..66475b9d8e 100644 --- a/xstream-introduction/src/main/java/org/baeldung/pojo/ContactDetails.java +++ b/xstream-introduction/src/main/java/com/baeldung/pojo/ContactDetails.java @@ -1,4 +1,4 @@ -package org.baeldung.pojo; +package com.baeldung.pojo; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/xstream-introduction/src/main/java/org/baeldung/pojo/Customer.java b/xstream-introduction/src/main/java/com/baeldung/pojo/Customer.java similarity index 95% rename from xstream-introduction/src/main/java/org/baeldung/pojo/Customer.java rename to xstream-introduction/src/main/java/com/baeldung/pojo/Customer.java index aeb6e0aaf3..2ed11dcdab 100644 --- a/xstream-introduction/src/main/java/org/baeldung/pojo/Customer.java +++ b/xstream-introduction/src/main/java/com/baeldung/pojo/Customer.java @@ -1,4 +1,4 @@ -package org.baeldung.pojo; +package com.baeldung.pojo; import java.util.Date; import java.util.List; @@ -10,7 +10,7 @@ import com.thoughtworks.xstream.annotations.XStreamOmitField; @XStreamAlias("customer") public class Customer { - @XStreamOmitField + //@XStreamOmitField private String firstName; private String lastName; diff --git a/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java b/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java similarity index 96% rename from xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java rename to xstream-introduction/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java index e4ce5ae5cd..30fda1b92c 100644 --- a/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerAddressDetails.java +++ b/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerAddressDetails.java @@ -1,4 +1,4 @@ -package org.baeldung.pojo; +package com.baeldung.pojo; import java.util.List; diff --git a/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerPortfolio.java b/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerPortfolio.java similarity index 94% rename from xstream-introduction/src/main/java/org/baeldung/pojo/CustomerPortfolio.java rename to xstream-introduction/src/main/java/com/baeldung/pojo/CustomerPortfolio.java index cc65128650..6f1ce4b651 100644 --- a/xstream-introduction/src/main/java/org/baeldung/pojo/CustomerPortfolio.java +++ b/xstream-introduction/src/main/java/com/baeldung/pojo/CustomerPortfolio.java @@ -1,4 +1,4 @@ -package org.baeldung.pojo; +package com.baeldung.pojo; import java.util.List; diff --git a/xstream-introduction/src/main/java/org/baeldung/utility/MyDateConverter.java b/xstream-introduction/src/main/java/com/baeldung/utility/MyDateConverter.java similarity index 97% rename from xstream-introduction/src/main/java/org/baeldung/utility/MyDateConverter.java rename to xstream-introduction/src/main/java/com/baeldung/utility/MyDateConverter.java index a11b58bd12..564a28d1c5 100644 --- a/xstream-introduction/src/main/java/org/baeldung/utility/MyDateConverter.java +++ b/xstream-introduction/src/main/java/com/baeldung/utility/MyDateConverter.java @@ -1,4 +1,4 @@ -package org.baeldung.utility; +package com.baeldung.utility; import java.text.ParseException; import java.text.SimpleDateFormat; diff --git a/xstream-introduction/src/main/java/org/baeldung/utility/MySingleValueConverter.java b/xstream-introduction/src/main/java/com/baeldung/utility/MySingleValueConverter.java similarity index 90% rename from xstream-introduction/src/main/java/org/baeldung/utility/MySingleValueConverter.java rename to xstream-introduction/src/main/java/com/baeldung/utility/MySingleValueConverter.java index 0cabc4fe03..358d647835 100644 --- a/xstream-introduction/src/main/java/org/baeldung/utility/MySingleValueConverter.java +++ b/xstream-introduction/src/main/java/com/baeldung/utility/MySingleValueConverter.java @@ -1,10 +1,9 @@ -package org.baeldung.utility; +package com.baeldung.utility; import java.text.SimpleDateFormat; import java.util.Date; -import org.baeldung.pojo.Customer; - +import com.baeldung.pojo.Customer; import com.thoughtworks.xstream.converters.SingleValueConverter; public class MySingleValueConverter implements SingleValueConverter { diff --git a/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java b/xstream-introduction/src/main/java/com/baeldung/utility/SimpleDataGeneration.java similarity index 89% rename from xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java rename to xstream-introduction/src/main/java/com/baeldung/utility/SimpleDataGeneration.java index 2b2a7a8bb8..22d0f0ce77 100644 --- a/xstream-introduction/src/main/java/org/baeldung/utility/SimpleDataGeneration.java +++ b/xstream-introduction/src/main/java/com/baeldung/utility/SimpleDataGeneration.java @@ -1,11 +1,11 @@ -package org.baeldung.utility; +package com.baeldung.utility; import java.util.ArrayList; import java.util.Calendar; import java.util.List; -import org.baeldung.pojo.ContactDetails; -import org.baeldung.pojo.Customer; +import com.baeldung.pojo.ContactDetails; +import com.baeldung.pojo.Customer; public class SimpleDataGeneration { diff --git a/xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java b/xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java new file mode 100644 index 0000000000..50d02528bd --- /dev/null +++ b/xstream-introduction/src/test/java/com/baeldung/utility/XStreamSimpleXmlTest.java @@ -0,0 +1,62 @@ +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(); + 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); + System.out.println(dataXml); + } + + @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/java/org/baeldung/utility/XStreamSimpleXmlTest.java b/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java deleted file mode 100644 index 57d0bd2b55..0000000000 --- a/xstream-introduction/src/test/java/org/baeldung/utility/XStreamSimpleXmlTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.baeldung.utility; - -import org.baeldung.initializer.SimpleXstreamInitializer; -import org.baeldung.pojo.AddressDetails; -import org.baeldung.pojo.ContactDetails; -import org.baeldung.pojo.Customer; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -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(); - xstream = SimpleXstreamInitializer.getXstreamInstance(); - xstream.processAnnotations(Customer.class); - xstream.processAnnotations(AddressDetails.class); - xstream.processAnnotations(ContactDetails.class); - xstream.omitField(Customer.class , "firstName"); - xstream.registerConverter(new MyDateConverter()); - //xtream.registerConverter(new MySingleValueConverter()); - xstream.aliasField("fn", Customer.class, "firstName"); - - dataXml = xstream.toXML(customer); - System.out.println(dataXml); - } - - @Test - public void convertDataToXml() { - Assert.assertNotNull(dataXml); - } - - @Test - public void convertXmlToObject() { - customer = (Customer) xstream.fromXML(dataXml); - Assert.assertNotNull(customer); - } - -}