From 8442fc354b8efca75497bc23bfa421634faf3b96 Mon Sep 17 00:00:00 2001 From: Zeger Hendrikse Date: Tue, 20 Dec 2016 23:00:35 +0100 Subject: [PATCH] Merge changes from branch --- jaxb/book.xml | 5 ++ jaxb/pom.xml | 31 ++++++++--- jaxb/sample_book.xml | 5 ++ .../src/main/java/com/baeldung/jaxb/Book.java | 17 +++++- .../src/main/java/com/baeldung/jaxb/Main.java | 4 +- .../java/com/baeldung/jaxb/test/JaxbTest.java | 54 +++++++++++++++++++ 6 files changed, 106 insertions(+), 10 deletions(-) create mode 100644 jaxb/book.xml create mode 100644 jaxb/sample_book.xml create mode 100644 jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java diff --git a/jaxb/book.xml b/jaxb/book.xml new file mode 100644 index 0000000000..605d531b16 --- /dev/null +++ b/jaxb/book.xml @@ -0,0 +1,5 @@ + + + Book1 + 2016-12-16T17:28:49.718Z + diff --git a/jaxb/pom.xml b/jaxb/pom.xml index 6c36956913..115a632d7b 100644 --- a/jaxb/pom.xml +++ b/jaxb/pom.xml @@ -23,7 +23,13 @@ com.sun.istack istack-commons-runtime - ${istack.version} + 3.0.2 + + + + commons-io + commons-io + 2.5 @@ -43,7 +49,18 @@ logback-core ${logback.version} - + + + junit + junit + ${junit.version} + + + + org.apache.commons + commons-lang3 + 3.5 + @@ -60,7 +77,7 @@ org.eclipse.m2e lifecycle-mapping - ${lifecycle-mapping.version} + 1.0.0 @@ -158,16 +175,14 @@ 2.2.11 - 3.0.2 - 1.7.21 1.1.7 - 1.0.0 - 3.6.0 + 3.5.1 2.3 + 4.12 - \ No newline at end of file + diff --git a/jaxb/sample_book.xml b/jaxb/sample_book.xml new file mode 100644 index 0000000000..605d531b16 --- /dev/null +++ b/jaxb/sample_book.xml @@ -0,0 +1,5 @@ + + + Book1 + 2016-12-16T17:28:49.718Z + diff --git a/jaxb/src/main/java/com/baeldung/jaxb/Book.java b/jaxb/src/main/java/com/baeldung/jaxb/Book.java index 8455d3e6df..b7a5d39ce5 100644 --- a/jaxb/src/main/java/com/baeldung/jaxb/Book.java +++ b/jaxb/src/main/java/com/baeldung/jaxb/Book.java @@ -8,6 +8,10 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; +import org.apache.commons.lang3.builder.EqualsBuilder; +import org.apache.commons.lang3.builder.HashCodeBuilder; +import org.apache.commons.lang3.builder.ToStringBuilder; + @XmlRootElement(name = "book") @XmlType(propOrder = { "id", "name", "date" }) public class Book { @@ -53,6 +57,17 @@ public class Book { @Override public String toString() { - return "Book [id=" + id + ", name=" + name + ", author=" + author + ", date=" + date + "]"; + return ToStringBuilder.reflectionToString(this); } + + @Override + public boolean equals(Object obj) { + return EqualsBuilder.reflectionEquals(this, obj); + } + + @Override + public int hashCode() { + return HashCodeBuilder.reflectionHashCode(this); + } + } diff --git a/jaxb/src/main/java/com/baeldung/jaxb/Main.java b/jaxb/src/main/java/com/baeldung/jaxb/Main.java index aaf062dd4e..46adfb3c60 100644 --- a/jaxb/src/main/java/com/baeldung/jaxb/Main.java +++ b/jaxb/src/main/java/com/baeldung/jaxb/Main.java @@ -4,6 +4,7 @@ import java.io.File; import java.io.FileReader; import java.io.IOException; import java.util.Date; +import java.util.TimeZone; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -16,7 +17,8 @@ public class Main { book.setId(1L); book.setName("Book1"); book.setAuthor("Author1"); - book.setDate(new Date()); + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + book.setDate(new Date(1481909329718L)); JAXBContext context = JAXBContext.newInstance(Book.class); Marshaller marshaller = context.createMarshaller(); diff --git a/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java new file mode 100644 index 0000000000..daf3864436 --- /dev/null +++ b/jaxb/src/test/java/com/baeldung/jaxb/test/JaxbTest.java @@ -0,0 +1,54 @@ +package com.baeldung.jaxb.test; + +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.Date; +import java.util.TimeZone; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; +import javax.xml.bind.Unmarshaller; + +import org.apache.commons.io.FileUtils; +import org.junit.Assert; +import org.junit.Before; +import org.junit.FixMethodOrder; +import org.junit.Test; +import org.junit.runners.MethodSorters; + +import com.baeldung.jaxb.Book; + +@FixMethodOrder(MethodSorters.NAME_ASCENDING) +public class JaxbTest { + Book book; + JAXBContext context; + + @Before + public void before() throws JAXBException { + book = new Book(); + book.setId(1L); + book.setName("Book1"); + TimeZone.setDefault(TimeZone.getTimeZone("UTC")); + book.setDate(new Date(1481909329718L)); + context = JAXBContext.newInstance(Book.class); + } + + @Test + public void marshal() throws JAXBException, IOException { + Marshaller marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + marshaller.marshal(book, new File("./book.xml")); + String sampleBookXML = FileUtils.readFileToString(new File("./sample_book.xml"), "UTF-8"); + String marshallerBookXML = FileUtils.readFileToString(new File("./book.xml"), "UTF-8"); + Assert.assertEquals(sampleBookXML, marshallerBookXML); + } + + @Test + public void unMashal() throws JAXBException, IOException { + Unmarshaller unmarshaller = context.createUnmarshaller(); + Book unMarshallerbook = (Book) unmarshaller.unmarshal(new FileReader("./book.xml")); + Assert.assertEquals(book, unMarshallerbook); + } +}