diff --git a/core-java-8/README.md b/core-java-8/README.md index 690bd48ed5..540a32b0ba 100644 --- a/core-java-8/README.md +++ b/core-java-8/README.md @@ -30,3 +30,5 @@ - [The Difference Between map() and flatMap()](http://www.baeldung.com/java-difference-map-and-flatmap) - [Merging Streams in Java](http://www.baeldung.com/java-merge-streams) - [“Stream has already been operated upon or closed” Exception in Java](http://www.baeldung.com/java-stream-operated-upon-or-closed-exception) +- [Display All Time Zones With GMT And UTC in Java](http://www.baeldung.com/java-time-zones) +- [Copy a File with Java](http://www.baeldung.com/java-copy-file) diff --git a/core-java/README.md b/core-java/README.md index 14058474a1..4573d5f7e2 100644 --- a/core-java/README.md +++ b/core-java/README.md @@ -118,4 +118,5 @@ - [A Guide to the Static Keyword in Java](http://www.baeldung.com/java-static) - [Initializing Arrays in Java](http://www.baeldung.com/java-initialize-array) - [Guide to Java String Pool](http://www.baeldung.com/java-string-pool) +- [Copy a File with Java](http://www.baeldung.com/java-copy-file) diff --git a/core-java/src/test/java/com/baeldung/string/formatter/StringFormatterExampleTests.java b/core-java/src/test/java/com/baeldung/string/formatter/StringFormatterExampleTests.java index 5e8d2c4455..ad4f5dce7e 100644 --- a/core-java/src/test/java/com/baeldung/string/formatter/StringFormatterExampleTests.java +++ b/core-java/src/test/java/com/baeldung/string/formatter/StringFormatterExampleTests.java @@ -14,7 +14,8 @@ public class StringFormatterExampleTests { public void givenString_whenFormatSpecifierForCalendar_thenGotExpected() { //Syntax of Format Specifiers for Date/Time Representation Calendar c = new GregorianCalendar(2017, 11, 10); - String s = String.format("The date is: %1$tm %1$te,%1$tY", c); + String s = String.format("The date is: %tm %1$te,%1$tY", c); + assertEquals("The date is: 12 10,2017", s); } @@ -84,7 +85,7 @@ public class StringFormatterExampleTests { public void givenString_whenLineSeparatorConversion_thenConvertedString() { //Line Separator Conversion String s = String.format("First Line %nSecond Line"); - assertEquals("First Line \n" + assertEquals("First Line " + System.getProperty("line.separator") + "Second Line", s); } @@ -114,10 +115,10 @@ public class StringFormatterExampleTests { public void givenString_whenSpecifyArgumentIndex_thenGotExpected() { Calendar c = new GregorianCalendar(2017, 11, 10); //Argument_Index - String s = String.format("The date is: %1$tm %1$te,%1$tY", c); + String s = String.format("The date is: %tm %1$te,%1$tY", c); assertEquals("The date is: 12 10,2017", s); - - s = String.format("The date is: %1$tm %1.0 1.1.3 1.0 - 1.0 + 1.0.1 1.1.2 4.1 - + \ No newline at end of file diff --git a/jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java b/jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java new file mode 100644 index 0000000000..dfab2eb0d2 --- /dev/null +++ b/jsonb/src/main/java/com/baeldung/adapter/PersonAdapter.java @@ -0,0 +1,26 @@ +package com.baeldung.adapter; + +import javax.json.Json; +import javax.json.JsonObject; +import javax.json.bind.adapter.JsonbAdapter; + +import com.baeldung.jsonb.Person; + +public class PersonAdapter implements JsonbAdapter { + + @Override + public JsonObject adaptToJson(Person p) throws Exception { + return Json.createObjectBuilder() + .add("id", p.getId()) + .add("name", p.getName()) + .build(); + } + + @Override + public Person adaptFromJson(JsonObject adapted) throws Exception { + Person person = new Person(); + person.setId(adapted.getInt("id")); + person.setName(adapted.getString("name")); + return person; + } +} \ No newline at end of file diff --git a/jsonb/src/main/java/com/baeldung/jsonb/Person.java b/jsonb/src/main/java/com/baeldung/jsonb/Person.java index 7a54b37574..a506c1b000 100644 --- a/jsonb/src/main/java/com/baeldung/jsonb/Person.java +++ b/jsonb/src/main/java/com/baeldung/jsonb/Person.java @@ -22,10 +22,10 @@ public class Person { private BigDecimal salary; public Person() { + this(0, "", "", 0, LocalDate.now(), new BigDecimal(0)); } public Person(int id, String name, String email, int age, LocalDate registeredDate, BigDecimal salary) { - super(); this.id = id; this.name = name; this.email = email; diff --git a/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java b/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java index 92ffe0aa6f..67beda77e1 100644 --- a/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java +++ b/jsonb/src/test/java/com/baeldung/jsonb/JsonbTest.java @@ -17,6 +17,8 @@ import javax.json.bind.config.PropertyOrderStrategy; import org.apache.commons.collections4.ListUtils; import org.junit.Test; +import com.baeldung.adapter.PersonAdapter; + public class JsonbTest { @Test @@ -155,4 +157,32 @@ public class JsonbTest { .equals(person)); } + @Test + public void givenPersonObject_whenSerializeWithAdapter_thenGetPersonJson() { + JsonbConfig config = new JsonbConfig().withAdapters(new PersonAdapter()); + Jsonb jsonb = JsonbBuilder.create(config); + Person person = new Person(1, "Jhon", "jhon@test.com", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0));// new Person(1, "Jhon"); + String jsonPerson = jsonb.toJson(person); + // @formatter:off + String jsonExpected = + "{\"id\":1," + + "\"name\":\"Jhon\"}"; + // @formatter:on + assertTrue(jsonExpected.equals(jsonPerson)); + } + + @Test + public void givenPersonJson_whenDeserializeWithAdapter_thenGetPersonObject() { + JsonbConfig config = new JsonbConfig().withAdapters(new PersonAdapter()); + Jsonb jsonb = JsonbBuilder.create(config); + Person person = new Person(1, "Jhon", "jhon@test.com", 0, LocalDate.of(2019, 9, 7), BigDecimal.valueOf(1000.0));// new Person(1, "Jhon"); + // @formatter:off + String jsonPerson = + "{\"id\":1," + + "\"name\":\"Jhon\"}"; + // @formatter:on + assertTrue(jsonb.fromJson(jsonPerson, Person.class) + .equals(person)); + } + }