From 69c160aab9963e0fdd649719a16003c7e16e865a Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Sun, 21 Oct 2018 07:27:01 +0530 Subject: [PATCH 1/9] BAEL-2203 - Convert java.time.Instant to java.sql.Timestamp and vice-versa --- .../datetime/ConvertInstantToTimestamp.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java diff --git a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java b/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java new file mode 100644 index 0000000000..b2f18fd3bf --- /dev/null +++ b/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java @@ -0,0 +1,36 @@ +package com.baeldung.datetime; + +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.ZoneId; +import java.util.TimeZone; + +public class ConvertInstantToTimestamp { + + public static void main(String[] args) { + run(); + } + + public static void run() { + Instant instant = Instant.now(); + Timestamp timestamp = Timestamp.from(instant); // same point on the time-line as Instant + + System.out.println("Instant (milliseconds from epoch)" + instant.toEpochMilli()); + System.out.println("Timestamp (milliseconds from epoch): " + timestamp.getTime()); + System.out.print("\n"); + + // Local TimeZone of the machine at the time of running this code is GMT +5:30 a.k.a IST + ZoneId zoneId = ZoneId.of(ZoneId.SHORT_IDS.get("IST")); + + DateFormat df = DateFormat.getDateTimeInstance(); + df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SS'Z'"); + df.setTimeZone(TimeZone.getTimeZone("UTC")); + + System.out.println("Instant (in UTC): " + instant); + System.out.println("Timestamp (in UTC): " + df.format(timestamp)); + System.out.println("Instant (in GMT +05:30): " + instant.atZone(zoneId)); + System.out.println("Timestamp (in GMT +05:30): " + timestamp); + } +} \ No newline at end of file From 3b17051337aee90d0f85885263af4840666ab37f Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Wed, 24 Oct 2018 17:55:34 +0530 Subject: [PATCH 2/9] BAEL-2203: Review edits --- .../java/com/baeldung/datetime/ConvertInstantToTimestamp.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java b/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java index b2f18fd3bf..e8ce4adaa1 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java +++ b/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java @@ -16,8 +16,9 @@ public class ConvertInstantToTimestamp { public static void run() { Instant instant = Instant.now(); Timestamp timestamp = Timestamp.from(instant); // same point on the time-line as Instant + instant = timestamp.toInstant(); - System.out.println("Instant (milliseconds from epoch)" + instant.toEpochMilli()); + System.out.println("Instant (milliseconds from epoch): " + instant.toEpochMilli()); System.out.println("Timestamp (milliseconds from epoch): " + timestamp.getTime()); System.out.print("\n"); From 7064a7e30960c51b7ed2b8aebee6465d6d4c3cb2 Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Sat, 3 Nov 2018 01:01:07 +0530 Subject: [PATCH 3/9] Removed ZoneId code --- .../datetime/ConvertInstantToTimestamp.java | 21 +++++++------------ 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java b/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java index e8ce4adaa1..53618b3c31 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java +++ b/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java @@ -1,5 +1,7 @@ package com.baeldung.datetime; +import static org.junit.Assert.assertEquals; + import java.sql.Timestamp; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -16,22 +18,15 @@ public class ConvertInstantToTimestamp { public static void run() { Instant instant = Instant.now(); Timestamp timestamp = Timestamp.from(instant); // same point on the time-line as Instant + assertEquals(instant.toEpochMilli(), timestamp.getTime()); + instant = timestamp.toInstant(); - - System.out.println("Instant (milliseconds from epoch): " + instant.toEpochMilli()); - System.out.println("Timestamp (milliseconds from epoch): " + timestamp.getTime()); - System.out.print("\n"); - - // Local TimeZone of the machine at the time of running this code is GMT +5:30 a.k.a IST - ZoneId zoneId = ZoneId.of(ZoneId.SHORT_IDS.get("IST")); + assertEquals(instant.toEpochMilli(), timestamp.getTime()); DateFormat df = DateFormat.getDateTimeInstance(); - df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss:SS'Z'"); + df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'"); df.setTimeZone(TimeZone.getTimeZone("UTC")); - System.out.println("Instant (in UTC): " + instant); - System.out.println("Timestamp (in UTC): " + df.format(timestamp)); - System.out.println("Instant (in GMT +05:30): " + instant.atZone(zoneId)); - System.out.println("Timestamp (in GMT +05:30): " + timestamp); + assertEquals(instant.toString(), df.format(timestamp).toString()); } -} \ No newline at end of file +} From 5e1fc54ec2cfc589988af9f2b8cd4a3bf1ac7290 Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Sat, 3 Nov 2018 15:59:05 +0530 Subject: [PATCH 4/9] Converted class to JUnit Test --- .../ConvertInstantToTimestampTest.java} | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) rename java-dates/src/{main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java => test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java} (55%) diff --git a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java b/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java similarity index 55% rename from java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java rename to java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java index 53618b3c31..bfbd911e95 100644 --- a/java-dates/src/main/java/com/baeldung/datetime/ConvertInstantToTimestamp.java +++ b/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java @@ -1,6 +1,6 @@ package com.baeldung.datetime; -import static org.junit.Assert.assertEquals; +import static org.assertj.core.api.Assertions.assertThat; import java.sql.Timestamp; import java.text.DateFormat; @@ -9,24 +9,22 @@ import java.time.Instant; import java.time.ZoneId; import java.util.TimeZone; -public class ConvertInstantToTimestamp { +import org.junit.Test; - public static void main(String[] args) { - run(); - } +public class ConvertInstantToTimestampTest { - public static void run() { + @Test + public void givenInstant_whenConvertedToTimestamp_thenGetTimestampWithSamePointOnTimeline() { Instant instant = Instant.now(); Timestamp timestamp = Timestamp.from(instant); // same point on the time-line as Instant - assertEquals(instant.toEpochMilli(), timestamp.getTime()); + assertThat(instant.toEpochMilli()).isEqualTo(timestamp.getTime()); instant = timestamp.toInstant(); - assertEquals(instant.toEpochMilli(), timestamp.getTime()); + assertThat(instant.toEpochMilli()).isEqualTo(timestamp.getTime()); DateFormat df = DateFormat.getDateTimeInstance(); df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'"); df.setTimeZone(TimeZone.getTimeZone("UTC")); - - assertEquals(instant.toString(), df.format(timestamp).toString()); + assertThat(instant.toString()).isEqualTo(df.format(timestamp).toString()); } } From ce76dcde0d3594abb32b8b369d57baefaad786d1 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Sat, 3 Nov 2018 20:41:53 +0200 Subject: [PATCH 5/9] Update and rename ConvertInstantToTimestampTest.java to ConvertInstantToTimestampUnitTest.java --- ...imestampTest.java => ConvertInstantToTimestampUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename java-dates/src/test/java/com/baeldung/datetime/{ConvertInstantToTimestampTest.java => ConvertInstantToTimestampUnitTest.java} (95%) diff --git a/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java b/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java similarity index 95% rename from java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java rename to java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java index bfbd911e95..3ba01a591a 100644 --- a/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampTest.java +++ b/java-dates/src/test/java/com/baeldung/datetime/ConvertInstantToTimestampUnitTest.java @@ -11,7 +11,7 @@ import java.util.TimeZone; import org.junit.Test; -public class ConvertInstantToTimestampTest { +public class ConvertInstantToTimestampUnitTest { @Test public void givenInstant_whenConvertedToTimestamp_thenGetTimestampWithSamePointOnTimeline() { From 530395a44a35abab70d4ca599cc5088ba01a855a Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Sun, 2 Dec 2018 23:45:35 +0530 Subject: [PATCH 6/9] BAEL-2403: Immutable Map implementations in Java --- .../baeldung/java/map/ImmutableMapTest.java | 87 +++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java b/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java new file mode 100644 index 0000000000..d2637d8368 --- /dev/null +++ b/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java @@ -0,0 +1,87 @@ +package com.baeldung.java.map; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import com.google.common.collect.ImmutableMap; + + +public class ImmutableMapTest { + + @Test + public void whenCollectionsUnModifiableMapMethod_thenOriginalCollectionChangesReflectInUnmodifiableMap() { + + Map mutableMap = new HashMap<>(); + mutableMap.put("USA", "North America"); + + Map unmodifiableMap = Collections.unmodifiableMap(mutableMap); + assertThrows(UnsupportedOperationException.class, () -> unmodifiableMap.put("Canada", "North America")); + + mutableMap.remove("USA"); + assertFalse(unmodifiableMap.containsKey("USA")); + + mutableMap.put("Mexico", "North America"); + assertTrue(unmodifiableMap.containsKey("Mexico")); + } + + @Test + @SuppressWarnings("deprecation") + public void whenGuavaImmutableMapFromCopyOfMethod_thenOriginalCollectionChangesDoNotReflectInImmutableMap() { + + Map mutableMap = new HashMap<>(); + mutableMap.put("USA", "North America"); + + ImmutableMap immutableMap = ImmutableMap.copyOf(mutableMap); + assertTrue(immutableMap.containsKey("USA")); + + assertThrows(UnsupportedOperationException.class, () -> immutableMap.put("Canada", "North America")); + + mutableMap.remove("USA"); + assertTrue(immutableMap.containsKey("USA")); + + mutableMap.put("Mexico", "North America"); + assertFalse(immutableMap.containsKey("Mexico")); + } + + @Test + @SuppressWarnings("deprecation") + public void whenGuavaImmutableMapFromBuilderMethod_thenOriginalCollectionChangesDoNotReflectInImmutableMap() { + + Map mutableMap = new HashMap<>(); + mutableMap.put("USA", "North America"); + + ImmutableMap immutableMap = ImmutableMap.builder() + .putAll(mutableMap) + .put("Costa Rica", "North America") + .build(); + assertTrue(immutableMap.containsKey("USA")); + assertTrue(immutableMap.containsKey("Costa Rica")); + + assertThrows(UnsupportedOperationException.class, () -> immutableMap.put("Canada", "North America")); + + mutableMap.remove("USA"); + assertTrue(immutableMap.containsKey("USA")); + + mutableMap.put("Mexico", "North America"); + assertFalse(immutableMap.containsKey("Mexico")); + } + + @Test + @SuppressWarnings("deprecation") + public void whenGuavaImmutableMapFromOfMethod_thenOriginalCollectionChangesDoNotReflectInImmutableMap() { + + ImmutableMap immutableMap = ImmutableMap.of("USA", "North America", "Costa Rica", "North America"); + assertTrue(immutableMap.containsKey("USA")); + assertTrue(immutableMap.containsKey("Costa Rica")); + + assertThrows(UnsupportedOperationException.class, () -> immutableMap.put("Canada", "North America")); + } + +} From 3b30ae74ceb47604688fac7922e5a850e51d5423 Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Mon, 3 Dec 2018 22:53:00 +0530 Subject: [PATCH 7/9] BAEL-2403: Immutable Map implementations in Java - Changed file name --- .../map/{ImmutableMapTest.java => ImmutableMapUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename java-collections-maps/src/test/java/com/baeldung/java/map/{ImmutableMapTest.java => ImmutableMapUnitTest.java} (98%) diff --git a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java b/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java similarity index 98% rename from java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java rename to java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java index d2637d8368..b239ae07d8 100644 --- a/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapTest.java +++ b/java-collections-maps/src/test/java/com/baeldung/java/map/ImmutableMapUnitTest.java @@ -13,7 +13,7 @@ import org.junit.jupiter.api.Test; import com.google.common.collect.ImmutableMap; -public class ImmutableMapTest { +public class ImmutableMapUnitTest { @Test public void whenCollectionsUnModifiableMapMethod_thenOriginalCollectionChangesReflectInUnmodifiableMap() { From 4d6cb52be4642c22cfa57ed52162c695ebe6b2f5 Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Fri, 28 Dec 2018 21:57:38 +0530 Subject: [PATCH 8/9] BAEL-1978: Added a test to demostrate classpath resource with relative path --- .../SpringResourceIntegrationTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java index 38e8304f0f..284776fdfa 100644 --- a/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java +++ b/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java @@ -7,6 +7,8 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.net.URL; +import java.net.URLClassLoader; import java.nio.file.Files; import java.util.stream.Collectors; @@ -23,6 +25,8 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; import org.springframework.util.ResourceUtils; +import com.baeldung.dependson.config.TestConfig; + /** * Test class illustrating various methods of accessing a file from the classpath using Resource. * @author tritty @@ -98,4 +102,19 @@ public class SpringResourceIntegrationTest { final String employees = new String(Files.readAllBytes(resource.toPath())); assertEquals(EMPLOYEES_EXPECTED, employees); } + + @Test + public void whenClassPathResourceWithAbsoultePath_thenReadSuccessful() throws IOException { + final File resource = new ClassPathResource("/data/employees.dat", this.getClass()).getFile(); + final String employees = new String(Files.readAllBytes(resource.toPath())); + assertEquals(EMPLOYEES_EXPECTED, employees); + } + + @Test + public void whenClassPathResourceWithRelativePath_thenReadSuccessful() throws IOException { +// final File resource = new ClassPathResource("../../../data/employees.dat", SpringResourceIntegrationTest.class).getFile(); + final File resource = new ClassPathResource("/data/employees.dat", SpringResourceIntegrationTest.class).getFile(); + final String employees = new String(Files.readAllBytes(resource.toPath())); + assertEquals(EMPLOYEES_EXPECTED, employees); + } } From c3eb5c939fff07533096eabb859096970eb147ad Mon Sep 17 00:00:00 2001 From: Yatendra Goel Date: Fri, 28 Dec 2018 22:00:35 +0530 Subject: [PATCH 9/9] BAEL-1978: Added a test to demostrate classpath resource with relative path --- .../com/baeldung/resource/SpringResourceIntegrationTest.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java b/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java index 284776fdfa..c1464feded 100644 --- a/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java +++ b/spring-core/src/test/java/com/baeldung/resource/SpringResourceIntegrationTest.java @@ -7,8 +7,6 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.URL; -import java.net.URLClassLoader; import java.nio.file.Files; import java.util.stream.Collectors; @@ -25,8 +23,6 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; import org.springframework.util.ResourceUtils; -import com.baeldung.dependson.config.TestConfig; - /** * Test class illustrating various methods of accessing a file from the classpath using Resource. * @author tritty