Skip to content

Commit fe28900

Browse files
urvyagrawalmaibin
authored andcommitted
Added files for BAEL-2494 (eugenp#6370)
1 parent 243c671 commit fe28900

5 files changed

Lines changed: 186 additions & 6 deletions

File tree

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.baeldung.jackson.dtos;
2+
3+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
4+
5+
public class Address {
6+
7+
@JacksonXmlProperty(localName = "street_number")
8+
String streetNumber;
9+
10+
@JacksonXmlProperty(localName = "street_name")
11+
String streetName;
12+
13+
@JacksonXmlProperty(localName = "city")
14+
String city;
15+
16+
public String getStreetNumber() {
17+
return streetNumber;
18+
}
19+
20+
public void setStreetNumber(String streetNumber) {
21+
this.streetNumber = streetNumber;
22+
}
23+
24+
public String getStreetName() {
25+
return streetName;
26+
}
27+
28+
public void setStreetName(String streetName) {
29+
this.streetName = streetName;
30+
}
31+
32+
public String getCity() {
33+
return city;
34+
}
35+
36+
public void setCity(String city) {
37+
this.city = city;
38+
}
39+
40+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.baeldung.jackson.dtos;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
7+
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
8+
9+
@JacksonXmlRootElement(localName = "person")
10+
public final class Person {
11+
private String firstName;
12+
private String lastName;
13+
@JacksonXmlElementWrapper(useWrapping = false)
14+
private List<String> phoneNumbers = new ArrayList<>();
15+
@JacksonXmlElementWrapper(localName = "addresses")
16+
private List<Address> address = new ArrayList<>();
17+
18+
public List<Address> getAddress() {
19+
return address;
20+
}
21+
22+
public void setAddress(List<Address> address) {
23+
this.address = address;
24+
}
25+
26+
public String getFirstName() {
27+
return firstName;
28+
}
29+
30+
public void setFirstName(String firstName) {
31+
this.firstName = firstName;
32+
}
33+
34+
public String getLastName() {
35+
return lastName;
36+
}
37+
38+
public void setLastName(String lastName) {
39+
this.lastName = lastName;
40+
}
41+
public List<String> getPhoneNumbers() {
42+
return phoneNumbers;
43+
}
44+
45+
public void setPhoneNumbers(List<String> phoneNumbers) {
46+
this.phoneNumbers = phoneNumbers;
47+
}
48+
49+
50+
51+
}

jackson/src/test/java/com/baeldung/jackson/xml/XMLSerializeDeserializeUnitTest.java

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,16 @@
99
import java.io.IOException;
1010
import java.io.InputStream;
1111
import java.io.InputStreamReader;
12+
import java.util.ArrayList;
13+
import java.util.List;
1214

1315
import org.junit.Test;
1416

17+
import com.baeldung.jackson.dtos.Address;
18+
import com.baeldung.jackson.dtos.Person;
19+
import com.fasterxml.jackson.annotation.JsonProperty;
1520
import com.fasterxml.jackson.core.JsonProcessingException;
1621
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
17-
import com.fasterxml.jackson.annotation.JsonProperty;
1822

1923
public class XMLSerializeDeserializeUnitTest {
2024

@@ -49,7 +53,7 @@ public void whenJavaGotFromXmlFile_thenCorrect() throws IOException {
4953
assertTrue(value.getX() == 1 && value.getY() == 2);
5054
}
5155

52-
@Test
56+
@Test
5357
public void whenJavaGotFromXmlStrWithCapitalElem_thenCorrect() throws IOException {
5458
XmlMapper xmlMapper = new XmlMapper();
5559
SimpleBeanForCapitalizedFields value = xmlMapper.
@@ -67,6 +71,54 @@ public void whenJavaSerializedToXmlFileWithCapitalizedField_thenCorrect() throws
6771
assertNotNull(file);
6872
}
6973

74+
@Test
75+
public void whenJavaDeserializedFromXmlFile_thenCorrect() throws IOException {
76+
XmlMapper xmlMapper = new XmlMapper();
77+
Person value = xmlMapper.readValue(new File("src/test/resources/person.xml"), Person.class);
78+
79+
assertTrue(value.getAddress()
80+
.get(0)
81+
.getCity()
82+
.equalsIgnoreCase("city1")
83+
&& value.getAddress()
84+
.get(1)
85+
.getCity()
86+
.equalsIgnoreCase("city2"));
87+
}
88+
89+
@Test
90+
public void whenJavaSerializedToXmlFile_thenSuccess() throws IOException {
91+
XmlMapper xmlMapper = new XmlMapper();
92+
93+
Person person = new Person();
94+
95+
person.setFirstName("Rohan");
96+
person.setLastName("Daye");
97+
98+
List<String> ph = new ArrayList<>();
99+
ph.add("9911778981");
100+
ph.add("9991111111");
101+
person.setPhoneNumbers(ph);
102+
103+
List<Address> addresses = new ArrayList<>();
104+
105+
Address address1 = new Address();
106+
address1.setStreetNumber("1");
107+
address1.setStreetName("streetname1");
108+
address1.setCity("city1");
109+
110+
Address address2 = new Address();
111+
address2.setStreetNumber("2");
112+
address2.setStreetName("streetname2");
113+
address2.setCity("city2");
114+
115+
addresses.add(address1);
116+
addresses.add(address2);
117+
person.setAddress(addresses);
118+
119+
xmlMapper.writeValue(new File("src/test/resources/PersonGenerated.xml"), person);
120+
}
121+
70122
private static String inputStreamToString(InputStream is) throws IOException {
71123
BufferedReader br;
72124
StringBuilder sb = new StringBuilder();
@@ -103,10 +155,10 @@ public void setY(int y) {
103155

104156
}
105157

106-
class SimpleBeanForCapitalizedFields {
107-
@JsonProperty("X")
108-
private int x = 1;
109-
private int y = 2;
158+
class SimpleBeanForCapitalizedFields {
159+
@JsonProperty("X")
160+
private int x = 1;
161+
private int y = 2;
110162

111163
public int getX() {
112164
return x;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<person>
2+
<firstName></firstName>
3+
<lastName></lastName>
4+
<phoneNumbers>9911778981</phoneNumbers>
5+
<phoneNumbers>9991111111</phoneNumbers>
6+
<addresses>
7+
<address>
8+
<street_number>1</street_number>
9+
<street_name>streetname1</street_name>
10+
<city>city1</city>
11+
</address>
12+
<address>
13+
<street_number>2</street_number>
14+
<street_name>streetname2</street_name>
15+
<city>city2</city>
16+
</address>
17+
</addresses>
18+
</person>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<person>
3+
<firstName>Rohan</firstName>
4+
<lastName>Daye</lastName>
5+
<phoneNumbers>9911034731</phoneNumbers>
6+
<phoneNumbers>9911033478</phoneNumbers>
7+
<addresses>
8+
<address>
9+
<street_number>1</street_number>
10+
<street_name>Name1</street_name>
11+
<city>City1</city>
12+
</address>
13+
<address>
14+
<street_number>2</street_number>
15+
<street_name>Name2</street_name>
16+
<city>City2</city>
17+
</address>
18+
</addresses>
19+
</person>

0 commit comments

Comments
 (0)