From 4474ffdc85fac7d17063dd4f648c9b84678d6a09 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sun, 22 Mar 2020 17:48:41 +0000 Subject: [PATCH 001/260] Initial version of the code. --- .../core-java-date-operations-2/README.md | 1 + .../dayofweek/DayOfWeekExtractor.java | 35 +++++++++++++ .../dayofweek/DayOfWeekExtractorUnitTest.java | 52 +++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractor.java create mode 100644 core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractorUnitTest.java diff --git a/core-java-modules/core-java-date-operations-2/README.md b/core-java-modules/core-java-date-operations-2/README.md index 728162ca1a..0f57686fe4 100644 --- a/core-java-modules/core-java-date-operations-2/README.md +++ b/core-java-modules/core-java-date-operations-2/README.md @@ -7,4 +7,5 @@ This module contains articles about date operations in Java. - [Checking If Two Java Dates Are on the Same Day](https://www.baeldung.com/java-check-two-dates-on-same-day) - [Converting Java Date to OffsetDateTime](https://www.baeldung.com/java-convert-date-to-offsetdatetime) - [How to Set the JVM Time Zone](https://www.baeldung.com/java-jvm-time-zone) +- [Extracting the Day of the Week](http://inprogress.baeldung.com/wp-admin/post.php?post=184664&action=edit&classic-editor) - [[<-- Prev]](/core-java-modules/core-java-date-operations-1) diff --git a/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractor.java b/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractor.java new file mode 100644 index 0000000000..b027790e35 --- /dev/null +++ b/core-java-modules/core-java-date-operations-2/src/main/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractor.java @@ -0,0 +1,35 @@ +package com.baeldung.datetime.dayofweek; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.DayOfWeek; +import java.time.LocalDate; +import java.time.format.TextStyle; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + +public class DayOfWeekExtractor { + + public static int getDayNumberOld(Date date) { + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + return cal.get(Calendar.DAY_OF_WEEK); + } + + public static String getDayStringOld(Date date, Locale locale ) { + DateFormat formatter = new SimpleDateFormat("EEEE", locale); + return formatter.format(date); + } + + public static int getDayNumberNew(LocalDate date) { + DayOfWeek day = date.getDayOfWeek(); + return day.getValue(); + } + + public static String getDayStringNew(LocalDate date, Locale locale ) { + DayOfWeek day = date.getDayOfWeek(); + return day.getDisplayName(TextStyle.FULL, locale); + } + +} diff --git a/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractorUnitTest.java b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractorUnitTest.java new file mode 100644 index 0000000000..0dfd50dca2 --- /dev/null +++ b/core-java-modules/core-java-date-operations-2/src/test/java/com/baeldung/datetime/dayofweek/DayOfWeekExtractorUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.datetime.dayofweek; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDate; +import java.util.Calendar; +import java.util.Locale; + +import org.junit.Test; + +public class DayOfWeekExtractorUnitTest { + + private DateFormat oldDateParser = new SimpleDateFormat("yyyy-MM-dd"); + + @Test + public void givenFeb29_2020_thenOldSaturdayNumber() throws ParseException { + assertThat(DayOfWeekExtractor.getDayNumberOld(oldDateParser.parse("2020-02-29")) == Calendar.SATURDAY); + } + + @Test + public void givenFeb29_2020_and_localeUS_thenOldSaturdayText() throws ParseException { + assertThat("Saturday".equals(DayOfWeekExtractor.getDayStringOld(oldDateParser.parse("2020-02-29"), Locale.US)) ); + } + + @Test + public void givenFeb29_2020_and_localeDE_thenOldSaturdayText() throws ParseException { + assertThat("Samstag".equals(DayOfWeekExtractor.getDayStringOld(oldDateParser.parse("2020-02-29"), Locale.GERMANY)) ); + } + + @Test + public void givenFeb29_2020_thenNewSaturdayNumber() throws ParseException { + assertThat(DayOfWeekExtractor.getDayNumberNew(LocalDate.parse("2020-02-29")) == Calendar.SATURDAY); + } + + @Test + public void givenFeb29_2020_and_localeUS_thenNewSaturdayText() throws ParseException { + assertThat("Saturday".equals(DayOfWeekExtractor.getDayStringOld(oldDateParser.parse("2020-02-29"), Locale.US)) ); + } + + @Test + public void givenFeb29_2020_and_localeDE_thenNewSaturdayText() throws ParseException { + assertThat("Samstag".equals(DayOfWeekExtractor.getDayStringOld(oldDateParser.parse("2020-02-29"), Locale.GERMANY)) ); + } + + +} + + + From b5787f39cd9092dd05e93abbef6fe0e3808b318b Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 23 Mar 2020 16:27:23 +0000 Subject: [PATCH 002/260] Addressed PR comment. --- core-java-modules/core-java-date-operations-2/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-modules/core-java-date-operations-2/README.md b/core-java-modules/core-java-date-operations-2/README.md index 0f57686fe4..728162ca1a 100644 --- a/core-java-modules/core-java-date-operations-2/README.md +++ b/core-java-modules/core-java-date-operations-2/README.md @@ -7,5 +7,4 @@ This module contains articles about date operations in Java. - [Checking If Two Java Dates Are on the Same Day](https://www.baeldung.com/java-check-two-dates-on-same-day) - [Converting Java Date to OffsetDateTime](https://www.baeldung.com/java-convert-date-to-offsetdatetime) - [How to Set the JVM Time Zone](https://www.baeldung.com/java-jvm-time-zone) -- [Extracting the Day of the Week](http://inprogress.baeldung.com/wp-admin/post.php?post=184664&action=edit&classic-editor) - [[<-- Prev]](/core-java-modules/core-java-date-operations-1) From 4b669dc6880a9cfb9dce1712ecf6d9637ac73259 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Wed, 8 Jul 2020 04:29:31 +0530 Subject: [PATCH 003/260] Hexagonal architecture in Java --- hexagonal-architecture-java/README.md | 3 ++ hexagonal-architecture-java/pom.xml | 19 ++++++++++++ .../java/com/baeldung/hexagonal/Main.java | 21 ++++++++++++++ .../hexagonal/adapters/FileWriterAdapter.java | 21 ++++++++++++++ .../adapters/InMemorySportsDataAdapter.java | 27 +++++++++++++++++ .../adapters/UserRequestAdapter.java | 21 ++++++++++++++ .../baeldung/hexagonal/core/SportsApp.java | 21 ++++++++++++++ .../hexagonal/model/SportRevenue.java | 29 +++++++++++++++++++ .../hexagonal/ports/FetchSportsRevenue.java | 7 +++++ .../baeldung/hexagonal/ports/UserRequest.java | 5 ++++ .../hexagonal/ports/WriteSportsRevenue.java | 7 +++++ pom.xml | 1 + 12 files changed, 182 insertions(+) create mode 100644 hexagonal-architecture-java/README.md create mode 100644 hexagonal-architecture-java/pom.xml create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java create mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java diff --git a/hexagonal-architecture-java/README.md b/hexagonal-architecture-java/README.md new file mode 100644 index 0000000000..35fe97a6ef --- /dev/null +++ b/hexagonal-architecture-java/README.md @@ -0,0 +1,3 @@ +## Hexagonal Architecture + +This module contains article about Hexagonal Architecture \ No newline at end of file diff --git a/hexagonal-architecture-java/pom.xml b/hexagonal-architecture-java/pom.xml new file mode 100644 index 0000000000..24a198279d --- /dev/null +++ b/hexagonal-architecture-java/pom.xml @@ -0,0 +1,19 @@ + + 4.0.0 + hcom.baeldung + hexagonal-architecture-java + 0.0.1-SNAPSHOT + + src + + + maven-compiler-plugin + 3.8.0 + + 1.8 + 1.8 + + + + + \ No newline at end of file diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java new file mode 100644 index 0000000000..9feb12e37c --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java @@ -0,0 +1,21 @@ +package com.baeldung.hexagonal; + +import com.baeldung.hexagonal.adapters.FileWriterAdapter; +import com.baeldung.hexagonal.adapters.InMemorySportsDataAdapter; +import com.baeldung.hexagonal.adapters.UserRequestAdapter; +import com.baeldung.hexagonal.ports.FetchSportsRevenue; +import com.baeldung.hexagonal.ports.UserRequest; +import com.baeldung.hexagonal.ports.WriteSportsRevenue; + +public class Main { + + public static void main(String[] args) { + FetchSportsRevenue sportsRevenue = new InMemorySportsDataAdapter(); + WriteSportsRevenue writeSportsRevenue = new FileWriterAdapter(); + UserRequest userReq = new UserRequestAdapter(sportsRevenue, writeSportsRevenue); + + userReq.processRequest("Football"); + userReq.processRequest("Cricket"); + } + +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java new file mode 100644 index 0000000000..879cf18bc2 --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java @@ -0,0 +1,21 @@ +package com.baeldung.hexagonal.adapters; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +import com.baeldung.hexagonal.model.SportRevenue; +import com.baeldung.hexagonal.ports.WriteSportsRevenue; + +public class FileWriterAdapter implements WriteSportsRevenue { + + @Override + public void writeSportsReveue(SportRevenue sportRevenue) { + try (FileWriter fw = new FileWriter(new File("revenue.txt"),true)) { + fw.write(sportRevenue.toString()); + fw.write(System.lineSeparator()); + } catch (IOException e) { + + } + } +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java new file mode 100644 index 0000000000..1d0c8c4611 --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java @@ -0,0 +1,27 @@ +package com.baeldung.hexagonal.adapters; + +import java.util.Arrays; +import java.util.List; + +import com.baeldung.hexagonal.model.SportRevenue; +import com.baeldung.hexagonal.ports.FetchSportsRevenue; + +public class InMemorySportsDataAdapter implements FetchSportsRevenue { + + List data; + + public InMemorySportsDataAdapter() { + data = Arrays.asList( + new SportRevenue("Football",2200000), + new SportRevenue("Cricket", 1700000), + new SportRevenue("Baseball",1567000)); + } + + @Override + public SportRevenue retrieveSportRevenue(String sportName) { + return data.stream() + .filter(category -> sportName.equals(category.getName())) + .findAny().orElse(null); + } + +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java new file mode 100644 index 0000000000..0158b52576 --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java @@ -0,0 +1,21 @@ +package com.baeldung.hexagonal.adapters; + +import com.baeldung.hexagonal.core.SportsApp; +import com.baeldung.hexagonal.ports.FetchSportsRevenue; +import com.baeldung.hexagonal.ports.UserRequest; +import com.baeldung.hexagonal.ports.WriteSportsRevenue; + +public class UserRequestAdapter implements UserRequest { + + private SportsApp sportsApp; + + public UserRequestAdapter(FetchSportsRevenue sportsRevenue, WriteSportsRevenue writeSportsRevenue) { + sportsApp = new SportsApp(sportsRevenue, writeSportsRevenue); + } + + @Override + public void processRequest(String sportName) { + sportsApp.fetchAndWrite(sportName); + } + +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java new file mode 100644 index 0000000000..fc7591aee9 --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java @@ -0,0 +1,21 @@ +package com.baeldung.hexagonal.core; + +import com.baeldung.hexagonal.model.SportRevenue; +import com.baeldung.hexagonal.ports.FetchSportsRevenue; +import com.baeldung.hexagonal.ports.WriteSportsRevenue; + +public class SportsApp { + + private FetchSportsRevenue sportsRevenue; + private WriteSportsRevenue writeSportsRevenue; + + public SportsApp(FetchSportsRevenue sportsCategories, WriteSportsRevenue writeSportsRevenue) { + this.sportsRevenue = sportsCategories; + this.writeSportsRevenue = writeSportsRevenue; + } + + public void fetchAndWrite(String sportName) { + SportRevenue sportRevenue = sportsRevenue.retrieveSportRevenue(sportName); + writeSportsRevenue.writeSportsReveue(sportRevenue); + } +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java new file mode 100644 index 0000000000..62a09a738c --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java @@ -0,0 +1,29 @@ +package com.baeldung.hexagonal.model; + +public class SportRevenue { + private String name; + private double revenue; + + public SportRevenue(String name, double revenue) { + this.name = name; + this.revenue = revenue; + } + + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public double getRevenue() { + return revenue; + } + public void setRevenue(double revenue) { + this.revenue = revenue; + } + @Override + public String toString() { + return "SportRevenue [name=" + name + ", revenue=" + revenue + "]"; + } + +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java new file mode 100644 index 0000000000..ede4f2420d --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java @@ -0,0 +1,7 @@ +package com.baeldung.hexagonal.ports; + +import com.baeldung.hexagonal.model.SportRevenue; + +public interface FetchSportsRevenue { + public SportRevenue retrieveSportRevenue(String sportName); +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java new file mode 100644 index 0000000000..1ff7d4d1c6 --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java @@ -0,0 +1,5 @@ +package com.baeldung.hexagonal.ports; + +public interface UserRequest { + public void processRequest(String sportName); +} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java new file mode 100644 index 0000000000..2aa48d6a92 --- /dev/null +++ b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java @@ -0,0 +1,7 @@ +package com.baeldung.hexagonal.ports; + +import com.baeldung.hexagonal.model.SportRevenue; + +public interface WriteSportsRevenue { + public void writeSportsReveue(SportRevenue sportRevenue); +} diff --git a/pom.xml b/pom.xml index 1db715147a..44dd9f2467 100644 --- a/pom.xml +++ b/pom.xml @@ -558,6 +558,7 @@ rxjava-operators atomikos + hexagonal-architecture-java From fa8bf5168601750a0bf85a7e9d46399f7d98d346 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Tue, 21 Jul 2020 20:23:44 +0530 Subject: [PATCH 004/260] BAEL-4403 --- .../com/baeldung/consoleout/ConsoleAndOut.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java diff --git a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java new file mode 100644 index 0000000000..99f185d539 --- /dev/null +++ b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java @@ -0,0 +1,15 @@ +package com.baeldung.consoleout; + +import java.io.Console; + +public class ConsoleAndOut { + public static void main(String[] args) { + Console console = System.console(); + System.out.println(console); + + if (console != null) { + char[] password = console.readPassword("Enter password:"); + console.printf(String.valueOf(password)); + } + } +} From 8c8d2f302940ec607f20db9ea4a1e625d4a455b1 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Tue, 21 Jul 2020 21:10:32 +0530 Subject: [PATCH 005/260] Revert "Hexagonal architecture in Java" This reverts commit 4b669dc6880a9cfb9dce1712ecf6d9637ac73259. --- hexagonal-architecture-java/README.md | 3 -- hexagonal-architecture-java/pom.xml | 19 ------------ .../java/com/baeldung/hexagonal/Main.java | 21 -------------- .../hexagonal/adapters/FileWriterAdapter.java | 21 -------------- .../adapters/InMemorySportsDataAdapter.java | 27 ----------------- .../adapters/UserRequestAdapter.java | 21 -------------- .../baeldung/hexagonal/core/SportsApp.java | 21 -------------- .../hexagonal/model/SportRevenue.java | 29 ------------------- .../hexagonal/ports/FetchSportsRevenue.java | 7 ----- .../baeldung/hexagonal/ports/UserRequest.java | 5 ---- .../hexagonal/ports/WriteSportsRevenue.java | 7 ----- pom.xml | 1 - 12 files changed, 182 deletions(-) delete mode 100644 hexagonal-architecture-java/README.md delete mode 100644 hexagonal-architecture-java/pom.xml delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java delete mode 100644 hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java diff --git a/hexagonal-architecture-java/README.md b/hexagonal-architecture-java/README.md deleted file mode 100644 index 35fe97a6ef..0000000000 --- a/hexagonal-architecture-java/README.md +++ /dev/null @@ -1,3 +0,0 @@ -## Hexagonal Architecture - -This module contains article about Hexagonal Architecture \ No newline at end of file diff --git a/hexagonal-architecture-java/pom.xml b/hexagonal-architecture-java/pom.xml deleted file mode 100644 index 24a198279d..0000000000 --- a/hexagonal-architecture-java/pom.xml +++ /dev/null @@ -1,19 +0,0 @@ - - 4.0.0 - hcom.baeldung - hexagonal-architecture-java - 0.0.1-SNAPSHOT - - src - - - maven-compiler-plugin - 3.8.0 - - 1.8 - 1.8 - - - - - \ No newline at end of file diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java deleted file mode 100644 index 9feb12e37c..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/Main.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.hexagonal; - -import com.baeldung.hexagonal.adapters.FileWriterAdapter; -import com.baeldung.hexagonal.adapters.InMemorySportsDataAdapter; -import com.baeldung.hexagonal.adapters.UserRequestAdapter; -import com.baeldung.hexagonal.ports.FetchSportsRevenue; -import com.baeldung.hexagonal.ports.UserRequest; -import com.baeldung.hexagonal.ports.WriteSportsRevenue; - -public class Main { - - public static void main(String[] args) { - FetchSportsRevenue sportsRevenue = new InMemorySportsDataAdapter(); - WriteSportsRevenue writeSportsRevenue = new FileWriterAdapter(); - UserRequest userReq = new UserRequestAdapter(sportsRevenue, writeSportsRevenue); - - userReq.processRequest("Football"); - userReq.processRequest("Cricket"); - } - -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java deleted file mode 100644 index 879cf18bc2..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/FileWriterAdapter.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.hexagonal.adapters; - -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; - -import com.baeldung.hexagonal.model.SportRevenue; -import com.baeldung.hexagonal.ports.WriteSportsRevenue; - -public class FileWriterAdapter implements WriteSportsRevenue { - - @Override - public void writeSportsReveue(SportRevenue sportRevenue) { - try (FileWriter fw = new FileWriter(new File("revenue.txt"),true)) { - fw.write(sportRevenue.toString()); - fw.write(System.lineSeparator()); - } catch (IOException e) { - - } - } -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java deleted file mode 100644 index 1d0c8c4611..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/InMemorySportsDataAdapter.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.hexagonal.adapters; - -import java.util.Arrays; -import java.util.List; - -import com.baeldung.hexagonal.model.SportRevenue; -import com.baeldung.hexagonal.ports.FetchSportsRevenue; - -public class InMemorySportsDataAdapter implements FetchSportsRevenue { - - List data; - - public InMemorySportsDataAdapter() { - data = Arrays.asList( - new SportRevenue("Football",2200000), - new SportRevenue("Cricket", 1700000), - new SportRevenue("Baseball",1567000)); - } - - @Override - public SportRevenue retrieveSportRevenue(String sportName) { - return data.stream() - .filter(category -> sportName.equals(category.getName())) - .findAny().orElse(null); - } - -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java deleted file mode 100644 index 0158b52576..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/adapters/UserRequestAdapter.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.hexagonal.adapters; - -import com.baeldung.hexagonal.core.SportsApp; -import com.baeldung.hexagonal.ports.FetchSportsRevenue; -import com.baeldung.hexagonal.ports.UserRequest; -import com.baeldung.hexagonal.ports.WriteSportsRevenue; - -public class UserRequestAdapter implements UserRequest { - - private SportsApp sportsApp; - - public UserRequestAdapter(FetchSportsRevenue sportsRevenue, WriteSportsRevenue writeSportsRevenue) { - sportsApp = new SportsApp(sportsRevenue, writeSportsRevenue); - } - - @Override - public void processRequest(String sportName) { - sportsApp.fetchAndWrite(sportName); - } - -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java deleted file mode 100644 index fc7591aee9..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/core/SportsApp.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.hexagonal.core; - -import com.baeldung.hexagonal.model.SportRevenue; -import com.baeldung.hexagonal.ports.FetchSportsRevenue; -import com.baeldung.hexagonal.ports.WriteSportsRevenue; - -public class SportsApp { - - private FetchSportsRevenue sportsRevenue; - private WriteSportsRevenue writeSportsRevenue; - - public SportsApp(FetchSportsRevenue sportsCategories, WriteSportsRevenue writeSportsRevenue) { - this.sportsRevenue = sportsCategories; - this.writeSportsRevenue = writeSportsRevenue; - } - - public void fetchAndWrite(String sportName) { - SportRevenue sportRevenue = sportsRevenue.retrieveSportRevenue(sportName); - writeSportsRevenue.writeSportsReveue(sportRevenue); - } -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java deleted file mode 100644 index 62a09a738c..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/model/SportRevenue.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.hexagonal.model; - -public class SportRevenue { - private String name; - private double revenue; - - public SportRevenue(String name, double revenue) { - this.name = name; - this.revenue = revenue; - } - - public String getName() { - return name; - } - public void setName(String name) { - this.name = name; - } - public double getRevenue() { - return revenue; - } - public void setRevenue(double revenue) { - this.revenue = revenue; - } - @Override - public String toString() { - return "SportRevenue [name=" + name + ", revenue=" + revenue + "]"; - } - -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java deleted file mode 100644 index ede4f2420d..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/FetchSportsRevenue.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.hexagonal.ports; - -import com.baeldung.hexagonal.model.SportRevenue; - -public interface FetchSportsRevenue { - public SportRevenue retrieveSportRevenue(String sportName); -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java deleted file mode 100644 index 1ff7d4d1c6..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/UserRequest.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.baeldung.hexagonal.ports; - -public interface UserRequest { - public void processRequest(String sportName); -} diff --git a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java b/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java deleted file mode 100644 index 2aa48d6a92..0000000000 --- a/hexagonal-architecture-java/src/main/java/com/baeldung/hexagonal/ports/WriteSportsRevenue.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.hexagonal.ports; - -import com.baeldung.hexagonal.model.SportRevenue; - -public interface WriteSportsRevenue { - public void writeSportsReveue(SportRevenue sportRevenue); -} diff --git a/pom.xml b/pom.xml index 44dd9f2467..1db715147a 100644 --- a/pom.xml +++ b/pom.xml @@ -558,7 +558,6 @@ rxjava-operators atomikos - hexagonal-architecture-java From ae284db5ddcc3d8157fa57d5f32df7f3007c5139 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Thu, 23 Jul 2020 00:58:40 +0530 Subject: [PATCH 006/260] Updated code to use only Console --- .../main/java/com/baeldung/consoleout/ConsoleAndOut.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java index 99f185d539..5a327dbe62 100644 --- a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java +++ b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java @@ -5,11 +5,9 @@ import java.io.Console; public class ConsoleAndOut { public static void main(String[] args) { Console console = System.console(); - System.out.println(console); + console.writer().print(console); - if (console != null) { - char[] password = console.readPassword("Enter password:"); - console.printf(String.valueOf(password)); - } + char[] password = console.readPassword("Enter password:"); + console.printf(String.valueOf(password)); } } From a6929d1cab9680b528c647cc5988d4cf07040923 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sat, 25 Jul 2020 01:15:42 +0530 Subject: [PATCH 007/260] Added System.out --- .../src/main/java/com/baeldung/consoleout/ConsoleAndOut.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java index 5a327dbe62..70711cacec 100644 --- a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java +++ b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java @@ -9,5 +9,7 @@ public class ConsoleAndOut { char[] password = console.readPassword("Enter password:"); console.printf(String.valueOf(password)); + + System.out.println(System.out); } } From e9e98ecc8e41fe02a68771448464ca982c81659e Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sun, 26 Jul 2020 02:21:02 +0530 Subject: [PATCH 008/260] Created seaprate method for each functionality --- .../baeldung/consoleout/ConsoleAndOut.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java index 70711cacec..082a5219c9 100644 --- a/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java +++ b/core-java-modules/core-java-console/src/main/java/com/baeldung/consoleout/ConsoleAndOut.java @@ -4,12 +4,28 @@ import java.io.Console; public class ConsoleAndOut { public static void main(String[] args) { + try { + printConsoleObject(); + readPasswordFromConsole(); + } catch (Exception ex) { + // Eating NullPointerExcpetion which will occur when this + // program will be run from mediums other than console + } + printSysOut(); + } + + static void printConsoleObject() { Console console = System.console(); console.writer().print(console); - - char[] password = console.readPassword("Enter password:"); + } + + static void readPasswordFromConsole() { + Console console = System.console(); + char[] password = console.readPassword("Enter password: "); console.printf(String.valueOf(password)); - + } + + static void printSysOut() { System.out.println(System.out); } } From efd17051367c4b37f19fc6acfabfc7de583136a0 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sun, 26 Jul 2020 02:46:59 +0530 Subject: [PATCH 009/260] Added Unit Test Case for ConsoleAndOut class --- .../consoleout/ConsoleAndOutUnitTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java diff --git a/core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java b/core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java new file mode 100644 index 0000000000..619a65a1fc --- /dev/null +++ b/core-java-modules/core-java-console/src/test/java/com/baeldung/consoleout/ConsoleAndOutUnitTest.java @@ -0,0 +1,27 @@ +package com.baeldung.consoleout; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + +class ConsoleAndOutUnitTest { + + @Test + void whenRetreivingConsole_thenPrintConsoleObject() { + assertThrows(NullPointerException.class, () -> { + ConsoleAndOut.printConsoleObject(); + }); + } + + @Test + void whenReadingPassword_thenReadPassword() { + assertThrows(NullPointerException.class, () -> { + ConsoleAndOut.readPasswordFromConsole(); + }); + } + + @Test + void whenRetrievingSysOut_thenPrintSysOutObject() { + ConsoleAndOut.printSysOut(); + } +} From 3718d15004400f35fa2d8802e2c9510b2eb5e5f4 Mon Sep 17 00:00:00 2001 From: Tobias Weimer Date: Sat, 25 Jul 2020 23:24:14 +0200 Subject: [PATCH 010/260] Update SHACommonUtils.java Replace StringBuffer with StringBuilder and add initial capacity. StringBuilder is faster because it is not synchronized. --- .../src/main/java/com/baeldung/hashing/SHACommonUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/hashing/SHACommonUtils.java b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/hashing/SHACommonUtils.java index 0f28408083..699e9141a4 100644 --- a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/hashing/SHACommonUtils.java +++ b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/hashing/SHACommonUtils.java @@ -3,7 +3,7 @@ package com.baeldung.hashing; class SHACommonUtils { public static String bytesToHex(byte[] hash) { - StringBuffer hexString = new StringBuffer(); + StringBuilder hexString = new StringBuilder(2 * hash.length); for (byte h : hash) { String hex = Integer.toHexString(0xff & h); if (hex.length() == 1) From 8febb192a323c2832db3694a58a892221b9cf478 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sat, 22 Aug 2020 23:27:21 +0530 Subject: [PATCH 011/260] BAEL-4404 | Added code to use CharacterEncodingFilter --- .../charencoding/CharacterEncodingDemo.java | 27 +++++++++++++++++++ .../CharEncodingCheckController.java | 13 +++++++++ 2 files changed, 40 insertions(+) create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java new file mode 100644 index 0000000000..453bad5633 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java @@ -0,0 +1,27 @@ +package com.baeldung.charencoding; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.web.filter.CharacterEncodingFilter; + +@SpringBootApplication +public class CharacterEncodingDemo { + + public static void main(String[] args) { + SpringApplication.run(CharacterEncodingDemo.class, args); + } + + @Bean + public FilterRegistrationBean filterRegistrationBean() { + CharacterEncodingFilter filter = new CharacterEncodingFilter(); + filter.setEncoding("UTF-8"); + filter.setForceEncoding(true); + + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns("/*"); + return registrationBean; + } +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java new file mode 100644 index 0000000000..3257ca1f36 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java @@ -0,0 +1,13 @@ +package com.baeldung.charencoding.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class CharEncodingCheckController { + + @GetMapping("/ping") + public String ping() { + return "path"; + } +} From e92ecf211a0cc3f0a83cb207e7d6667efe450cd7 Mon Sep 17 00:00:00 2001 From: Usman Mohyuddin Date: Sat, 29 Aug 2020 22:31:40 +0500 Subject: [PATCH 012/260] Remove prefix from string using groovy (BAEL-4104) Remove prefix from string using groovy (BAEL-4104) --- core-groovy-strings/README.md | 8 +++ core-groovy-strings/pom.xml | 72 +++++++++++++++++++ .../removeprefix/RemovePrefixTest.groovy | 58 +++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 core-groovy-strings/README.md create mode 100644 core-groovy-strings/pom.xml create mode 100644 core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy diff --git a/core-groovy-strings/README.md b/core-groovy-strings/README.md new file mode 100644 index 0000000000..e3202e2dd0 --- /dev/null +++ b/core-groovy-strings/README.md @@ -0,0 +1,8 @@ +# Core Groovy Strings + +This module contains articles about core Groovy strings concepts + +## Relevant articles: + +- [Remove prefix in Groovy]() +- [[<-- Prev]](/core-groovy-strings) diff --git a/core-groovy-strings/pom.xml b/core-groovy-strings/pom.xml new file mode 100644 index 0000000000..059b53662c --- /dev/null +++ b/core-groovy-strings/pom.xml @@ -0,0 +1,72 @@ + + + com.baeldung + 4.0.0 + core-groovy-strings + 1.0-SNAPSHOT + core-groovy-strings + jar + + + + org.codehaus.groovy + groovy-all + ${groovy.version} + pom + + + org.junit.platform + junit-platform-runner + ${junit.platform.version} + test + + + + + src/main/groovy + src/main/java + + + org.codehaus.groovy + groovy-eclipse-compiler + ${groovy.compiler.version} + true + + + maven-compiler-plugin + ${compiler.plugin.version} + + groovy-eclipse-compiler + ${java.version} + ${java.version} + + + + org.codehaus.groovy + groovy-eclipse-compiler + ${groovy.compiler.version} + + + org.codehaus.groovy + groovy-eclipse-batch + ${groovy.version}-01 + + + + + + + + 1.0.0 + 1.1.3 + 2.5.7 + 2.20.1 + 3.8.0 + 3.3.0-01 + 1.8 + + + \ No newline at end of file diff --git a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy new file mode 100644 index 0000000000..568e5fdde8 --- /dev/null +++ b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy @@ -0,0 +1,58 @@ +package com.baeldung.removeprefix + +import org.junit.Assert +import org.junit.Test + +class RemovePrefixTest { + + + @Test + public void givenWhenCasePrefixIsRemoved_thenReturnTrue() { + def trimPrefix = { + it.startsWith('Groovy') ? it.minus('Groovy') : it + } + + Assert.assertEquals(trimPrefix("GroovyTutorials at Baeldung"), "Tutorials at Baeldung") + } + + @Test + public void givenWhenPrefixIsRemoved_thenReturnTrue() { + + String prefix = "groovy-" + String trimPrefix = "Groovy-Tutorials at Baeldung" + def result; + if(trimPrefix.startsWithIgnoreCase(prefix)) { + result = trimPrefix.substring(prefix.length()) + } + + Assert.assertEquals("Tutorials at Baeldung", result) + } + + @Test + public void givenWhenPrefixIsRemovedUsingRegex_thenReturnTrue() { + + def regex = ~"^([Gg])roovy-" + String trimPrefix = "Groovy-Tutorials at Baeldung" + String result = trimPrefix - regex + + Assert.assertEquals("Tutorials at Baeldung", result) + } + + @Test public void givenWhenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { + def regex = ~"^groovy" + String trimPrefix = "groovyTutorials at Baeldung's groovy page" + String result = trimPrefix.replaceFirst(regex, "") + + Assert.assertEquals("Tutorials at Baeldung's groovy page", result) + } + + @Test + public void givenWhenPrefixIsRemovedUsingReplaceAll_thenReturnTrue() { + + String trimPrefix = "groovyTutorials at Baeldung groovy" + String result = trimPrefix.replaceAll(/^groovy/, "") + + Assert.assertEquals("Tutorials at Baeldung groovy", result) + } + +} From a7dc3199ad223524a76a56a000fbfb9dacf9967f Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sat, 5 Sep 2020 18:46:57 +0100 Subject: [PATCH 013/260] BAEL-3326, "Optimizing JSON Schema for production use": Added domain classes and JUnit tests. --- json/pom.xml | 5 + .../baeldung/jsonoptimization/Customer.java | 123 ++ .../CustomerDeserializer.java | 44 + .../jsonoptimization/CustomerNoNull.java | 36 + .../jsonoptimization/CustomerSerializer.java | 34 + .../jsonoptimization/CustomerShortNames.java | 138 +++ .../CustomerShortNamesNoNull.java | 38 + .../jsonoptimization/CustomerSlim.java | 74 ++ .../JsonOptimizationUnitTest.java | 145 +++ .../json_optimization_mock_data.json | 1000 +++++++++++++++++ 10 files changed, 1637 insertions(+) create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/Customer.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java create mode 100644 json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java create mode 100644 json/src/test/resources/json_optimization_mock_data.json diff --git a/json/pom.xml b/json/pom.xml index bd901b526e..99fcfed362 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -45,6 +45,11 @@ jackson-databind ${jackson.version} + + com.fasterxml.jackson.core + jackson-annotations + ${jackson.version} + javax.json.bind javax.json.bind-api diff --git a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java new file mode 100644 index 0000000000..81a74971ea --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java @@ -0,0 +1,123 @@ +package com.baeldung.jsonoptimization; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class Customer { + + private long id; + private String firstName; + private String lastName; + private String street; + private String postalCode; + private String city; + private String state; + private String phoneNumber; + private String email; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + 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 String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public int hashCode() { + return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof Customer)) { + return false; + } + Customer other = (Customer) obj; + return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) + && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); + } + + @Override + public String toString() { + return "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + "]"; + } + + public static Customer[] fromMockFile() throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); + Customer[] feedback = objectMapper.readValue(jsonFile, Customer[].class); + return feedback; + } +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java new file mode 100644 index 0000000000..1f478ed446 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java @@ -0,0 +1,44 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class CustomerDeserializer extends StdDeserializer { + private static final long serialVersionUID = 1L; + + public CustomerDeserializer() { + this(null); + } + + public CustomerDeserializer(Class t) { + super(t); + } + + @Override + public Customer deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { + Customer feedback = new Customer(); + ObjectCodec codec = parser.getCodec(); + JsonNode node = codec.readTree(parser); + + feedback.setId(node.get(0).asLong()); + feedback.setFirstName(node.get(1).asText()); + feedback.setLastName(node.get(2).asText()); + feedback.setStreet(node.get(3).asText()); + feedback.setPostalCode(node.get(4).asText()); + feedback.setCity(node.get(5).asText()); + feedback.setState(node.get(6).asText()); + JsonNode phoneNumber = node.get(7); + feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); + JsonNode email = node.get(8); + feedback.setEmail(email.isNull() ? null : email.asText()); + return feedback; + } +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java new file mode 100644 index 0000000000..1ee76f762a --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java @@ -0,0 +1,36 @@ +package com.baeldung.jsonoptimization; + +import com.fasterxml.jackson.annotation.JsonInclude; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CustomerNoNull extends Customer { + + @Override + public String toString() { + return "CustomerNoNull [toString()=" + super.toString() + "]"; + } + + public static CustomerNoNull[] fromCustomers(Customer[] customers) { + CustomerNoNull[] feedback = new CustomerNoNull[customers.length]; + + for(int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerNoNull newOne = new CustomerNoNull(); + + newOne.setId(aCustomer.getId()); + newOne.setFirstName(aCustomer.getFirstName()); + newOne.setLastName(aCustomer.getLastName()); + newOne.setStreet(aCustomer.getStreet()); + newOne.setCity(aCustomer.getCity()); + newOne.setPostalCode(aCustomer.getPostalCode()); + newOne.setState(aCustomer.getState()); + newOne.setPhoneNumber(aCustomer.getPhoneNumber()); + newOne.setEmail(aCustomer.getEmail()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java new file mode 100644 index 0000000000..7e58010640 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java @@ -0,0 +1,34 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class CustomerSerializer extends StdSerializer { + private static final long serialVersionUID = 1L; + + public CustomerSerializer() { + this(null); + } + + public CustomerSerializer(Class t) { + super(t); + } + + @Override + public void serialize(Customer customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { + jsonGenerator.writeStartArray(); + jsonGenerator.writeNumber(customer.getId()); + jsonGenerator.writeString(customer.getFirstName()); + jsonGenerator.writeString(customer.getLastName()); + jsonGenerator.writeString(customer.getStreet()); + jsonGenerator.writeString(customer.getPostalCode()); + jsonGenerator.writeString(customer.getCity()); + jsonGenerator.writeString(customer.getState()); + jsonGenerator.writeString(customer.getPhoneNumber()); + jsonGenerator.writeString(customer.getEmail()); + jsonGenerator.writeEndArray(); + } +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java new file mode 100644 index 0000000000..ffa10f786d --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java @@ -0,0 +1,138 @@ +package com.baeldung.jsonoptimization; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonGetter; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CustomerShortNames { + + private long id; + + @JsonProperty("f") + private String firstName; + + @JsonProperty("l") + private String lastName; + + @JsonProperty("s") + private String street; + + @JsonProperty("p") + private String postalCode; + + @JsonProperty("c") + private String city; + + @JsonProperty("a") + private String state; + + @JsonProperty("o") + private String phoneNumber; + + @JsonProperty("e") + private String email; + + public long getId() { + return id; + } + public void setId(long id) { + this.id = id; + } + 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 String getStreet() { + return street; + } + public void setStreet(String street) { + this.street = street; + } + public String getPostalCode() { + return postalCode; + } + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + public String getCity() { + return city; + } + public void setCity(String city) { + this.city = city; + } + public String getState() { + return state; + } + public void setState(String state) { + this.state = state; + } + public String getPhoneNumber() { + return phoneNumber; + } + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + + @Override + public int hashCode() { + return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); + } + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CustomerShortNames)) { + return false; + } + CustomerShortNames other = (CustomerShortNames) obj; + return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) + && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); + } + + @Override + public String toString() { + return "CustomerWithShorterAttributes [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + + "]"; + } + + public static CustomerShortNames[] fromCustomers(Customer[] customers) { + CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; + + for(int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerShortNames newOne = new CustomerShortNames(); + + newOne.setId(aCustomer.getId()); + newOne.setFirstName(aCustomer.getFirstName()); + newOne.setLastName(aCustomer.getLastName()); + newOne.setStreet(aCustomer.getStreet()); + newOne.setCity(aCustomer.getCity()); + newOne.setPostalCode(aCustomer.getPostalCode()); + newOne.setState(aCustomer.getState()); + newOne.setPhoneNumber(aCustomer.getPhoneNumber()); + newOne.setEmail(aCustomer.getEmail()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java new file mode 100644 index 0000000000..d3e9648a98 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java @@ -0,0 +1,38 @@ +package com.baeldung.jsonoptimization; + +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; + +@JsonInclude(JsonInclude.Include.NON_NULL) +public class CustomerShortNamesNoNull extends CustomerShortNames { + + + @Override + public String toString() { + return "CustomerShortNamesNoNull [toString()=" + super.toString() + "]"; + } + + public static CustomerShortNamesNoNull[] fromCustomers(Customer[] customers) { + CustomerShortNamesNoNull[] feedback = new CustomerShortNamesNoNull[customers.length]; + + for(int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerShortNamesNoNull newOne = new CustomerShortNamesNoNull(); + + newOne.setId(aCustomer.getId()); + newOne.setFirstName(aCustomer.getFirstName()); + newOne.setLastName(aCustomer.getLastName()); + newOne.setStreet(aCustomer.getStreet()); + newOne.setCity(aCustomer.getCity()); + newOne.setPostalCode(aCustomer.getPostalCode()); + newOne.setState(aCustomer.getState()); + newOne.setPhoneNumber(aCustomer.getPhoneNumber()); + newOne.setEmail(aCustomer.getEmail()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java new file mode 100644 index 0000000000..cdfaa4e329 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java @@ -0,0 +1,74 @@ +package com.baeldung.jsonoptimization; + +import java.util.Objects; + +public class CustomerSlim { + private long id; + private String name; + private String address; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public int hashCode() { + return Objects.hash(address, id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CustomerSlim)) { + return false; + } + CustomerSlim other = (CustomerSlim) obj; + return Objects.equals(address, other.address) && id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return "CustomerSlim [id=" + id + ", name=" + name + ", address=" + address + "]"; + } + + public static CustomerSlim[] fromCustomers(Customer[] customers) { + CustomerSlim[] feedback = new CustomerSlim[customers.length]; + + for(int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerSlim newOne = new CustomerSlim(); + + newOne.setId(aCustomer.getId()); + newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); + newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); + + feedback[i] = newOne; + } + + return feedback; + } + + +} diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java new file mode 100644 index 0000000000..e754978cd5 --- /dev/null +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -0,0 +1,145 @@ +package com.baeldung.jsonoptimization; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.DecimalFormat; +import java.util.zip.GZIPOutputStream; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.Version; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.module.SimpleModule; + +class JsonOptimizationUnitTest { + private static final String TEST_LABEL_DEFAULT_JSON = "Default JSON"; + private static final String TEST_LABEL_DEFAULT_JSON_NO_NULL = "Default JSON without null"; + private static final String TEST_LABEL_SHORTER_ATTRIBUTE_NAMES = "Shorter Attribute Names"; + private static final String TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL = "Shorter Attribute Names without null"; + private static final String TEST_LABEL_CUSTOM_SERIALIZER = "Custom Serializer"; + private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; + private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###,###"); + private static Customer[] customers; + private ObjectMapper mapper; + + @BeforeAll + static void setUpOnce() throws Exception { + customers = Customer.fromMockFile(); + } + + @BeforeEach + void setUp() { + mapper = new ObjectMapper(); + } + + @Test + void testSetUp() { + assertEquals(1000, customers.length, "There should be a 1000 customers"); + } + + @Test + void testDefaultJson() throws IOException { + printBanner(TEST_LABEL_DEFAULT_JSON); + byte[] plainJson = createPlainJson(TEST_LABEL_DEFAULT_JSON, customers); + compressJson(TEST_LABEL_DEFAULT_JSON, plainJson); + } + + @Test + void testDefaultNoNull() throws IOException { + printBanner(TEST_LABEL_DEFAULT_JSON_NO_NULL); + CustomerNoNull[] defaultNoNull = CustomerNoNull.fromCustomers(customers); + byte[] plainJson = createPlainJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, defaultNoNull); + compressJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, plainJson); + } + + @Test + void testShorterAttributes() throws IOException { + printBanner(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES); + CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); + byte[] shorterJson = createPlainJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES, shorterOnes); + compressJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES, shorterJson); + } + + @Test + void testShorterAttributesNoNull() throws IOException { + printBanner(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL); + CustomerShortNamesNoNull[] shorterOnesNoNull = CustomerShortNamesNoNull.fromCustomers(customers); + byte[] shorterJson = createPlainJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL, shorterOnesNoNull); + compressJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL, shorterJson); + } + + @Test + void testSlim() throws IOException { + printBanner(TEST_LABEL_SLIM_CUSTOMER); + CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); + byte[] slimJson = createPlainJson(TEST_LABEL_SLIM_CUSTOMER, slimOnes); + compressJson(TEST_LABEL_SLIM_CUSTOMER, slimJson); + } + + @Test + void testCustomSerializer() throws IOException { + printBanner(TEST_LABEL_CUSTOM_SERIALIZER); + + SimpleModule serializer = new SimpleModule("CustomCustomerSerializer", new Version(1, 0, 0, null, null, null)); + serializer.addSerializer(Customer.class, new CustomerSerializer()); + mapper.registerModule(serializer); + + SimpleModule deserializer = new SimpleModule("CustomCustomerDeserializer", new Version(1, 0, 0, null, null, null)); + deserializer.addDeserializer(Customer.class, new CustomerDeserializer()); + mapper.registerModule(deserializer); + + byte[] plainJson = createPlainJson(TEST_LABEL_CUSTOM_SERIALIZER, customers); + compressJson(TEST_LABEL_CUSTOM_SERIALIZER, plainJson); + } + + private void printBanner(String name) { + System.out.println(); + System.out.println("************************************************"); + System.out.println("Testing " + name); + System.out.println(); + } + + void compressJson(String label, byte[] plainJson) throws IOException { + ByteArrayOutputStream outpuStream = new ByteArrayOutputStream(); + GZIPOutputStream gzipStream = new GZIPOutputStream(outpuStream); + gzipStream.write(plainJson); + gzipStream.close(); + byte[] gzippedJson = outpuStream.toByteArray(); + System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(gzippedJson.length)); + assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); + } + + private byte[] createPlainJson(String label, Object[] customers) throws IOException { + System.out.println(label + " sample: "); + ObjectWriter prettyWritter = mapper.writerWithDefaultPrettyPrinter(); + System.out.println(prettyWritter.writeValueAsString(customers[0])); + + byte[] feedback = mapper.writeValueAsBytes(customers); + System.out.println(label + " length: " + LENGTH_FORMATTER.format(feedback.length)); + assertTrue(feedback.length > 1, label + " should be there"); + + String prefix = label.replaceAll(" ", "-") + .toLowerCase(); + File tempFile = File.createTempFile("jon-optimization-" + prefix, ".json"); + FileOutputStream fos = new FileOutputStream(tempFile); + fos.write(feedback); + fos.close(); + System.out.println(label + " file: " + tempFile.toString()); + + Object[] restoredOnes = mapper.readValue(feedback, customers.getClass()); + assertArrayEquals(TEST_LABEL_DEFAULT_JSON + ": restoring from JSON should work", customers, restoredOnes); + + return feedback; + } + +} diff --git a/json/src/test/resources/json_optimization_mock_data.json b/json/src/test/resources/json_optimization_mock_data.json new file mode 100644 index 0000000000..e09517cf61 --- /dev/null +++ b/json/src/test/resources/json_optimization_mock_data.json @@ -0,0 +1,1000 @@ +[{"id":1,"firstName":"Horatius","lastName":"Strognell","street":"4848 New Castle Point","postalCode":"33432","city":"Boca Raton","state":"FL","phoneNumber":"561-824-9105","email":"hstrognell0@dailymail.co.uk"}, +{"id":2,"firstName":"Kerri","lastName":"Arend","street":"4 Welch Pass","postalCode":"60669","city":"Chicago","state":"IL","phoneNumber":"312-303-5993"}, +{"id":3,"firstName":"Silvano","lastName":"Bartholomaus","street":"2491 Arkansas Center","postalCode":"30195","city":"Duluth","state":"GA","email":"sbartholomaus2@prlog.org"}, +{"id":4,"firstName":"Venita","lastName":"Burgoine","street":"63894 Sage Park","postalCode":"67215","city":"Wichita","state":"KS","email":"vburgoine3@telegraph.co.uk"}, +{"id":5,"firstName":"Meghan","lastName":"Westover","street":"76 Pleasure Way","postalCode":"77388","city":"Spring","state":"TX","phoneNumber":"832-926-0689","email":"mwestover4@cnn.com"}, +{"id":6,"firstName":"Mia","lastName":"Baversor","street":"50 Sommers Road","postalCode":"43204","city":"Columbus","state":"OH","email":"mbaversor5@wsj.com"}, +{"id":7,"firstName":"Winna","lastName":"Buggy","street":"05 Jenna Street","postalCode":"68144","city":"Omaha","state":"NE","phoneNumber":"402-740-7818"}, +{"id":8,"firstName":"Antonin","lastName":"Autrie","street":"9 Fieldstone Terrace","postalCode":"85754","city":"Tucson","state":"AZ"}, +{"id":9,"firstName":"Maddi","lastName":"Ollerearnshaw","street":"061 Crowley Trail","postalCode":"48335","city":"Farmington","state":"MI","phoneNumber":"248-709-8128"}, +{"id":10,"firstName":"Fawnia","lastName":"Cristofaro","street":"92571 Kinsman Alley","postalCode":"77271","city":"Houston","state":"TX","email":"fcristofaro9@ox.ac.uk"}, +{"id":11,"firstName":"Zachariah","lastName":"Rouby","street":"2439 Hudson Circle","postalCode":"25313","city":"Charleston","state":"WV","phoneNumber":"304-587-5444"}, +{"id":12,"firstName":"Brier","lastName":"Benech","street":"3144 Sutteridge Place","postalCode":"20380","city":"Washington","state":"DC","phoneNumber":"202-740-8851","email":"bbenechb@zdnet.com"}, +{"id":13,"firstName":"Merry","lastName":"Leming","street":"419 Kropf Terrace","postalCode":"45440","city":"Dayton","state":"OH","email":"mlemingc@ow.ly"}, +{"id":14,"firstName":"Audrey","lastName":"Dilleston","street":"61 Melrose Trail","postalCode":"97306","city":"Salem","state":"OR","phoneNumber":"503-480-6254"}, +{"id":15,"firstName":"De witt","lastName":"Kedge","street":"819 Kingsford Point","postalCode":"84135","city":"Salt Lake City","state":"UT"}, +{"id":16,"firstName":"Charita","lastName":"de Clerc","street":"42 Loftsgordon Hill","postalCode":"28289","city":"Charlotte","state":"NC","phoneNumber":"704-532-8850","email":"cdeclercf@comsenz.com"}, +{"id":17,"firstName":"Edgard","lastName":"Bloore","street":"1659 Donald Trail","postalCode":"20051","city":"Washington","state":"DC"}, +{"id":18,"firstName":"Kristi","lastName":"Richichi","street":"11306 Longview Hill","postalCode":"75372","city":"Dallas","state":"TX","email":"krichichih@cloudflare.com"}, +{"id":19,"firstName":"Denna","lastName":"Cornford","street":"4 Gale Junction","postalCode":"10014","city":"New York City","state":"NY","phoneNumber":"646-273-3067","email":"dcornfordi@ebay.co.uk"}, +{"id":20,"firstName":"Randall","lastName":"McQuaid","street":"55712 Stone Corner Circle","postalCode":"10203","city":"New York City","state":"NY","email":"rmcquaidj@facebook.com"}, +{"id":21,"firstName":"Kirbie","lastName":"Walczak","street":"9 Coleman Road","postalCode":"99252","city":"Spokane","state":"WA","email":"kwalczakk@spotify.com"}, +{"id":22,"firstName":"Zedekiah","lastName":"Westby","street":"9 Victoria Road","postalCode":"22093","city":"Ashburn","state":"VA","phoneNumber":"571-642-0111","email":"zwestbyl@ox.ac.uk"}, +{"id":23,"firstName":"Corri","lastName":"Snar","street":"4 Service Terrace","postalCode":"68517","city":"Lincoln","state":"NE","email":"csnarm@tinyurl.com"}, +{"id":24,"firstName":"Manny","lastName":"Marchington","street":"942 Westend Center","postalCode":"22119","city":"Merrifield","state":"VA","email":"mmarchingtonn@opensource.org"}, +{"id":25,"firstName":"Ashla","lastName":"Grigoroni","street":"755 Lerdahl Parkway","postalCode":"55423","city":"Minneapolis","state":"MN","phoneNumber":"612-797-7928","email":"agrigoronio@cam.ac.uk"}, +{"id":26,"firstName":"Rita","lastName":"Sharratt","street":"710 Buena Vista Avenue","postalCode":"40576","city":"Lexington","state":"KY","phoneNumber":"859-727-0697"}, +{"id":27,"firstName":"Karrie","lastName":"Crathorne","street":"02 Loeprich Place","postalCode":"39505","city":"Gulfport","state":"MS"}, +{"id":28,"firstName":"Lothario","lastName":"Merck","street":"46 Golden Leaf Park","postalCode":"35205","city":"Birmingham","state":"AL"}, +{"id":29,"firstName":"Renault","lastName":"Banister","street":"7 Garrison Plaza","postalCode":"85072","city":"Phoenix","state":"AZ"}, +{"id":30,"firstName":"Wanda","lastName":"Burkart","street":"10 Mendota Place","postalCode":"48258","city":"Detroit","state":"MI","phoneNumber":"248-870-5185","email":"wburkartt@wikipedia.org"}, +{"id":31,"firstName":"Maggy","lastName":"Timby","street":"37 Crest Line Center","postalCode":"50305","city":"Des Moines","state":"IA","email":"mtimbyu@cnbc.com"}, +{"id":32,"firstName":"Chet","lastName":"Origan","street":"767 Bashford Lane","postalCode":"30919","city":"Augusta","state":"GA","email":"coriganv@behance.net"}, +{"id":33,"firstName":"Jammie","lastName":"Aslie","street":"7174 Hoffman Circle","postalCode":"23464","city":"Virginia Beach","state":"VA"}, +{"id":34,"firstName":"Dill","lastName":"Kingdon","street":"75 Corben Crossing","postalCode":"33013","city":"Hialeah","state":"FL","email":"dkingdonx@ibm.com"}, +{"id":35,"firstName":"Berenice","lastName":"Blodget","street":"8 Eliot Junction","postalCode":"93907","city":"Salinas","state":"CA","email":"bblodgety@blogs.com"}, +{"id":36,"firstName":"Kimberley","lastName":"Streatley","street":"56 Welch Center","postalCode":"77070","city":"Houston","state":"TX"}, +{"id":37,"firstName":"Warde","lastName":"Woodwind","street":"773 Gerald Park","postalCode":"35295","city":"Birmingham","state":"AL","email":"wwoodwind10@wsj.com"}, +{"id":38,"firstName":"Husain","lastName":"Christofe","street":"35118 Forest Dale Avenue","postalCode":"10175","city":"New York City","state":"NY","phoneNumber":"212-611-7995","email":"hchristofe11@seesaa.net"}, +{"id":39,"firstName":"Gertrud","lastName":"Defraine","street":"568 Walton Way","postalCode":"37405","city":"Chattanooga","state":"TN","phoneNumber":"423-125-5719","email":"gdefraine12@xrea.com"}, +{"id":40,"firstName":"Yulma","lastName":"Ramshay","street":"9976 Iowa Drive","postalCode":"87121","city":"Albuquerque","state":"NM","phoneNumber":"505-914-5281"}, +{"id":41,"firstName":"Bride","lastName":"Amsberger","street":"3 Service Lane","postalCode":"28272","city":"Charlotte","state":"NC","email":"bamsberger14@forbes.com"}, +{"id":42,"firstName":"Kaiser","lastName":"Froud","street":"7 Starling Lane","postalCode":"99507","city":"Anchorage","state":"AK","email":"kfroud15@cloudflare.com"}, +{"id":43,"firstName":"Leona","lastName":"Sciusscietto","street":"06392 East Lane","postalCode":"60193","city":"Schaumburg","state":"IL","phoneNumber":"630-981-3986","email":"lsciusscietto16@mit.edu"}, +{"id":44,"firstName":"Sibel","lastName":"Ripsher","street":"8672 Bayside Road","postalCode":"32511","city":"Pensacola","state":"FL","phoneNumber":"850-975-6365","email":"sripsher17@sitemeter.com"}, +{"id":45,"firstName":"Megen","lastName":"Dymond","street":"0547 Harper Place","postalCode":"28220","city":"Charlotte","state":"NC","phoneNumber":"704-632-5850"}, +{"id":46,"firstName":"Vitoria","lastName":"Niese","street":"365 Colorado Plaza","postalCode":"15279","city":"Pittsburgh","state":"PA","phoneNumber":"412-864-8563"}, +{"id":47,"firstName":"Cherianne","lastName":"Daveran","street":"5 Esch Parkway","postalCode":"36104","city":"Montgomery","state":"AL","email":"cdaveran1a@ft.com"}, +{"id":48,"firstName":"Harriott","lastName":"Mallam","street":"9 Monterey Place","postalCode":"20215","city":"Washington","state":"DC","phoneNumber":"202-727-0645"}, +{"id":49,"firstName":"Jozef","lastName":"Stranger","street":"07 Warner Drive","postalCode":"84199","city":"Salt Lake City","state":"UT","phoneNumber":"801-741-5946"}, +{"id":50,"firstName":"Teena","lastName":"Broggio","street":"287 Luster Park","postalCode":"78285","city":"San Antonio","state":"TX","phoneNumber":"210-482-0822","email":"tbroggio1d@craigslist.org"}, +{"id":51,"firstName":"Robin","lastName":"Membry","street":"0736 Forest Dale Crossing","postalCode":"45408","city":"Dayton","state":"OH","phoneNumber":"937-335-4964","email":"rmembry1e@toplist.cz"}, +{"id":52,"firstName":"Holly","lastName":"Lowcock","street":"819 Aberg Pass","postalCode":"28815","city":"Asheville","state":"NC","email":"hlowcock1f@bbc.co.uk"}, +{"id":53,"firstName":"Shandee","lastName":"Blowick","street":"81600 Moose Lane","postalCode":"46867","city":"Fort Wayne","state":"IN","phoneNumber":"260-904-5622"}, +{"id":54,"firstName":"Chaim","lastName":"Stilliard","street":"91 Spohn Court","postalCode":"28305","city":"Fayetteville","state":"NC","phoneNumber":"910-721-3938"}, +{"id":55,"firstName":"Maximilien","lastName":"Purkis","street":"66997 Algoma Park","postalCode":"10150","city":"New York City","state":"NY","phoneNumber":"212-824-3363","email":"mpurkis1i@unblog.fr"}, +{"id":56,"firstName":"Ferguson","lastName":"Whiles","street":"0550 Bowman Street","postalCode":"33142","city":"Miami","state":"FL","phoneNumber":"786-416-2947","email":"fwhiles1j@artisteer.com"}, +{"id":57,"firstName":"Elena","lastName":"Poyle","street":"54 Warner Court","postalCode":"28055","city":"Gastonia","state":"NC","email":"epoyle1k@tripod.com"}, +{"id":58,"firstName":"Carney","lastName":"Pengilly","street":"050 Welch Junction","postalCode":"76147","city":"Fort Worth","state":"TX","phoneNumber":"817-525-7801","email":"cpengilly1l@yellowpages.com"}, +{"id":59,"firstName":"Krispin","lastName":"Pouck","street":"03554 Twin Pines Point","postalCode":"55551","city":"Young America","state":"MN","email":"kpouck1m@nymag.com"}, +{"id":60,"firstName":"Kylie","lastName":"Osmar","street":"7 Milwaukee Plaza","postalCode":"45228","city":"Cincinnati","state":"OH","phoneNumber":"513-940-5020","email":"kosmar1n@storify.com"}, +{"id":61,"firstName":"Trudi","lastName":"Standrin","street":"526 Onsgard Park","postalCode":"12237","city":"Albany","state":"NY","email":"tstandrin1o@sfgate.com"}, +{"id":62,"firstName":"Frank","lastName":"Belt","street":"52 Stang Lane","postalCode":"27455","city":"Greensboro","state":"NC"}, +{"id":63,"firstName":"Nerita","lastName":"Daulton","street":"03 Sutherland Court","postalCode":"55417","city":"Minneapolis","state":"MN","phoneNumber":"651-796-2028"}, +{"id":64,"firstName":"Urbanus","lastName":"Camm","street":"6802 Weeping Birch Circle","postalCode":"92115","city":"San Diego","state":"CA","email":"ucamm1r@ucoz.com"}, +{"id":65,"firstName":"Perry","lastName":"Struther","street":"63916 Corry Alley","postalCode":"28805","city":"Asheville","state":"NC","phoneNumber":"828-821-0824","email":"pstruther1s@nih.gov"}, +{"id":66,"firstName":"Zorina","lastName":"Uc","street":"99 Merry Circle","postalCode":"37250","city":"Nashville","state":"TN","phoneNumber":"615-364-4726","email":"zuc1t@cbc.ca"}, +{"id":67,"firstName":"Ajay","lastName":"Rediers","street":"6872 Armistice Lane","postalCode":"92812","city":"Anaheim","state":"CA","phoneNumber":"714-845-0143"}, +{"id":68,"firstName":"Brendis","lastName":"Goor","street":"94 Mccormick Place","postalCode":"77346","city":"Humble","state":"TX","phoneNumber":"713-910-5956"}, +{"id":69,"firstName":"Barbey","lastName":"Konneke","street":"75613 Miller Trail","postalCode":"30328","city":"Atlanta","state":"GA","phoneNumber":"770-208-1453"}, +{"id":70,"firstName":"Adlai","lastName":"Colly","street":"4446 Loftsgordon Place","postalCode":"40576","city":"Lexington","state":"KY","email":"acolly1x@phpbb.com"}, +{"id":71,"firstName":"Libby","lastName":"Wherton","street":"9313 Buell Road","postalCode":"70116","city":"New Orleans","state":"LA","email":"lwherton1y@flickr.com"}, +{"id":72,"firstName":"Niko","lastName":"Stockell","street":"61 Havey Park","postalCode":"10034","city":"New York City","state":"NY","phoneNumber":"646-814-6395","email":"nstockell1z@xrea.com"}, +{"id":73,"firstName":"Phillip","lastName":"Dadley","street":"14534 Victoria Street","postalCode":"33906","city":"Fort Myers","state":"FL","email":"pdadley20@studiopress.com"}, +{"id":74,"firstName":"Leann","lastName":"Hebburn","street":"9 Center Place","postalCode":"84140","city":"Salt Lake City","state":"UT","email":"lhebburn21@1688.com"}, +{"id":75,"firstName":"Raynor","lastName":"Gernier","street":"5923 Gale Plaza","postalCode":"79118","city":"Amarillo","state":"TX"}, +{"id":76,"firstName":"Elmore","lastName":"Frankton","street":"770 Wayridge Crossing","postalCode":"14619","city":"Rochester","state":"NY"}, +{"id":77,"firstName":"Teresina","lastName":"Rives","street":"51261 Sycamore Terrace","postalCode":"63180","city":"Saint Louis","state":"MO","email":"trives24@cbsnews.com"}, +{"id":78,"firstName":"Pancho","lastName":"Thebeaud","street":"72 Pierstorff Way","postalCode":"33705","city":"Saint Petersburg","state":"FL","phoneNumber":"813-335-3556"}, +{"id":79,"firstName":"Deanne","lastName":"Crighton","street":"95 Duke Plaza","postalCode":"71151","city":"Shreveport","state":"LA","phoneNumber":"318-218-7196","email":"dcrighton26@sphinn.com"}, +{"id":80,"firstName":"Brucie","lastName":"Bury","street":"8948 Knutson Lane","postalCode":"93740","city":"Fresno","state":"CA","email":"bbury27@twitter.com"}, +{"id":81,"firstName":"Joleen","lastName":"Flack","street":"8007 Morningstar Street","postalCode":"33283","city":"Miami","state":"FL","phoneNumber":"305-459-0365"}, +{"id":82,"firstName":"Antonino","lastName":"Matelyunas","street":"2585 Gale Road","postalCode":"20591","city":"Washington","state":"DC","phoneNumber":"202-780-3589"}, +{"id":83,"firstName":"Vinnie","lastName":"Syne","street":"6 Fallview Pass","postalCode":"20231","city":"Washington","state":"DC","phoneNumber":"202-648-5977","email":"vsyne2a@etsy.com"}, +{"id":84,"firstName":"Sig","lastName":"Guillotin","street":"6 Buell Lane","postalCode":"46015","city":"Anderson","state":"IN","phoneNumber":"765-948-7663","email":"sguillotin2b@cisco.com"}, +{"id":85,"firstName":"Gabriel","lastName":"Vasyukhichev","street":"25801 Grasskamp Junction","postalCode":"45408","city":"Dayton","state":"OH","email":"gvasyukhichev2c@mac.com"}, +{"id":86,"firstName":"Casie","lastName":"Burgill","street":"0 Dapin Alley","postalCode":"37410","city":"Chattanooga","state":"TN"}, +{"id":87,"firstName":"Kristan","lastName":"Chalice","street":"5118 Calypso Junction","postalCode":"78721","city":"Austin","state":"TX","phoneNumber":"512-831-2347"}, +{"id":88,"firstName":"Brear","lastName":"Pruckner","street":"2 Corscot Street","postalCode":"53790","city":"Madison","state":"WI"}, +{"id":89,"firstName":"Estella","lastName":"Orpyne","street":"293 Hansons Plaza","postalCode":"55579","city":"Maple Plain","state":"MN","phoneNumber":"952-666-6951","email":"eorpyne2g@examiner.com"}, +{"id":90,"firstName":"Conroy","lastName":"de Banke","street":"40636 Farmco Park","postalCode":"30316","city":"Atlanta","state":"GA","phoneNumber":"404-199-0073","email":"cdebanke2h@prweb.com"}, +{"id":91,"firstName":"Elmira","lastName":"Bracken","street":"10 Macpherson Place","postalCode":"85099","city":"Phoenix","state":"AZ","phoneNumber":"602-991-7768","email":"ebracken2i@sourceforge.net"}, +{"id":92,"firstName":"Carlota","lastName":"Vasilechko","street":"33 American Ash Point","postalCode":"75507","city":"Texarkana","state":"TX","phoneNumber":"903-312-0610","email":"cvasilechko2j@nba.com"}, +{"id":93,"firstName":"Jamesy","lastName":"Valentelli","street":"59634 Charing Cross Trail","postalCode":"31416","city":"Savannah","state":"GA","phoneNumber":"912-657-6729","email":"jvalentelli2k@nifty.com"}, +{"id":94,"firstName":"Hildagarde","lastName":"Sandels","street":"1 Lotheville Lane","postalCode":"32277","city":"Jacksonville","state":"FL","phoneNumber":"904-981-2753","email":"hsandels2l@a8.net"}, +{"id":95,"firstName":"Kip","lastName":"Cranidge","street":"2 South Road","postalCode":"19160","city":"Philadelphia","state":"PA"}, +{"id":96,"firstName":"Tobit","lastName":"Jarrette","street":"777 Mallard Trail","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-706-1988"}, +{"id":97,"firstName":"Tibold","lastName":"Michie","street":"87796 Nevada Junction","postalCode":"22093","city":"Ashburn","state":"VA","phoneNumber":"571-188-4893","email":"tmichie2o@mapy.cz"}, +{"id":98,"firstName":"Maximo","lastName":"Ifill","street":"8307 Tony Point","postalCode":"22225","city":"Arlington","state":"VA","phoneNumber":"571-404-1412"}, +{"id":99,"firstName":"Patti","lastName":"Autry","street":"901 Iowa Crossing","postalCode":"55551","city":"Young America","state":"MN","phoneNumber":"952-772-9107","email":"pautry2q@scientificamerican.com"}, +{"id":100,"firstName":"Cathe","lastName":"Jost","street":"4400 Menomonie Road","postalCode":"21211","city":"Baltimore","state":"MD","phoneNumber":"410-800-4683","email":"cjost2r@tuttocitta.it"}, +{"id":101,"firstName":"Byron","lastName":"Maddams","street":"10729 Oak Trail","postalCode":"78255","city":"San Antonio","state":"TX","phoneNumber":"830-263-4129"}, +{"id":102,"firstName":"Sosanna","lastName":"Paley","street":"82207 Park Meadow Court","postalCode":"77010","city":"Houston","state":"TX","phoneNumber":"832-740-8766","email":"spaley2t@salon.com"}, +{"id":103,"firstName":"Elysia","lastName":"Skerratt","street":"88708 Cambridge Drive","postalCode":"31217","city":"Macon","state":"GA","phoneNumber":"478-265-6579","email":"eskerratt2u@japanpost.jp"}, +{"id":104,"firstName":"Nealson","lastName":"Sieur","street":"1286 Elmside Plaza","postalCode":"20904","city":"Silver Spring","state":"MD"}, +{"id":105,"firstName":"Yasmeen","lastName":"Bazire","street":"91904 Elmside Point","postalCode":"73167","city":"Oklahoma City","state":"OK"}, +{"id":106,"firstName":"Mandy","lastName":"Ewart","street":"91 Norway Maple Street","postalCode":"21239","city":"Baltimore","state":"MD","email":"mewart2x@weebly.com"}, +{"id":107,"firstName":"Chlo","lastName":"Keedy","street":"560 Oak Valley Avenue","postalCode":"20420","city":"Washington","state":"DC"}, +{"id":108,"firstName":"Benedicta","lastName":"Dinneen","street":"9 Cottonwood Circle","postalCode":"60686","city":"Chicago","state":"IL","email":"bdinneen2z@nydailynews.com"}, +{"id":109,"firstName":"Nanon","lastName":"Corsar","street":"40001 Barby Drive","postalCode":"95818","city":"Sacramento","state":"CA","email":"ncorsar30@house.gov"}, +{"id":110,"firstName":"Babette","lastName":"Scarsbrick","street":"96095 Loomis Terrace","postalCode":"94622","city":"Oakland","state":"CA","email":"bscarsbrick31@smugmug.com"}, +{"id":111,"firstName":"Cornall","lastName":"Christauffour","street":"9 Springview Alley","postalCode":"84170","city":"Salt Lake City","state":"UT","phoneNumber":"801-935-1246","email":"cchristauffour32@booking.com"}, +{"id":112,"firstName":"Micki","lastName":"Labell","street":"77729 Heath Place","postalCode":"25336","city":"Charleston","state":"WV"}, +{"id":113,"firstName":"Marissa","lastName":"Bricksey","street":"1 Jackson Pass","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"917-552-4280"}, +{"id":114,"firstName":"Alex","lastName":"Lyptrade","street":"74 Bunting Circle","postalCode":"40591","city":"Lexington","state":"KY","phoneNumber":"859-177-0753"}, +{"id":115,"firstName":"Tove","lastName":"Bielfeldt","street":"95 Mallard Hill","postalCode":"70894","city":"Baton Rouge","state":"LA","email":"tbielfeldt36@goo.gl"}, +{"id":116,"firstName":"Rodrigo","lastName":"Chestle","street":"53625 1st Junction","postalCode":"43635","city":"Toledo","state":"OH","phoneNumber":"419-928-0953","email":"rchestle37@princeton.edu"}, +{"id":117,"firstName":"Ulrike","lastName":"Kendle","street":"0 Cardinal Alley","postalCode":"80925","city":"Colorado Springs","state":"CO","phoneNumber":"719-796-1992","email":"ukendle38@naver.com"}, +{"id":118,"firstName":"Sandor","lastName":"Warwick","street":"8 Spaight Crossing","postalCode":"92030","city":"Escondido","state":"CA","email":"swarwick39@about.com"}, +{"id":119,"firstName":"Selina","lastName":"Slowcock","street":"7 7th Circle","postalCode":"50335","city":"Des Moines","state":"IA","phoneNumber":"515-865-9809"}, +{"id":120,"firstName":"Maxine","lastName":"Placstone","street":"42056 Sycamore Plaza","postalCode":"20244","city":"Washington","state":"DC"}, +{"id":121,"firstName":"Ardine","lastName":"Reven","street":"10634 Nancy Way","postalCode":"10175","city":"New York City","state":"NY","email":"areven3c@diigo.com"}, +{"id":122,"firstName":"Dilan","lastName":"Widdows","street":"37 Park Meadow Way","postalCode":"68144","city":"Omaha","state":"NE","phoneNumber":"402-383-9020"}, +{"id":123,"firstName":"Kevina","lastName":"Praten","street":"8531 Elmside Point","postalCode":"27610","city":"Raleigh","state":"NC","email":"kpraten3e@craigslist.org"}, +{"id":124,"firstName":"Sherman","lastName":"Jurczak","street":"8281 Acker Alley","postalCode":"07522","city":"Paterson","state":"NJ","email":"sjurczak3f@github.com"}, +{"id":125,"firstName":"Beckie","lastName":"Disney","street":"3 Butterfield Drive","postalCode":"49518","city":"Grand Rapids","state":"MI","phoneNumber":"616-493-1284","email":"bdisney3g@china.com.cn"}, +{"id":126,"firstName":"Blaine","lastName":"Leak","street":"369 Norway Maple Lane","postalCode":"03804","city":"Portsmouth","state":"NH","email":"bleak3h@lulu.com"}, +{"id":127,"firstName":"Dare","lastName":"Marney","street":"50 Lake View Alley","postalCode":"06505","city":"New Haven","state":"CT","phoneNumber":"203-876-6938","email":"dmarney3i@delicious.com"}, +{"id":128,"firstName":"Darby","lastName":"Sackler","street":"841 Ridgeview Trail","postalCode":"80279","city":"Denver","state":"CO"}, +{"id":129,"firstName":"Aurilia","lastName":"Seabrocke","street":"670 Schmedeman Road","postalCode":"11254","city":"Brooklyn","state":"NY","email":"aseabrocke3k@engadget.com"}, +{"id":130,"firstName":"Griz","lastName":"Riccioppo","street":"2204 Moland Circle","postalCode":"45218","city":"Cincinnati","state":"OH","email":"griccioppo3l@cisco.com"}, +{"id":131,"firstName":"Zahara","lastName":"Quinion","street":"4979 Mallory Circle","postalCode":"24515","city":"Lynchburg","state":"VA","email":"zquinion3m@sfgate.com"}, +{"id":132,"firstName":"Holly-anne","lastName":"Fontel","street":"60752 Hallows Circle","postalCode":"76705","city":"Waco","state":"TX","phoneNumber":"254-822-2565","email":"hfontel3n@exblog.jp"}, +{"id":133,"firstName":"Johannes","lastName":"Lemonby","street":"3 Grover Terrace","postalCode":"25709","city":"Huntington","state":"WV","phoneNumber":"304-342-4911","email":"jlemonby3o@woothemes.com"}, +{"id":134,"firstName":"Melvin","lastName":"Kain","street":"16 Pond Junction","postalCode":"85215","city":"Mesa","state":"AZ","phoneNumber":"602-146-3701"}, +{"id":135,"firstName":"Letta","lastName":"Smelley","street":"537 Helena Circle","postalCode":"22119","city":"Merrifield","state":"VA","phoneNumber":"571-472-5640"}, +{"id":136,"firstName":"Clerc","lastName":"Mc Ilwrick","street":"7050 Northfield Street","postalCode":"90050","city":"Los Angeles","state":"CA","email":"cmcilwrick3r@abc.net.au"}, +{"id":137,"firstName":"Abba","lastName":"Sutherns","street":"8087 Monterey Lane","postalCode":"83757","city":"Boise","state":"ID","phoneNumber":"208-110-3153","email":"asutherns3s@dropbox.com"}, +{"id":138,"firstName":"Karola","lastName":"Symper","street":"4596 Clyde Gallagher Road","postalCode":"28815","city":"Asheville","state":"NC","email":"ksymper3t@parallels.com"}, +{"id":139,"firstName":"Jessamyn","lastName":"Deacock","street":"19557 Bobwhite Way","postalCode":"19725","city":"Newark","state":"DE","phoneNumber":"302-174-2938"}, +{"id":140,"firstName":"Iggy","lastName":"Impey","street":"8 Brown Place","postalCode":"27499","city":"Greensboro","state":"NC"}, +{"id":141,"firstName":"Kary","lastName":"Mably","street":"75 Porter Avenue","postalCode":"70174","city":"New Orleans","state":"LA","email":"kmably3w@miibeian.gov.cn"}, +{"id":142,"firstName":"Ciel","lastName":"Tidbold","street":"54 Mitchell Lane","postalCode":"90055","city":"Los Angeles","state":"CA"}, +{"id":143,"firstName":"Dyana","lastName":"Orcott","street":"2 Kinsman Street","postalCode":"90005","city":"Los Angeles","state":"CA","phoneNumber":"310-366-6987"}, +{"id":144,"firstName":"Damien","lastName":"Haking","street":"2 Elmside Point","postalCode":"62705","city":"Springfield","state":"IL","email":"dhaking3z@drupal.org"}, +{"id":145,"firstName":"Ricardo","lastName":"Bille","street":"3 Mesta Hill","postalCode":"98411","city":"Tacoma","state":"WA","email":"rbille40@ebay.co.uk"}, +{"id":146,"firstName":"Carlene","lastName":"Roget","street":"8 Granby Avenue","postalCode":"35225","city":"Birmingham","state":"AL","phoneNumber":"205-762-4907","email":"croget41@statcounter.com"}, +{"id":147,"firstName":"Sharlene","lastName":"Antusch","street":"02445 Stang Parkway","postalCode":"55480","city":"Minneapolis","state":"MN","email":"santusch42@mtv.com"}, +{"id":148,"firstName":"Goober","lastName":"Danielczyk","street":"474 Union Court","postalCode":"70505","city":"Lafayette","state":"LA","phoneNumber":"337-779-0312","email":"gdanielczyk43@dion.ne.jp"}, +{"id":149,"firstName":"Janette","lastName":"Mauro","street":"1231 Commercial Crossing","postalCode":"97201","city":"Portland","state":"OR","phoneNumber":"971-423-7259"}, +{"id":150,"firstName":"Melinda","lastName":"Shitliffe","street":"244 Derek Drive","postalCode":"23208","city":"Richmond","state":"VA","phoneNumber":"804-864-5845"}, +{"id":151,"firstName":"Constance","lastName":"Fardon","street":"3 Lien Point","postalCode":"89105","city":"Las Vegas","state":"NV"}, +{"id":152,"firstName":"Tedd","lastName":"Storey","street":"2551 Luster Point","postalCode":"19151","city":"Philadelphia","state":"PA","phoneNumber":"215-622-9273","email":"tstorey47@google.com.au"}, +{"id":153,"firstName":"Brigitte","lastName":"Slograve","street":"8130 Waubesa Hill","postalCode":"11499","city":"Jamaica","state":"NY","email":"bslograve48@yandex.ru"}, +{"id":154,"firstName":"Ralph","lastName":"Comberbeach","street":"88140 Anderson Avenue","postalCode":"90076","city":"Los Angeles","state":"CA"}, +{"id":155,"firstName":"Deloria","lastName":"Thomazet","street":"666 Center Crossing","postalCode":"38119","city":"Memphis","state":"TN","phoneNumber":"615-840-7916"}, +{"id":156,"firstName":"Fidel","lastName":"MacClay","street":"01 Fairfield Point","postalCode":"24034","city":"Roanoke","state":"VA","email":"fmacclay4b@sitemeter.com"}, +{"id":157,"firstName":"Amalee","lastName":"Menzies","street":"6 Judy Drive","postalCode":"84605","city":"Provo","state":"UT"}, +{"id":158,"firstName":"Ansel","lastName":"Jory","street":"3 Nobel Park","postalCode":"32505","city":"Pensacola","state":"FL","phoneNumber":"850-394-8201"}, +{"id":159,"firstName":"Teodor","lastName":"Longhorn","street":"563 Sutherland Avenue","postalCode":"98008","city":"Bellevue","state":"WA"}, +{"id":160,"firstName":"Margarita","lastName":"Rewcassell","street":"64711 Beilfuss Point","postalCode":"79764","city":"Odessa","state":"TX","phoneNumber":"432-413-2196"}, +{"id":161,"firstName":"Tarra","lastName":"Albro","street":"2 Graceland Way","postalCode":"78405","city":"Corpus Christi","state":"TX"}, +{"id":162,"firstName":"Whitaker","lastName":"Brizell","street":"6 Luster Place","postalCode":"33694","city":"Tampa","state":"FL","email":"wbrizell4h@naver.com"}, +{"id":163,"firstName":"Gauthier","lastName":"Getsham","street":"0820 Duke Plaza","postalCode":"28263","city":"Charlotte","state":"NC","phoneNumber":"704-510-2908"}, +{"id":164,"firstName":"Thane","lastName":"Discombe","street":"56809 Aberg Street","postalCode":"63167","city":"Saint Louis","state":"MO"}, +{"id":165,"firstName":"Felicia","lastName":"Barthrup","street":"904 Stuart Junction","postalCode":"32220","city":"Jacksonville","state":"FL"}, +{"id":166,"firstName":"Emeline","lastName":"Jobes","street":"2670 Prairieview Plaza","postalCode":"10120","city":"New York City","state":"NY","email":"ejobes4l@newyorker.com"}, +{"id":167,"firstName":"Felicle","lastName":"Bowie","street":"9715 Lighthouse Bay Parkway","postalCode":"11210","city":"Brooklyn","state":"NY","email":"fbowie4m@auda.org.au"}, +{"id":168,"firstName":"Clare","lastName":"Miskelly","street":"8 Towne Trail","postalCode":"44555","city":"Youngstown","state":"OH"}, +{"id":169,"firstName":"Mort","lastName":"Danat","street":"6833 Shoshone Lane","postalCode":"12255","city":"Albany","state":"NY","phoneNumber":"518-967-9791","email":"mdanat4o@privacy.gov.au"}, +{"id":170,"firstName":"Ailey","lastName":"Scatchar","street":"3 Northfield Point","postalCode":"76505","city":"Temple","state":"TX"}, +{"id":171,"firstName":"Kevina","lastName":"Darwent","street":"8165 Reinke Alley","postalCode":"94132","city":"San Francisco","state":"CA","email":"kdarwent4q@artisteer.com"}, +{"id":172,"firstName":"My","lastName":"Buston","street":"715 Saint Paul Center","postalCode":"31416","city":"Savannah","state":"GA","phoneNumber":"912-281-8654"}, +{"id":173,"firstName":"Emera","lastName":"Lingner","street":"943 Eastlawn Hill","postalCode":"90605","city":"Whittier","state":"CA"}, +{"id":174,"firstName":"Drucie","lastName":"Byer","street":"988 4th Court","postalCode":"06816","city":"Danbury","state":"CT","email":"dbyer4t@xinhuanet.com"}, +{"id":175,"firstName":"Modestine","lastName":"Madeley","street":"1 Delaware Terrace","postalCode":"80126","city":"Littleton","state":"CO"}, +{"id":176,"firstName":"Selie","lastName":"O'Mohun","street":"42 Monument Trail","postalCode":"55590","city":"Monticello","state":"MN","phoneNumber":"763-384-5166"}, +{"id":177,"firstName":"Shayla","lastName":"Pesselt","street":"7 Pawling Center","postalCode":"20099","city":"Washington","state":"DC","phoneNumber":"202-816-7300","email":"spesselt4w@posterous.com"}, +{"id":178,"firstName":"Raeann","lastName":"Layland","street":"06548 Longview Alley","postalCode":"77005","city":"Houston","state":"TX","phoneNumber":"214-899-1257","email":"rlayland4x@pcworld.com"}, +{"id":179,"firstName":"Dael","lastName":"Christaeas","street":"375 Northfield Street","postalCode":"23509","city":"Norfolk","state":"VA","phoneNumber":"757-391-2798","email":"dchristaeas4y@sciencedaily.com"}, +{"id":180,"firstName":"Nicolas","lastName":"Baxill","street":"9 Autumn Leaf Terrace","postalCode":"77005","city":"Houston","state":"TX","email":"nbaxill4z@edublogs.org"}, +{"id":181,"firstName":"Onida","lastName":"Pengilly","street":"61 Commercial Junction","postalCode":"24029","city":"Roanoke","state":"VA","email":"opengilly50@slideshare.net"}, +{"id":182,"firstName":"Muffin","lastName":"Thrasher","street":"1 Morning Hill","postalCode":"64082","city":"Lees Summit","state":"MO"}, +{"id":183,"firstName":"Ignaz","lastName":"McLugish","street":"3936 Columbus Point","postalCode":"35263","city":"Birmingham","state":"AL"}, +{"id":184,"firstName":"Guillaume","lastName":"Gillings","street":"75541 Sheridan Center","postalCode":"68510","city":"Lincoln","state":"NE","email":"ggillings53@unblog.fr"}, +{"id":185,"firstName":"Kalli","lastName":"Branche","street":"33740 Manitowish Court","postalCode":"96805","city":"Honolulu","state":"HI"}, +{"id":186,"firstName":"Winthrop","lastName":"Barszczewski","street":"9 Luster Terrace","postalCode":"60158","city":"Carol Stream","state":"IL","phoneNumber":"309-633-3125","email":"wbarszczewski55@eventbrite.com"}, +{"id":187,"firstName":"Renaud","lastName":"Nitto","street":"1 Crownhardt Place","postalCode":"10310","city":"Staten Island","state":"NY","phoneNumber":"914-568-4524","email":"rnitto56@typepad.com"}, +{"id":188,"firstName":"Pollyanna","lastName":"Wherrett","street":"31380 Upham Street","postalCode":"76134","city":"Fort Worth","state":"TX","phoneNumber":"817-198-3301","email":"pwherrett57@bluehost.com"}, +{"id":189,"firstName":"Lilly","lastName":"Gatchell","street":"7 Elka Road","postalCode":"94064","city":"Redwood City","state":"CA","email":"lgatchell58@patch.com"}, +{"id":190,"firstName":"Leopold","lastName":"Leavey","street":"9 Darwin Crossing","postalCode":"20268","city":"Washington","state":"DC","phoneNumber":"202-964-5932","email":"lleavey59@aol.com"}, +{"id":191,"firstName":"Byram","lastName":"Stuckes","street":"782 Northport Alley","postalCode":"55436","city":"Minneapolis","state":"MN"}, +{"id":192,"firstName":"Cull","lastName":"Whiterod","street":"2586 Banding Terrace","postalCode":"80249","city":"Denver","state":"CO","email":"cwhiterod5b@skype.com"}, +{"id":193,"firstName":"Gretel","lastName":"Tacey","street":"6382 Fremont Avenue","postalCode":"25305","city":"Charleston","state":"WV"}, +{"id":194,"firstName":"Tudor","lastName":"Piff","street":"0 Monterey Circle","postalCode":"00214","city":"Portsmouth","state":"NH","email":"tpiff5d@eepurl.com"}, +{"id":195,"firstName":"Julienne","lastName":"Adshed","street":"91839 Lawn Avenue","postalCode":"92519","city":"Riverside","state":"CA"}, +{"id":196,"firstName":"Arnold","lastName":"Fearns","street":"7 West Trail","postalCode":"35242","city":"Birmingham","state":"AL","email":"afearns5f@bravesites.com"}, +{"id":197,"firstName":"Dunc","lastName":"Khoter","street":"048 Clove Lane","postalCode":"89505","city":"Reno","state":"NV","phoneNumber":"775-120-9532","email":"dkhoter5g@bbb.org"}, +{"id":198,"firstName":"Stevana","lastName":"Lush","street":"6 Dovetail Plaza","postalCode":"79945","city":"El Paso","state":"TX","email":"slush5h@economist.com"}, +{"id":199,"firstName":"Iggy","lastName":"Verryan","street":"5 Sommers Road","postalCode":"34114","city":"Naples","state":"FL","phoneNumber":"239-205-8767"}, +{"id":200,"firstName":"Breena","lastName":"Rubbert","street":"5 Kensington Crossing","postalCode":"90510","city":"Torrance","state":"CA","email":"brubbert5j@phpbb.com"}, +{"id":201,"firstName":"Jervis","lastName":"Doree","street":"2947 Center Plaza","postalCode":"70160","city":"New Orleans","state":"LA","phoneNumber":"504-278-7497","email":"jdoree5k@shutterfly.com"}, +{"id":202,"firstName":"Odelia","lastName":"Lidierth","street":"36699 Aberg Park","postalCode":"62764","city":"Springfield","state":"IL"}, +{"id":203,"firstName":"Ree","lastName":"Lammerding","street":"3542 Lerdahl Court","postalCode":"88558","city":"El Paso","state":"TX","phoneNumber":"915-384-9334","email":"rlammerding5m@msu.edu"}, +{"id":204,"firstName":"Davy","lastName":"Orniz","street":"49 Graedel Parkway","postalCode":"48295","city":"Detroit","state":"MI","email":"dorniz5n@examiner.com"}, +{"id":205,"firstName":"Syd","lastName":"Buckoke","street":"70 Pepper Wood Alley","postalCode":"74156","city":"Tulsa","state":"OK","phoneNumber":"918-604-5799"}, +{"id":206,"firstName":"Ginger","lastName":"Calkin","street":"7 Thompson Trail","postalCode":"71115","city":"Shreveport","state":"LA","phoneNumber":"318-650-6046"}, +{"id":207,"firstName":"Anissa","lastName":"Ivashinnikov","street":"61905 Chive Circle","postalCode":"40745","city":"London","state":"KY","email":"aivashinnikov5q@google.cn"}, +{"id":208,"firstName":"Vikky","lastName":"Kesley","street":"1 Grayhawk Street","postalCode":"06538","city":"New Haven","state":"CT","phoneNumber":"203-944-7163"}, +{"id":209,"firstName":"Alisha","lastName":"Lampke","street":"26940 Kensington Park","postalCode":"55446","city":"Minneapolis","state":"MN","phoneNumber":"612-814-9814","email":"alampke5s@apple.com"}, +{"id":210,"firstName":"Davidde","lastName":"Phlipon","street":"2044 Ruskin Road","postalCode":"07188","city":"Newark","state":"NJ","email":"dphlipon5t@shareasale.com"}, +{"id":211,"firstName":"Joly","lastName":"Crottagh","street":"532 Dawn Plaza","postalCode":"85083","city":"Phoenix","state":"AZ","phoneNumber":"602-533-4064"}, +{"id":212,"firstName":"Aggie","lastName":"Niesing","street":"3 Tony Drive","postalCode":"57110","city":"Sioux Falls","state":"SD","email":"aniesing5v@pbs.org"}, +{"id":213,"firstName":"Daron","lastName":"Baudassi","street":"2411 Melvin Court","postalCode":"40581","city":"Lexington","state":"KY","phoneNumber":"859-754-2542","email":"dbaudassi5w@joomla.org"}, +{"id":214,"firstName":"Thadeus","lastName":"Kleiser","street":"1394 Warner Street","postalCode":"87592","city":"Santa Fe","state":"NM","email":"tkleiser5x@bloomberg.com"}, +{"id":215,"firstName":"Terri","lastName":"Perrat","street":"0080 Upham Plaza","postalCode":"52245","city":"Iowa City","state":"IA"}, +{"id":216,"firstName":"Marlena","lastName":"Gatchell","street":"60888 Annamark Street","postalCode":"90060","city":"Los Angeles","state":"CA","phoneNumber":"323-121-6985","email":"mgatchell5z@ibm.com"}, +{"id":217,"firstName":"Locke","lastName":"Orcott","street":"459 Warner Lane","postalCode":"45020","city":"Hamilton","state":"OH","phoneNumber":"937-115-3187"}, +{"id":218,"firstName":"Wilmer","lastName":"Bewick","street":"0 Ohio Center","postalCode":"98166","city":"Seattle","state":"WA","phoneNumber":"253-805-8855","email":"wbewick61@seesaa.net"}, +{"id":219,"firstName":"Marena","lastName":"MacShirrie","street":"607 Badeau Circle","postalCode":"98008","city":"Bellevue","state":"WA","email":"mmacshirrie62@wikia.com"}, +{"id":220,"firstName":"Nathanial","lastName":"Sexty","street":"43 Basil Place","postalCode":"85020","city":"Phoenix","state":"AZ"}, +{"id":221,"firstName":"Wadsworth","lastName":"Iacovuzzi","street":"9610 Donald Crossing","postalCode":"88530","city":"El Paso","state":"TX","phoneNumber":"915-889-7936","email":"wiacovuzzi64@prnewswire.com"}, +{"id":222,"firstName":"Sutton","lastName":"Stych","street":"9 Brentwood Terrace","postalCode":"20546","city":"Washington","state":"DC","phoneNumber":"202-538-6355","email":"sstych65@wikimedia.org"}, +{"id":223,"firstName":"Gaspar","lastName":"Wabey","street":"3061 Bluejay Terrace","postalCode":"10110","city":"New York City","state":"NY","phoneNumber":"917-939-0802","email":"gwabey66@technorati.com"}, +{"id":224,"firstName":"Herminia","lastName":"Guyot","street":"91 Express Drive","postalCode":"85715","city":"Tucson","state":"AZ","phoneNumber":"520-777-1670","email":"hguyot67@admin.ch"}, +{"id":225,"firstName":"Udale","lastName":"Beurich","street":"675 Karstens Crossing","postalCode":"46852","city":"Fort Wayne","state":"IN","phoneNumber":"260-580-8627","email":"ubeurich68@bigcartel.com"}, +{"id":226,"firstName":"Kerrie","lastName":"Girauld","street":"56132 Charing Cross Court","postalCode":"71137","city":"Shreveport","state":"LA","email":"kgirauld69@nationalgeographic.com"}, +{"id":227,"firstName":"Irvin","lastName":"Nix","street":"0676 Aberg Terrace","postalCode":"97075","city":"Beaverton","state":"OR","email":"inix6a@xing.com"}, +{"id":228,"firstName":"Corene","lastName":"Spencock","street":"90 Meadow Ridge Drive","postalCode":"73173","city":"Oklahoma City","state":"OK","phoneNumber":"405-577-1312","email":"cspencock6b@shinystat.com"}, +{"id":229,"firstName":"Christos","lastName":"McIlreavy","street":"673 Jana Trail","postalCode":"23471","city":"Virginia Beach","state":"VA","email":"cmcilreavy6c@mayoclinic.com"}, +{"id":230,"firstName":"Bennett","lastName":"Melding","street":"4 Cardinal Lane","postalCode":"55448","city":"Minneapolis","state":"MN","email":"bmelding6d@t-online.de"}, +{"id":231,"firstName":"Winny","lastName":"de Leon","street":"941 Scoville Place","postalCode":"94611","city":"Oakland","state":"CA","phoneNumber":"510-230-4168","email":"wdeleon6e@dell.com"}, +{"id":232,"firstName":"Nike","lastName":"Iacobassi","street":"956 Service Junction","postalCode":"71914","city":"Hot Springs National Park","state":"AR","phoneNumber":"501-266-4142"}, +{"id":233,"firstName":"Gillan","lastName":"Baumann","street":"11 8th Alley","postalCode":"31190","city":"Atlanta","state":"GA","phoneNumber":"404-703-5154","email":"gbaumann6g@edublogs.org"}, +{"id":234,"firstName":"Brandtr","lastName":"Gadman","street":"5 Marquette Hill","postalCode":"32511","city":"Pensacola","state":"FL","phoneNumber":"850-834-0058","email":"bgadman6h@marriott.com"}, +{"id":235,"firstName":"Kenn","lastName":"Cage","street":"3759 Spohn Point","postalCode":"94126","city":"San Francisco","state":"CA","email":"kcage6i@earthlink.net"}, +{"id":236,"firstName":"Butch","lastName":"Causby","street":"02 Basil Crossing","postalCode":"10110","city":"New York City","state":"NY","phoneNumber":"212-190-1702","email":"bcausby6j@scribd.com"}, +{"id":237,"firstName":"Haleigh","lastName":"Parsonson","street":"8 Ruskin Trail","postalCode":"87201","city":"Albuquerque","state":"NM","phoneNumber":"505-987-1352"}, +{"id":238,"firstName":"Bartel","lastName":"Ruppeli","street":"7538 Red Cloud Center","postalCode":"37410","city":"Chattanooga","state":"TN","phoneNumber":"423-804-1016","email":"bruppeli6l@etsy.com"}, +{"id":239,"firstName":"Gretchen","lastName":"Le feaver","street":"7 Orin Way","postalCode":"98042","city":"Kent","state":"WA","phoneNumber":"253-205-3092","email":"glefeaver6m@mayoclinic.com"}, +{"id":240,"firstName":"Trumaine","lastName":"Dearden","street":"1 Vernon Trail","postalCode":"06127","city":"West Hartford","state":"CT","phoneNumber":"860-939-3865","email":"tdearden6n@goo.gl"}, +{"id":241,"firstName":"Aggie","lastName":"Dubs","street":"3601 Walton Trail","postalCode":"62764","city":"Springfield","state":"IL","phoneNumber":"217-834-6059","email":"adubs6o@cbsnews.com"}, +{"id":242,"firstName":"Shelly","lastName":"Skechley","street":"16 Morning Lane","postalCode":"60567","city":"Naperville","state":"IL","email":"sskechley6p@technorati.com"}, +{"id":243,"firstName":"Karin","lastName":"Fausch","street":"7532 Eggendart Way","postalCode":"19810","city":"Wilmington","state":"DE","phoneNumber":"302-548-2991"}, +{"id":244,"firstName":"Sal","lastName":"Harrow","street":"2632 Lien Way","postalCode":"33982","city":"Punta Gorda","state":"FL","phoneNumber":"941-904-5187","email":"sharrow6r@joomla.org"}, +{"id":245,"firstName":"Albie","lastName":"Strelitzki","street":"8436 Eggendart Terrace","postalCode":"49505","city":"Grand Rapids","state":"MI","email":"astrelitzki6s@google.com.br"}, +{"id":246,"firstName":"Augy","lastName":"Usherwood","street":"9078 Clemons Street","postalCode":"80915","city":"Colorado Springs","state":"CO","email":"ausherwood6t@wikimedia.org"}, +{"id":247,"firstName":"Solomon","lastName":"D'eathe","street":"778 Rockefeller Parkway","postalCode":"84199","city":"Salt Lake City","state":"UT"}, +{"id":248,"firstName":"Talya","lastName":"Joseff","street":"14 Graedel Court","postalCode":"99220","city":"Spokane","state":"WA","email":"tjoseff6v@amazon.de"}, +{"id":249,"firstName":"Anatol","lastName":"Self","street":"2 Stoughton Junction","postalCode":"85255","city":"Scottsdale","state":"AZ"}, +{"id":250,"firstName":"Elinore","lastName":"Bruhnke","street":"3 Bashford Alley","postalCode":"17105","city":"Harrisburg","state":"PA","email":"ebruhnke6x@usnews.com"}, +{"id":251,"firstName":"Stanfield","lastName":"Jagiello","street":"0804 Amoth Road","postalCode":"20067","city":"Washington","state":"DC"}, +{"id":252,"firstName":"Isak","lastName":"Venour","street":"04 Orin Court","postalCode":"78210","city":"San Antonio","state":"TX","email":"ivenour6z@springer.com"}, +{"id":253,"firstName":"Abigale","lastName":"Woolgar","street":"74 Porter Terrace","postalCode":"62705","city":"Springfield","state":"IL"}, +{"id":254,"firstName":"Phylys","lastName":"Casperri","street":"07 Delaware Street","postalCode":"33069","city":"Pompano Beach","state":"FL","phoneNumber":"954-224-4577"}, +{"id":255,"firstName":"Melania","lastName":"Fee","street":"194 Luster Point","postalCode":"70154","city":"New Orleans","state":"LA","phoneNumber":"504-168-6959","email":"mfee72@comsenz.com"}, +{"id":256,"firstName":"Joli","lastName":"Colquite","street":"9 Bayside Court","postalCode":"27425","city":"Greensboro","state":"NC","email":"jcolquite73@comcast.net"}, +{"id":257,"firstName":"Rahel","lastName":"Late","street":"2 Meadow Ridge Alley","postalCode":"32204","city":"Jacksonville","state":"FL"}, +{"id":258,"firstName":"Carny","lastName":"Fewell","street":"21826 Cardinal Pass","postalCode":"98140","city":"Seattle","state":"WA"}, +{"id":259,"firstName":"Lesly","lastName":"Vanyatin","street":"7730 South Court","postalCode":"25356","city":"Charleston","state":"WV","email":"lvanyatin76@histats.com"}, +{"id":260,"firstName":"Fianna","lastName":"Thomason","street":"2576 Holmberg Trail","postalCode":"27710","city":"Durham","state":"NC"}, +{"id":261,"firstName":"Bobinette","lastName":"Gowdridge","street":"6780 Superior Place","postalCode":"37605","city":"Johnson City","state":"TN","phoneNumber":"423-490-4990","email":"bgowdridge78@icio.us"}, +{"id":262,"firstName":"Karmen","lastName":"Megson","street":"34 Messerschmidt Point","postalCode":"97229","city":"Portland","state":"OR","email":"kmegson79@apache.org"}, +{"id":263,"firstName":"Thaddeus","lastName":"Padilla","street":"42 Corben Road","postalCode":"90010","city":"Los Angeles","state":"CA","phoneNumber":"213-659-3136","email":"tpadilla7a@hud.gov"}, +{"id":264,"firstName":"Hanna","lastName":"Baswall","street":"9 Old Shore Lane","postalCode":"53710","city":"Madison","state":"WI","email":"hbaswall7b@ezinearticles.com"}, +{"id":265,"firstName":"Tania","lastName":"McMorland","street":"4333 Commercial Point","postalCode":"45408","city":"Dayton","state":"OH"}, +{"id":266,"firstName":"Gifford","lastName":"Arne","street":"0 Drewry Point","postalCode":"24048","city":"Roanoke","state":"VA","email":"garne7d@samsung.com"}, +{"id":267,"firstName":"Tomasina","lastName":"Linch","street":"64992 Maple Wood Point","postalCode":"98447","city":"Tacoma","state":"WA","email":"tlinch7e@theglobeandmail.com"}, +{"id":268,"firstName":"Merrick","lastName":"Garvan","street":"7220 Melody Trail","postalCode":"90005","city":"Los Angeles","state":"CA","email":"mgarvan7f@mozilla.org"}, +{"id":269,"firstName":"Carmita","lastName":"Sailes","street":"3 Bay Lane","postalCode":"55428","city":"Minneapolis","state":"MN","email":"csailes7g@devhub.com"}, +{"id":270,"firstName":"Lesly","lastName":"Eslemont","street":"93302 Mcbride Terrace","postalCode":"19810","city":"Wilmington","state":"DE","email":"leslemont7h@wunderground.com"}, +{"id":271,"firstName":"Adelaida","lastName":"Keggins","street":"4 Birchwood Pass","postalCode":"97405","city":"Eugene","state":"OR","phoneNumber":"541-387-1319"}, +{"id":272,"firstName":"Peadar","lastName":"Forte","street":"1 Montana Center","postalCode":"32505","city":"Pensacola","state":"FL","email":"pforte7j@xing.com"}, +{"id":273,"firstName":"Godfrey","lastName":"Swatland","street":"477 Maple Wood Road","postalCode":"93034","city":"Oxnard","state":"CA","phoneNumber":"805-267-0614","email":"gswatland7k@photobucket.com"}, +{"id":274,"firstName":"Marten","lastName":"Jelleman","street":"57 Pennsylvania Plaza","postalCode":"20057","city":"Washington","state":"DC","email":"mjelleman7l@phoca.cz"}, +{"id":275,"firstName":"Sharity","lastName":"Keady","street":"753 Sauthoff Place","postalCode":"77505","city":"Pasadena","state":"TX"}, +{"id":276,"firstName":"Gabbie","lastName":"Pally","street":"45 Fallview Park","postalCode":"97255","city":"Portland","state":"OR","phoneNumber":"971-412-2293","email":"gpally7n@dyndns.org"}, +{"id":277,"firstName":"Betsy","lastName":"Rhelton","street":"9 Jackson Road","postalCode":"85040","city":"Phoenix","state":"AZ"}, +{"id":278,"firstName":"Patty","lastName":"Schooling","street":"4 Moulton Point","postalCode":"25705","city":"Huntington","state":"WV","phoneNumber":"304-908-8211","email":"pschooling7p@parallels.com"}, +{"id":279,"firstName":"Katlin","lastName":"O'Hallagan","street":"8418 Petterle Plaza","postalCode":"60636","city":"Chicago","state":"IL","email":"kohallagan7q@hao123.com"}, +{"id":280,"firstName":"Anne","lastName":"Wealleans","street":"3 Sachtjen Court","postalCode":"48609","city":"Saginaw","state":"MI"}, +{"id":281,"firstName":"Flory","lastName":"Pley","street":"6322 Golf View Court","postalCode":"19104","city":"Philadelphia","state":"PA"}, +{"id":282,"firstName":"Maryellen","lastName":"Baszkiewicz","street":"54165 Hanson Trail","postalCode":"93726","city":"Fresno","state":"CA","phoneNumber":"209-198-4916","email":"mbaszkiewicz7t@google.com.br"}, +{"id":283,"firstName":"Moyna","lastName":"Caddens","street":"17 Melrose Lane","postalCode":"11236","city":"Brooklyn","state":"NY","phoneNumber":"917-518-3987","email":"mcaddens7u@amazon.co.uk"}, +{"id":284,"firstName":"Lawton","lastName":"Ramiro","street":"2 Muir Park","postalCode":"48092","city":"Warren","state":"MI","phoneNumber":"810-472-5208","email":"lramiro7v@senate.gov"}, +{"id":285,"firstName":"Agnella","lastName":"Phelip","street":"24566 Colorado Pass","postalCode":"84145","city":"Salt Lake City","state":"UT","phoneNumber":"801-709-8696","email":"aphelip7w@woothemes.com"}, +{"id":286,"firstName":"Tracee","lastName":"Tighe","street":"41013 Cascade Lane","postalCode":"02142","city":"Cambridge","state":"MA"}, +{"id":287,"firstName":"Shelden","lastName":"Sowrey","street":"87 Glacier Hill Court","postalCode":"55557","city":"Young America","state":"MN","email":"ssowrey7y@sfgate.com"}, +{"id":288,"firstName":"Letizia","lastName":"Sallery","street":"65052 Shasta Court","postalCode":"44905","city":"Mansfield","state":"OH","phoneNumber":"419-752-9141"}, +{"id":289,"firstName":"Hilly","lastName":"Oyley","street":"7 Waywood Trail","postalCode":"30323","city":"Atlanta","state":"GA","email":"hoyley80@upenn.edu"}, +{"id":290,"firstName":"Sabra","lastName":"Grigoryev","street":"856 Michigan Trail","postalCode":"33705","city":"Saint Petersburg","state":"FL"}, +{"id":291,"firstName":"Nathanil","lastName":"Bodham","street":"536 Ridgeview Way","postalCode":"79984","city":"El Paso","state":"TX","email":"nbodham82@wikimedia.org"}, +{"id":292,"firstName":"Niven","lastName":"Hartzenberg","street":"5 Carpenter Hill","postalCode":"73167","city":"Oklahoma City","state":"OK","email":"nhartzenberg83@bandcamp.com"}, +{"id":293,"firstName":"Rachael","lastName":"Birdsall","street":"61484 Mendota Point","postalCode":"90410","city":"Santa Monica","state":"CA","email":"rbirdsall84@gmpg.org"}, +{"id":294,"firstName":"Gypsy","lastName":"Rallin","street":"4 Spohn Drive","postalCode":"77346","city":"Humble","state":"TX","phoneNumber":"713-508-2912","email":"grallin85@privacy.gov.au"}, +{"id":295,"firstName":"Skye","lastName":"Arsey","street":"49126 Maryland Lane","postalCode":"02119","city":"Boston","state":"MA"}, +{"id":296,"firstName":"Karalee","lastName":"Biddiss","street":"0327 Coleman Lane","postalCode":"10203","city":"New York City","state":"NY","email":"kbiddiss87@studiopress.com"}, +{"id":297,"firstName":"Russ","lastName":"O' Mahony","street":"7831 Caliangt Avenue","postalCode":"37665","city":"Kingsport","state":"TN","phoneNumber":"423-292-1177","email":"romahony88@umich.edu"}, +{"id":298,"firstName":"Gerianne","lastName":"Morfey","street":"1 Jay Hill","postalCode":"97229","city":"Portland","state":"OR","email":"gmorfey89@techcrunch.com"}, +{"id":299,"firstName":"Griz","lastName":"Vellacott","street":"44 Parkside Court","postalCode":"64149","city":"Kansas City","state":"MO","phoneNumber":"816-120-1692"}, +{"id":300,"firstName":"Parker","lastName":"Mantz","street":"3 Arkansas Lane","postalCode":"90005","city":"Los Angeles","state":"CA","email":"pmantz8b@va.gov"}, +{"id":301,"firstName":"Drugi","lastName":"Acaster","street":"426 Hagan Park","postalCode":"20599","city":"Washington","state":"DC","email":"dacaster8c@ihg.com"}, +{"id":302,"firstName":"Peder","lastName":"Monget","street":"9 Wayridge Parkway","postalCode":"92862","city":"Orange","state":"CA","phoneNumber":"714-532-0867","email":"pmonget8d@biblegateway.com"}, +{"id":303,"firstName":"Zilvia","lastName":"Grocutt","street":"1 Stuart Circle","postalCode":"34642","city":"Seminole","state":"FL"}, +{"id":304,"firstName":"Clyve","lastName":"Gunby","street":"75 Dunning Junction","postalCode":"79977","city":"El Paso","state":"TX","email":"cgunby8f@microsoft.com"}, +{"id":305,"firstName":"Zacharias","lastName":"Tomasini","street":"48488 Thackeray Way","postalCode":"40210","city":"Louisville","state":"KY","email":"ztomasini8g@harvard.edu"}, +{"id":306,"firstName":"Ferdinand","lastName":"McGuinley","street":"30366 Kipling Drive","postalCode":"23208","city":"Richmond","state":"VA","email":"fmcguinley8h@archive.org"}, +{"id":307,"firstName":"Ebonee","lastName":"Brumfitt","street":"18765 Division Terrace","postalCode":"30033","city":"Decatur","state":"GA","phoneNumber":"404-684-8364","email":"ebrumfitt8i@sourceforge.net"}, +{"id":308,"firstName":"Christy","lastName":"Cuniam","street":"6 Homewood Road","postalCode":"78744","city":"Austin","state":"TX","phoneNumber":"361-677-9833","email":"ccuniam8j@51.la"}, +{"id":309,"firstName":"Emelen","lastName":"Casin","street":"91 Thompson Plaza","postalCode":"33954","city":"Port Charlotte","state":"FL","email":"ecasin8k@webnode.com"}, +{"id":310,"firstName":"Babara","lastName":"Robberecht","street":"603 Oak Terrace","postalCode":"37450","city":"Chattanooga","state":"TN","email":"brobberecht8l@cargocollective.com"}, +{"id":311,"firstName":"Cesar","lastName":"Whitecross","street":"024 Oxford Junction","postalCode":"20226","city":"Washington","state":"DC","phoneNumber":"202-772-2936"}, +{"id":312,"firstName":"Frieda","lastName":"Sliman","street":"4 Beilfuss Hill","postalCode":"23324","city":"Chesapeake","state":"VA","email":"fsliman8n@bigcartel.com"}, +{"id":313,"firstName":"Dylan","lastName":"Paige","street":"26 Gina Parkway","postalCode":"55448","city":"Minneapolis","state":"MN","email":"dpaige8o@trellian.com"}, +{"id":314,"firstName":"Waring","lastName":"Labon","street":"2843 Spenser Center","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-274-0766","email":"wlabon8p@ucla.edu"}, +{"id":315,"firstName":"Conny","lastName":"Duinkerk","street":"65 Lunder Circle","postalCode":"45426","city":"Dayton","state":"OH","email":"cduinkerk8q@economist.com"}, +{"id":316,"firstName":"Nessie","lastName":"Stucksbury","street":"91449 Browning Drive","postalCode":"25705","city":"Huntington","state":"WV","phoneNumber":"304-182-0766"}, +{"id":317,"firstName":"Corrine","lastName":"Kohlert","street":"00706 Carioca Plaza","postalCode":"45223","city":"Cincinnati","state":"OH","email":"ckohlert8s@wunderground.com"}, +{"id":318,"firstName":"Horatio","lastName":"Greengrass","street":"0 Cascade Park","postalCode":"79905","city":"El Paso","state":"TX","email":"hgreengrass8t@ameblo.jp"}, +{"id":319,"firstName":"Jana","lastName":"McLae","street":"919 Esch Place","postalCode":"55428","city":"Minneapolis","state":"MN","email":"jmclae8u@nytimes.com"}, +{"id":320,"firstName":"Maressa","lastName":"Rehor","street":"55 Talisman Junction","postalCode":"90505","city":"Torrance","state":"CA","email":"mrehor8v@vinaora.com"}, +{"id":321,"firstName":"Filide","lastName":"Riehm","street":"0 Karstens Lane","postalCode":"95054","city":"Santa Clara","state":"CA"}, +{"id":322,"firstName":"Bunnie","lastName":"Mumbey","street":"9369 Bayside Circle","postalCode":"46216","city":"Indianapolis","state":"IN","email":"bmumbey8x@scribd.com"}, +{"id":323,"firstName":"Maxi","lastName":"Jentgens","street":"2970 Rowland Circle","postalCode":"84189","city":"Salt Lake City","state":"UT","phoneNumber":"801-423-8854","email":"mjentgens8y@ihg.com"}, +{"id":324,"firstName":"Florri","lastName":"Okenden","street":"2180 Cody Point","postalCode":"70187","city":"New Orleans","state":"LA","phoneNumber":"504-913-1989","email":"fokenden8z@networksolutions.com"}, +{"id":325,"firstName":"Imogen","lastName":"Grisard","street":"8 Westerfield Avenue","postalCode":"92668","city":"Orange","state":"CA","email":"igrisard90@tamu.edu"}, +{"id":326,"firstName":"Edwina","lastName":"Montes","street":"92 Carpenter Avenue","postalCode":"97216","city":"Portland","state":"OR","phoneNumber":"503-544-7296","email":"emontes91@reference.com"}, +{"id":327,"firstName":"Renelle","lastName":"MacCambridge","street":"77 Talmadge Circle","postalCode":"08638","city":"Trenton","state":"NJ","phoneNumber":"609-150-9438","email":"rmaccambridge92@springer.com"}, +{"id":328,"firstName":"Sterne","lastName":"Taberner","street":"642 6th Terrace","postalCode":"10120","city":"New York City","state":"NY","email":"staberner93@miibeian.gov.cn"}, +{"id":329,"firstName":"Garvy","lastName":"Pankethman","street":"8618 Kennedy Terrace","postalCode":"79405","city":"Lubbock","state":"TX","phoneNumber":"806-470-8784","email":"gpankethman94@free.fr"}, +{"id":330,"firstName":"Nathanil","lastName":"Holston","street":"27247 Eliot Avenue","postalCode":"31190","city":"Atlanta","state":"GA","email":"nholston95@drupal.org"}, +{"id":331,"firstName":"Caresse","lastName":"Kilty","street":"514 Manufacturers Pass","postalCode":"76205","city":"Denton","state":"TX","email":"ckilty96@umich.edu"}, +{"id":332,"firstName":"Arlinda","lastName":"Brenstuhl","street":"2 Sunnyside Avenue","postalCode":"55470","city":"Minneapolis","state":"MN","email":"abrenstuhl97@wisc.edu"}, +{"id":333,"firstName":"Darcy","lastName":"Dunne","street":"3 Badeau Park","postalCode":"91328","city":"Northridge","state":"CA"}, +{"id":334,"firstName":"Malva","lastName":"Grew","street":"2242 Huxley Hill","postalCode":"68510","city":"Lincoln","state":"NE","email":"mgrew99@com.com"}, +{"id":335,"firstName":"Sukey","lastName":"Winspur","street":"475 Melvin Way","postalCode":"68524","city":"Lincoln","state":"NE","phoneNumber":"402-816-9401"}, +{"id":336,"firstName":"Beth","lastName":"O'Dougherty","street":"450 Eastlawn Park","postalCode":"93591","city":"Palmdale","state":"CA","phoneNumber":"661-845-8781"}, +{"id":337,"firstName":"Cortney","lastName":"Meers","street":"9 Chive Drive","postalCode":"93762","city":"Fresno","state":"CA","email":"cmeers9c@diigo.com"}, +{"id":338,"firstName":"Geralda","lastName":"Brocket","street":"0686 La Follette Avenue","postalCode":"80126","city":"Littleton","state":"CO","phoneNumber":"720-641-1371","email":"gbrocket9d@youku.com"}, +{"id":339,"firstName":"Lishe","lastName":"Maliphant","street":"5 Erie Plaza","postalCode":"63169","city":"Saint Louis","state":"MO","email":"lmaliphant9e@sfgate.com"}, +{"id":340,"firstName":"Brod","lastName":"Dobrovsky","street":"9 Gateway Park","postalCode":"79405","city":"Lubbock","state":"TX"}, +{"id":341,"firstName":"Philippe","lastName":"Argile","street":"4 Red Cloud Plaza","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-633-5495"}, +{"id":342,"firstName":"Sadye","lastName":"Sally","street":"07 Mendota Terrace","postalCode":"75507","city":"Texarkana","state":"TX","email":"ssally9h@e-recht24.de"}, +{"id":343,"firstName":"Napoleon","lastName":"Piggott","street":"3968 Roxbury Point","postalCode":"35905","city":"Gadsden","state":"AL","email":"npiggott9i@cnbc.com"}, +{"id":344,"firstName":"Jere","lastName":"Larn","street":"5086 Dahle Crossing","postalCode":"39534","city":"Biloxi","state":"MS","email":"jlarn9j@twitter.com"}, +{"id":345,"firstName":"Bevon","lastName":"Stidson","street":"7 Armistice Court","postalCode":"23436","city":"Suffolk","state":"VA","email":"bstidson9k@alexa.com"}, +{"id":346,"firstName":"Drugi","lastName":"Ewbach","street":"6032 5th Avenue","postalCode":"02208","city":"Boston","state":"MA","email":"dewbach9l@techcrunch.com"}, +{"id":347,"firstName":"Milka","lastName":"Caizley","street":"7 Anderson Junction","postalCode":"37228","city":"Nashville","state":"TN","phoneNumber":"615-305-6985","email":"mcaizley9m@cyberchimps.com"}, +{"id":348,"firstName":"Wilton","lastName":"Biagi","street":"80833 6th Crossing","postalCode":"40215","city":"Louisville","state":"KY","email":"wbiagi9n@vinaora.com"}, +{"id":349,"firstName":"Dilly","lastName":"Spradbrow","street":"5 Harbort Street","postalCode":"45419","city":"Dayton","state":"OH","email":"dspradbrow9o@marketwatch.com"}, +{"id":350,"firstName":"Gan","lastName":"Gookey","street":"8387 Bultman Terrace","postalCode":"75241","city":"Dallas","state":"TX"}, +{"id":351,"firstName":"Nanon","lastName":"Mulrenan","street":"47257 Reindahl Drive","postalCode":"22119","city":"Merrifield","state":"VA","phoneNumber":"571-637-8154","email":"nmulrenan9q@godaddy.com"}, +{"id":352,"firstName":"Frederique","lastName":"Watkiss","street":"61 Heath Pass","postalCode":"70124","city":"New Orleans","state":"LA","phoneNumber":"504-891-7051"}, +{"id":353,"firstName":"Sinclare","lastName":"MacCurlye","street":"514 Meadow Ridge Place","postalCode":"97240","city":"Portland","state":"OR","phoneNumber":"971-190-5174","email":"smaccurlye9s@google.ru"}, +{"id":354,"firstName":"Jessie","lastName":"Newlands","street":"80509 Northland Pass","postalCode":"33111","city":"Miami","state":"FL","phoneNumber":"786-557-9193"}, +{"id":355,"firstName":"Jamaal","lastName":"Molder","street":"90 Mcbride Trail","postalCode":"78764","city":"Austin","state":"TX","phoneNumber":"512-320-8728"}, +{"id":356,"firstName":"Benni","lastName":"Sherel","street":"7 Springs Road","postalCode":"15235","city":"Pittsburgh","state":"PA","email":"bsherel9v@hostgator.com"}, +{"id":357,"firstName":"Dene","lastName":"Brigge","street":"8560 Sutteridge Parkway","postalCode":"32412","city":"Panama City","state":"FL"}, +{"id":358,"firstName":"Timoteo","lastName":"Iban","street":"52858 Oak Valley Hill","postalCode":"93750","city":"Fresno","state":"CA","email":"tiban9x@europa.eu"}, +{"id":359,"firstName":"Dar","lastName":"Quillinane","street":"2 Carberry Junction","postalCode":"66276","city":"Shawnee Mission","state":"KS","phoneNumber":"913-977-7562","email":"dquillinane9y@msn.com"}, +{"id":360,"firstName":"Claudian","lastName":"Tinson","street":"445 Novick Avenue","postalCode":"79968","city":"El Paso","state":"TX","email":"ctinson9z@google.cn"}, +{"id":361,"firstName":"Clarice","lastName":"Deneve","street":"94 Meadow Ridge Road","postalCode":"37131","city":"Murfreesboro","state":"TN","phoneNumber":"615-780-7667"}, +{"id":362,"firstName":"Hilary","lastName":"Bithell","street":"20 Russell Trail","postalCode":"81010","city":"Pueblo","state":"CO","email":"hbithella1@list-manage.com"}, +{"id":363,"firstName":"Mathew","lastName":"Scrivin","street":"4 Elgar Point","postalCode":"90081","city":"Los Angeles","state":"CA","phoneNumber":"213-898-6650","email":"mscrivina2@about.me"}, +{"id":364,"firstName":"Idell","lastName":"Rambadt","street":"6 Cherokee Hill","postalCode":"90840","city":"Long Beach","state":"CA","email":"irambadta3@ustream.tv"}, +{"id":365,"firstName":"Nealon","lastName":"Schoolfield","street":"1 Northland Point","postalCode":"74133","city":"Tulsa","state":"OK"}, +{"id":366,"firstName":"Gregorius","lastName":"Bartot","street":"24636 Eagle Crest Crossing","postalCode":"32215","city":"Jacksonville","state":"FL","email":"gbartota5@blogger.com"}, +{"id":367,"firstName":"Inessa","lastName":"Hullin","street":"559 Bartillon Trail","postalCode":"33142","city":"Miami","state":"FL","phoneNumber":"305-381-6621","email":"ihullina6@pcworld.com"}, +{"id":368,"firstName":"Andie","lastName":"Bampford","street":"5204 Meadow Valley Street","postalCode":"92825","city":"Anaheim","state":"CA","email":"abampforda7@sun.com"}, +{"id":369,"firstName":"Duane","lastName":"MacShirrie","street":"5077 Kings Parkway","postalCode":"92725","city":"Santa Ana","state":"CA","email":"dmacshirriea8@rambler.ru"}, +{"id":370,"firstName":"Sydel","lastName":"Deerr","street":"1 Commercial Road","postalCode":"30356","city":"Atlanta","state":"GA","phoneNumber":"404-209-0194","email":"sdeerra9@phpbb.com"}, +{"id":371,"firstName":"Mel","lastName":"Miles","street":"28164 Melody Plaza","postalCode":"90847","city":"Long Beach","state":"CA","phoneNumber":"562-932-1172"}, +{"id":372,"firstName":"Jone","lastName":"Drinkel","street":"946 Reindahl Point","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-547-0653"}, +{"id":373,"firstName":"Marcellus","lastName":"MacGilmartin","street":"10568 Westerfield Way","postalCode":"32868","city":"Orlando","state":"FL","phoneNumber":"407-874-6188","email":"mmacgilmartinac@fotki.com"}, +{"id":374,"firstName":"Bret","lastName":"Hardan","street":"9 Hayes Crossing","postalCode":"32309","city":"Tallahassee","state":"FL","email":"bhardanad@mit.edu"}, +{"id":375,"firstName":"Heddie","lastName":"Cesaric","street":"502 Cody Crossing","postalCode":"95397","city":"Modesto","state":"CA"}, +{"id":376,"firstName":"Tansy","lastName":"Maeer","street":"526 Messerschmidt Court","postalCode":"94089","city":"Sunnyvale","state":"CA","email":"tmaeeraf@arizona.edu"}, +{"id":377,"firstName":"Waverly","lastName":"West-Frimley","street":"02 Quincy Trail","postalCode":"20575","city":"Washington","state":"DC","phoneNumber":"202-493-3304","email":"wwestfrimleyag@ft.com"}, +{"id":378,"firstName":"Dido","lastName":"de Clercq","street":"7 Norway Maple Center","postalCode":"84125","city":"Salt Lake City","state":"UT","email":"ddeclercqah@trellian.com"}, +{"id":379,"firstName":"Vic","lastName":"Samuels","street":"2 Kipling Drive","postalCode":"31190","city":"Atlanta","state":"GA","email":"vsamuelsai@goo.gl"}, +{"id":380,"firstName":"Jeno","lastName":"Freiburger","street":"431 Golden Leaf Parkway","postalCode":"32610","city":"Gainesville","state":"FL","email":"jfreiburgeraj@theguardian.com"}, +{"id":381,"firstName":"Christine","lastName":"Basketter","street":"4 Lotheville Terrace","postalCode":"39305","city":"Meridian","state":"MS","phoneNumber":"601-702-1546"}, +{"id":382,"firstName":"Karry","lastName":"Corsan","street":"09189 Lakeland Point","postalCode":"27409","city":"Greensboro","state":"NC","phoneNumber":"336-445-0006","email":"kcorsanal@usgs.gov"}, +{"id":383,"firstName":"Barri","lastName":"Brinsden","street":"53 Shelley Drive","postalCode":"35225","city":"Birmingham","state":"AL","email":"bbrinsdenam@1und1.de"}, +{"id":384,"firstName":"Hyacintha","lastName":"Boddam","street":"45 Sugar Circle","postalCode":"10160","city":"New York City","state":"NY","phoneNumber":"212-794-6062"}, +{"id":385,"firstName":"Brande","lastName":"Remnant","street":"283 Stone Corner Road","postalCode":"31904","city":"Columbus","state":"GA","phoneNumber":"706-211-4851","email":"bremnantao@people.com.cn"}, +{"id":386,"firstName":"Tally","lastName":"Bygraves","street":"54833 Northport Pass","postalCode":"85072","city":"Phoenix","state":"AZ","email":"tbygravesap@jigsy.com"}, +{"id":387,"firstName":"Garfield","lastName":"Pressnell","street":"63077 Hudson Court","postalCode":"30061","city":"Marietta","state":"GA","email":"gpressnellaq@archive.org"}, +{"id":388,"firstName":"Romonda","lastName":"Stiggles","street":"17 Russell Parkway","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-600-9676"}, +{"id":389,"firstName":"Dedie","lastName":"Ralling","street":"8 Judy Plaza","postalCode":"94137","city":"San Francisco","state":"CA","email":"drallingas@wikia.com"}, +{"id":390,"firstName":"Maddi","lastName":"Cornau","street":"5 Oriole Way","postalCode":"92105","city":"San Diego","state":"CA","phoneNumber":"619-388-6359","email":"mcornauat@adobe.com"}, +{"id":391,"firstName":"Zeke","lastName":"Jennery","street":"65332 Sommers Avenue","postalCode":"48206","city":"Detroit","state":"MI","email":"zjenneryau@elegantthemes.com"}, +{"id":392,"firstName":"Danya","lastName":"Fairlaw","street":"343 Logan Alley","postalCode":"33111","city":"Miami","state":"FL","email":"dfairlawav@irs.gov"}, +{"id":393,"firstName":"Rabi","lastName":"Petheridge","street":"7 Monica Alley","postalCode":"64054","city":"Independence","state":"MO","phoneNumber":"816-501-9452"}, +{"id":394,"firstName":"Ebba","lastName":"Skellen","street":"2655 Iowa Terrace","postalCode":"63150","city":"Saint Louis","state":"MO","phoneNumber":"314-695-7831","email":"eskellenax@nbcnews.com"}, +{"id":395,"firstName":"Marie-ann","lastName":"Glaysher","street":"4 Lakewood Hill","postalCode":"12247","city":"Albany","state":"NY","phoneNumber":"518-634-2425"}, +{"id":396,"firstName":"Arne","lastName":"Quincey","street":"162 Redwing Way","postalCode":"83711","city":"Boise","state":"ID"}, +{"id":397,"firstName":"Clarita","lastName":"Okroy","street":"05 Delaware Way","postalCode":"45218","city":"Cincinnati","state":"OH","email":"cokroyb0@stumbleupon.com"}, +{"id":398,"firstName":"Renault","lastName":"Weighell","street":"498 Dovetail Place","postalCode":"79710","city":"Midland","state":"TX","phoneNumber":"432-955-1408"}, +{"id":399,"firstName":"Roderich","lastName":"Mankor","street":"07 Dayton Way","postalCode":"92160","city":"San Diego","state":"CA"}, +{"id":400,"firstName":"Arv","lastName":"Sunnex","street":"89 Ronald Regan Terrace","postalCode":"91109","city":"Pasadena","state":"CA","email":"asunnexb3@vkontakte.ru"}, +{"id":401,"firstName":"Sonia","lastName":"Cowperthwaite","street":"77 Dennis Point","postalCode":"16550","city":"Erie","state":"PA"}, +{"id":402,"firstName":"Buddie","lastName":"Goscomb","street":"85675 Eastlawn Pass","postalCode":"20535","city":"Washington","state":"DC"}, +{"id":403,"firstName":"Brandi","lastName":"Swaine","street":"39961 Del Mar Lane","postalCode":"39705","city":"Columbus","state":"MS","phoneNumber":"662-306-2164","email":"bswaineb6@miibeian.gov.cn"}, +{"id":404,"firstName":"Jenny","lastName":"Cabbell","street":"743 Fordem Center","postalCode":"78285","city":"San Antonio","state":"TX","phoneNumber":"210-491-9874","email":"jcabbellb7@techcrunch.com"}, +{"id":405,"firstName":"Vincent","lastName":"People","street":"83 Tennessee Way","postalCode":"77293","city":"Houston","state":"TX","phoneNumber":"281-261-1928","email":"vpeopleb8@github.io"}, +{"id":406,"firstName":"Reinald","lastName":"Roles","street":"2 Division Road","postalCode":"53785","city":"Madison","state":"WI","phoneNumber":"608-568-7958","email":"rrolesb9@google.fr"}, +{"id":407,"firstName":"Kale","lastName":"Wanek","street":"7 Crescent Oaks Terrace","postalCode":"46852","city":"Fort Wayne","state":"IN","phoneNumber":"260-844-9669","email":"kwanekba@scribd.com"}, +{"id":408,"firstName":"Charisse","lastName":"Perse","street":"94449 Gateway Street","postalCode":"91117","city":"Pasadena","state":"CA","email":"cpersebb@ycombinator.com"}, +{"id":409,"firstName":"Konstantin","lastName":"Aslum","street":"08 Kings Trail","postalCode":"80328","city":"Boulder","state":"CO","email":"kaslumbc@opera.com"}, +{"id":410,"firstName":"Tyson","lastName":"O'Hartigan","street":"75122 Crowley Place","postalCode":"95173","city":"San Jose","state":"CA","phoneNumber":"408-879-0901","email":"tohartiganbd@devhub.com"}, +{"id":411,"firstName":"Fallon","lastName":"Haysman","street":"477 High Crossing Place","postalCode":"23293","city":"Richmond","state":"VA"}, +{"id":412,"firstName":"Svend","lastName":"Scarlet","street":"2856 Merrick Circle","postalCode":"90087","city":"Los Angeles","state":"CA","email":"sscarletbf@clickbank.net"}, +{"id":413,"firstName":"Gabey","lastName":"Colter","street":"7 2nd Alley","postalCode":"90610","city":"Whittier","state":"CA"}, +{"id":414,"firstName":"Hart","lastName":"Densell","street":"2687 Elka Alley","postalCode":"99599","city":"Anchorage","state":"AK","phoneNumber":"907-286-6079"}, +{"id":415,"firstName":"Claresta","lastName":"Folger","street":"5 Amoth Alley","postalCode":"27116","city":"Winston Salem","state":"NC"}, +{"id":416,"firstName":"Rica","lastName":"Lightowlers","street":"54303 Mayer Drive","postalCode":"61825","city":"Champaign","state":"IL","email":"rlightowlersbj@so-net.ne.jp"}, +{"id":417,"firstName":"Paula","lastName":"Treadaway","street":"8 Anniversary Road","postalCode":"20456","city":"Washington","state":"DC"}, +{"id":418,"firstName":"Francoise","lastName":"Gooderick","street":"13 Knutson Lane","postalCode":"33325","city":"Fort Lauderdale","state":"FL","email":"fgooderickbl@dedecms.com"}, +{"id":419,"firstName":"Ferdy","lastName":"Nannizzi","street":"578 Esker Trail","postalCode":"25321","city":"Charleston","state":"WV","email":"fnannizzibm@rambler.ru"}, +{"id":420,"firstName":"Dody","lastName":"Gettone","street":"9 Veith Court","postalCode":"62711","city":"Springfield","state":"IL"}, +{"id":421,"firstName":"Ronna","lastName":"Godleman","street":"6 Jenna Trail","postalCode":"22301","city":"Alexandria","state":"VA","email":"rgodlemanbo@hexun.com"}, +{"id":422,"firstName":"Adey","lastName":"Waith","street":"2 Mayer Avenue","postalCode":"12325","city":"Schenectady","state":"NY"}, +{"id":423,"firstName":"Stanislaw","lastName":"Garahan","street":"660 Merry Avenue","postalCode":"62723","city":"Springfield","state":"IL","phoneNumber":"217-587-6734"}, +{"id":424,"firstName":"Westley","lastName":"Knowles","street":"67430 Lakeland Circle","postalCode":"53263","city":"Milwaukee","state":"WI","email":"wknowlesbr@msu.edu"}, +{"id":425,"firstName":"Dion","lastName":"Jamson","street":"696 Birchwood Circle","postalCode":"80015","city":"Aurora","state":"CO","phoneNumber":"720-486-4494"}, +{"id":426,"firstName":"Glynis","lastName":"Bourhill","street":"091 Harper Park","postalCode":"40250","city":"Louisville","state":"KY"}, +{"id":427,"firstName":"Massimo","lastName":"Briand","street":"37 Northview Junction","postalCode":"75507","city":"Texarkana","state":"TX","email":"mbriandbu@etsy.com"}, +{"id":428,"firstName":"Tremayne","lastName":"Cadore","street":"6721 Anthes Point","postalCode":"94605","city":"Oakland","state":"CA","email":"tcadorebv@mozilla.com"}, +{"id":429,"firstName":"Lea","lastName":"Wildman","street":"52 Dixon Point","postalCode":"50310","city":"Des Moines","state":"IA","phoneNumber":"515-536-2096"}, +{"id":430,"firstName":"Ambur","lastName":"Oxlade","street":"356 Porter Center","postalCode":"44485","city":"Warren","state":"OH"}, +{"id":431,"firstName":"Jyoti","lastName":"Gillet","street":"13 Del Mar Parkway","postalCode":"81505","city":"Grand Junction","state":"CO","phoneNumber":"970-598-0357"}, +{"id":432,"firstName":"Sascha","lastName":"Stanyan","street":"77289 Blue Bill Park Alley","postalCode":"06120","city":"Hartford","state":"CT","email":"sstanyanbz@geocities.jp"}, +{"id":433,"firstName":"Spenser","lastName":"Harry","street":"2021 Oak Place","postalCode":"32835","city":"Orlando","state":"FL","email":"sharryc0@privacy.gov.au"}, +{"id":434,"firstName":"Clim","lastName":"Penrose","street":"8 Warrior Road","postalCode":"15255","city":"Pittsburgh","state":"PA","email":"cpenrosec1@blogtalkradio.com"}, +{"id":435,"firstName":"Jewell","lastName":"McKinnon","street":"4 Delladonna Street","postalCode":"36114","city":"Montgomery","state":"AL","email":"jmckinnonc2@tinypic.com"}, +{"id":436,"firstName":"Estrellita","lastName":"Amburgy","street":"5538 Tennessee Plaza","postalCode":"17121","city":"Harrisburg","state":"PA","phoneNumber":"717-274-8930","email":"eamburgyc3@forbes.com"}, +{"id":437,"firstName":"Sarah","lastName":"Fears","street":"61 Springs Park","postalCode":"93034","city":"Oxnard","state":"CA","email":"sfearsc4@wisc.edu"}, +{"id":438,"firstName":"Nixie","lastName":"Peddie","street":"7 Armistice Way","postalCode":"10155","city":"New York City","state":"NY","email":"npeddiec5@free.fr"}, +{"id":439,"firstName":"Ardisj","lastName":"Rohmer","street":"726 Crowley Point","postalCode":"93399","city":"Bakersfield","state":"CA","email":"arohmerc6@google.nl"}, +{"id":440,"firstName":"Wallie","lastName":"Johanssen","street":"9555 Jana Park","postalCode":"28410","city":"Wilmington","state":"NC","phoneNumber":"910-160-4520","email":"wjohanssenc7@boston.com"}, +{"id":441,"firstName":"Allan","lastName":"Jodlkowski","street":"31585 Kedzie Park","postalCode":"89150","city":"Las Vegas","state":"NV","phoneNumber":"702-782-3289","email":"ajodlkowskic8@sogou.com"}, +{"id":442,"firstName":"Harris","lastName":"Cadden","street":"96829 Fieldstone Park","postalCode":"16565","city":"Erie","state":"PA","phoneNumber":"814-745-1099"}, +{"id":443,"firstName":"Nigel","lastName":"Girardengo","street":"24703 Red Cloud Road","postalCode":"90310","city":"Inglewood","state":"CA","email":"ngirardengoca@ow.ly"}, +{"id":444,"firstName":"Aila","lastName":"Tinniswood","street":"62812 Stephen Parkway","postalCode":"13205","city":"Syracuse","state":"NY","phoneNumber":"315-847-2259","email":"atinniswoodcb@google.com.br"}, +{"id":445,"firstName":"Genni","lastName":"Geockle","street":"81 Bobwhite Plaza","postalCode":"93721","city":"Fresno","state":"CA","email":"ggeocklecc@furl.net"}, +{"id":446,"firstName":"Madison","lastName":"Brikner","street":"166 Coolidge Trail","postalCode":"07208","city":"Elizabeth","state":"NJ","email":"mbriknercd@myspace.com"}, +{"id":447,"firstName":"Akim","lastName":"Gotthard.sf","street":"0017 Heffernan Parkway","postalCode":"71914","city":"Hot Springs National Park","state":"AR","email":"agotthardsfce@google.com.au"}, +{"id":448,"firstName":"Andria","lastName":"Cardello","street":"1089 Stang Road","postalCode":"96835","city":"Honolulu","state":"HI","phoneNumber":"808-372-6528"}, +{"id":449,"firstName":"Laureen","lastName":"Crawshaw","street":"13 Manitowish Avenue","postalCode":"23504","city":"Norfolk","state":"VA","phoneNumber":"757-220-4043"}, +{"id":450,"firstName":"Henderson","lastName":"Parmley","street":"3408 Superior Street","postalCode":"28410","city":"Wilmington","state":"NC","email":"hparmleych@diigo.com"}, +{"id":451,"firstName":"Henri","lastName":"Arnley","street":"54 Knutson Park","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"718-365-7389"}, +{"id":452,"firstName":"Phil","lastName":"Trunkfield","street":"07 Arizona Way","postalCode":"85030","city":"Phoenix","state":"AZ","email":"ptrunkfieldcj@cisco.com"}, +{"id":453,"firstName":"Chery","lastName":"Nangle","street":"03 Merrick Way","postalCode":"88569","city":"El Paso","state":"TX","phoneNumber":"915-959-5535","email":"cnangleck@tumblr.com"}, +{"id":454,"firstName":"Leora","lastName":"Fields","street":"0260 Eastlawn Lane","postalCode":"85311","city":"Glendale","state":"AZ","email":"lfieldscl@nyu.edu"}, +{"id":455,"firstName":"Ronnica","lastName":"Pocknoll","street":"786 Hovde Plaza","postalCode":"78410","city":"Corpus Christi","state":"TX","email":"rpocknollcm@unesco.org"}, +{"id":456,"firstName":"Valida","lastName":"Romayn","street":"1108 Hudson Drive","postalCode":"34615","city":"Clearwater","state":"FL","email":"vromayncn@usatoday.com"}, +{"id":457,"firstName":"Randee","lastName":"Strowther","street":"441 Cordelia Point","postalCode":"27710","city":"Durham","state":"NC","phoneNumber":"919-463-1516","email":"rstrowtherco@trellian.com"}, +{"id":458,"firstName":"Ansell","lastName":"Blacklock","street":"9393 Kedzie Point","postalCode":"75358","city":"Dallas","state":"TX","phoneNumber":"214-949-3912"}, +{"id":459,"firstName":"Bailie","lastName":"Wing","street":"79459 Buhler Way","postalCode":"15279","city":"Pittsburgh","state":"PA","phoneNumber":"412-431-5446"}, +{"id":460,"firstName":"Leesa","lastName":"Wellbeloved","street":"4553 Dakota Circle","postalCode":"40215","city":"Louisville","state":"KY","phoneNumber":"502-145-8496","email":"lwellbelovedcr@go.com"}, +{"id":461,"firstName":"Sarge","lastName":"Tocknell","street":"9884 North Alley","postalCode":"80249","city":"Denver","state":"CO","phoneNumber":"303-603-8315","email":"stocknellcs@artisteer.com"}, +{"id":462,"firstName":"Loralyn","lastName":"Grimolbie","street":"3620 Clyde Gallagher Junction","postalCode":"91103","city":"Pasadena","state":"CA","email":"lgrimolbiect@purevolume.com"}, +{"id":463,"firstName":"Ki","lastName":"Youdell","street":"3 Gina Center","postalCode":"81005","city":"Pueblo","state":"CO"}, +{"id":464,"firstName":"Katerine","lastName":"Herreros","street":"70 Westend Place","postalCode":"57105","city":"Sioux Falls","state":"SD"}, +{"id":465,"firstName":"Frasquito","lastName":"Nockolds","street":"21 Dwight Park","postalCode":"11236","city":"Brooklyn","state":"NY","phoneNumber":"917-761-0549"}, +{"id":466,"firstName":"Krystalle","lastName":"Brierly","street":"7797 Forest Dale Lane","postalCode":"90410","city":"Santa Monica","state":"CA","email":"kbrierlycx@simplemachines.org"}, +{"id":467,"firstName":"Tobin","lastName":"Guillford","street":"501 Messerschmidt Alley","postalCode":"98195","city":"Seattle","state":"WA","phoneNumber":"206-862-7413","email":"tguillfordcy@fastcompany.com"}, +{"id":468,"firstName":"Lorita","lastName":"Sikorski","street":"83 Corscot Junction","postalCode":"44905","city":"Mansfield","state":"OH","phoneNumber":"419-278-2324","email":"lsikorskicz@intel.com"}, +{"id":469,"firstName":"Hermon","lastName":"Chomley","street":"696 Talisman Lane","postalCode":"35290","city":"Birmingham","state":"AL"}, +{"id":470,"firstName":"Karolina","lastName":"Andrault","street":"49738 Maple Wood Place","postalCode":"99709","city":"Fairbanks","state":"AK","phoneNumber":"907-337-1698","email":"kandraultd1@bloglines.com"}, +{"id":471,"firstName":"Lev","lastName":"Pankhurst.","street":"442 Pennsylvania Crossing","postalCode":"23605","city":"Newport News","state":"VA","phoneNumber":"757-832-3631"}, +{"id":472,"firstName":"Bianca","lastName":"Garfath","street":"7 Forest Run Center","postalCode":"71914","city":"Hot Springs National Park","state":"AR","email":"bgarfathd3@youku.com"}, +{"id":473,"firstName":"Walden","lastName":"Van der Linde","street":"6 Namekagon Parkway","postalCode":"70187","city":"New Orleans","state":"LA","email":"wvanderlinded4@netscape.com"}, +{"id":474,"firstName":"Alexandra","lastName":"Vasyukhin","street":"471 School Alley","postalCode":"80910","city":"Colorado Springs","state":"CO","email":"avasyukhind5@samsung.com"}, +{"id":475,"firstName":"Perry","lastName":"Spere","street":"33 Autumn Leaf Street","postalCode":"79994","city":"El Paso","state":"TX","email":"pspered6@tamu.edu"}, +{"id":476,"firstName":"Cristobal","lastName":"Afonso","street":"5 Lake View Way","postalCode":"19136","city":"Philadelphia","state":"PA","email":"cafonsod7@themeforest.net"}, +{"id":477,"firstName":"Sebastien","lastName":"Annets","street":"4229 Bowman Trail","postalCode":"43699","city":"Toledo","state":"OH","phoneNumber":"419-981-8630","email":"sannetsd8@guardian.co.uk"}, +{"id":478,"firstName":"Prentice","lastName":"Desorts","street":"54 Mendota Drive","postalCode":"31196","city":"Atlanta","state":"GA","phoneNumber":"404-235-6736","email":"pdesortsd9@who.int"}, +{"id":479,"firstName":"Rubin","lastName":"Dunkerk","street":"035 Myrtle Park","postalCode":"94297","city":"Sacramento","state":"CA","phoneNumber":"916-658-2157","email":"rdunkerkda@columbia.edu"}, +{"id":480,"firstName":"Jesselyn","lastName":"Bidnall","street":"2353 Norway Maple Court","postalCode":"07522","city":"Paterson","state":"NJ","email":"jbidnalldb@4shared.com"}, +{"id":481,"firstName":"Arleta","lastName":"Massy","street":"2 Bluejay Lane","postalCode":"10310","city":"Staten Island","state":"NY"}, +{"id":482,"firstName":"Trescha","lastName":"Joncic","street":"052 Summit Way","postalCode":"13217","city":"Syracuse","state":"NY"}, +{"id":483,"firstName":"Joshuah","lastName":"Galbreth","street":"16 Elka Place","postalCode":"08922","city":"New Brunswick","state":"NJ","email":"jgalbrethde@rambler.ru"}, +{"id":484,"firstName":"Clywd","lastName":"Henlon","street":"26 Thackeray Pass","postalCode":"90040","city":"Los Angeles","state":"CA","email":"chenlondf@unesco.org"}, +{"id":485,"firstName":"Glenda","lastName":"Grayley","street":"6326 Ohio Plaza","postalCode":"91411","city":"Van Nuys","state":"CA"}, +{"id":486,"firstName":"Glynda","lastName":"Stokell","street":"6 Schmedeman Court","postalCode":"60641","city":"Chicago","state":"IL","email":"gstokelldh@ted.com"}, +{"id":487,"firstName":"Kath","lastName":"Harrap","street":"43769 Barby Plaza","postalCode":"32304","city":"Tallahassee","state":"FL","email":"kharrapdi@cargocollective.com"}, +{"id":488,"firstName":"Dickie","lastName":"Domotor","street":"2954 Toban Lane","postalCode":"98133","city":"Seattle","state":"WA","email":"ddomotordj@hhs.gov"}, +{"id":489,"firstName":"Ceciley","lastName":"Hitzke","street":"9102 Westport Pass","postalCode":"40618","city":"Frankfort","state":"KY","phoneNumber":"502-545-5506","email":"chitzkedk@newsvine.com"}, +{"id":490,"firstName":"Adler","lastName":"Webb-Bowen","street":"5 Hanover Street","postalCode":"32123","city":"Daytona Beach","state":"FL"}, +{"id":491,"firstName":"Fergus","lastName":"Domerq","street":"06 Hansons Road","postalCode":"58106","city":"Fargo","state":"ND","phoneNumber":"701-656-3778"}, +{"id":492,"firstName":"Kimbra","lastName":"Petherick","street":"867 Mayer Drive","postalCode":"39236","city":"Jackson","state":"MS"}, +{"id":493,"firstName":"Geneva","lastName":"Hobgen","street":"74 Vernon Parkway","postalCode":"53710","city":"Madison","state":"WI","email":"ghobgendo@google.de"}, +{"id":494,"firstName":"Jillane","lastName":"Skitral","street":"9747 Ruskin Point","postalCode":"22405","city":"Fredericksburg","state":"VA","email":"jskitraldp@mysql.com"}, +{"id":495,"firstName":"Carolin","lastName":"Pimblotte","street":"8 Union Way","postalCode":"75358","city":"Dallas","state":"TX","phoneNumber":"214-109-7114","email":"cpimblottedq@cargocollective.com"}, +{"id":496,"firstName":"Wandis","lastName":"Andreasson","street":"3 Nancy Parkway","postalCode":"70033","city":"Metairie","state":"LA","email":"wandreassondr@topsy.com"}, +{"id":497,"firstName":"Baily","lastName":"Dalliston","street":"602 Melrose Way","postalCode":"25331","city":"Charleston","state":"WV","email":"bdallistonds@storify.com"}, +{"id":498,"firstName":"Kissie","lastName":"Lammiman","street":"4 Memorial Terrace","postalCode":"06510","city":"New Haven","state":"CT","phoneNumber":"203-724-3731","email":"klammimandt@barnesandnoble.com"}, +{"id":499,"firstName":"Cloris","lastName":"Dorning","street":"4 Lien Road","postalCode":"37235","city":"Nashville","state":"TN","email":"cdorningdu@unesco.org"}, +{"id":500,"firstName":"Jemimah","lastName":"Juppe","street":"979 Tennessee Pass","postalCode":"85305","city":"Glendale","state":"AZ"}, +{"id":501,"firstName":"Fanchette","lastName":"Marlor","street":"90 Waywood Circle","postalCode":"44511","city":"Youngstown","state":"OH","email":"fmarlordw@is.gd"}, +{"id":502,"firstName":"Carmelle","lastName":"Stillmann","street":"9124 Sachtjen Way","postalCode":"74184","city":"Tulsa","state":"OK","email":"cstillmanndx@telegraph.co.uk"}, +{"id":503,"firstName":"Joelle","lastName":"Mumford","street":"5 Susan Point","postalCode":"28410","city":"Wilmington","state":"NC","email":"jmumforddy@yellowbook.com"}, +{"id":504,"firstName":"Vicky","lastName":"Danzelman","street":"472 Pond Junction","postalCode":"11220","city":"Brooklyn","state":"NY","email":"vdanzelmandz@stumbleupon.com"}, +{"id":505,"firstName":"Baudoin","lastName":"Grenshiels","street":"4703 Tony Circle","postalCode":"76198","city":"Fort Worth","state":"TX","email":"bgrenshielse0@devhub.com"}, +{"id":506,"firstName":"Rosetta","lastName":"Wennington","street":"3 Kensington Crossing","postalCode":"14619","city":"Rochester","state":"NY"}, +{"id":507,"firstName":"Eudora","lastName":"Murtell","street":"97 Mockingbird Circle","postalCode":"92867","city":"Orange","state":"CA","phoneNumber":"949-899-3967"}, +{"id":508,"firstName":"Sonnie","lastName":"Hawkin","street":"76669 Green Ridge Crossing","postalCode":"79491","city":"Lubbock","state":"TX","email":"shawkine3@wikia.com"}, +{"id":509,"firstName":"Ulysses","lastName":"Uman","street":"4 Fieldstone Circle","postalCode":"32128","city":"Daytona Beach","state":"FL","phoneNumber":"386-761-6071","email":"uumane4@multiply.com"}, +{"id":510,"firstName":"Alidia","lastName":"Kowalski","street":"3915 Harper Plaza","postalCode":"75221","city":"Dallas","state":"TX","email":"akowalskie5@simplemachines.org"}, +{"id":511,"firstName":"Willis","lastName":"Jeaneau","street":"8 Northport Center","postalCode":"37939","city":"Knoxville","state":"TN","phoneNumber":"865-336-2729","email":"wjeaneaue6@furl.net"}, +{"id":512,"firstName":"Clement","lastName":"Taudevin","street":"25062 Amoth Pass","postalCode":"31914","city":"Columbus","state":"GA","email":"ctaudevine7@mapquest.com"}, +{"id":513,"firstName":"Tally","lastName":"Arnatt","street":"5745 Nancy Terrace","postalCode":"95054","city":"Santa Clara","state":"CA","email":"tarnatte8@umich.edu"}, +{"id":514,"firstName":"Eldon","lastName":"Munnings","street":"17 Dayton Parkway","postalCode":"27690","city":"Raleigh","state":"NC","email":"emunningse9@gmpg.org"}, +{"id":515,"firstName":"Duffie","lastName":"Sibary","street":"840 Springview Avenue","postalCode":"48275","city":"Detroit","state":"MI","email":"dsibaryea@livejournal.com"}, +{"id":516,"firstName":"Winny","lastName":"Dobell","street":"0426 Lindbergh Street","postalCode":"81015","city":"Pueblo","state":"CO","phoneNumber":"719-882-3553","email":"wdobelleb@bizjournals.com"}, +{"id":517,"firstName":"Pancho","lastName":"Pointon","street":"79 Clyde Gallagher Park","postalCode":"97306","city":"Salem","state":"OR","phoneNumber":"503-151-2205"}, +{"id":518,"firstName":"Elston","lastName":"Warwicker","street":"96 Schmedeman Park","postalCode":"44705","city":"Canton","state":"OH","email":"ewarwickered@arstechnica.com"}, +{"id":519,"firstName":"Nicolle","lastName":"Shellcross","street":"23982 Cambridge Parkway","postalCode":"80940","city":"Colorado Springs","state":"CO","email":"nshellcrossee@hibu.com"}, +{"id":520,"firstName":"Bethanne","lastName":"Briggdale","street":"026 Portage Circle","postalCode":"43215","city":"Columbus","state":"OH","phoneNumber":"513-925-3139","email":"bbriggdaleef@flickr.com"}, +{"id":521,"firstName":"Elsey","lastName":"McCorry","street":"781 International Parkway","postalCode":"94286","city":"Sacramento","state":"CA","phoneNumber":"916-879-2104","email":"emccorryeg@sakura.ne.jp"}, +{"id":522,"firstName":"Abran","lastName":"Vasyuchov","street":"64 Grim Place","postalCode":"44177","city":"Cleveland","state":"OH"}, +{"id":523,"firstName":"Rhoda","lastName":"Grieveson","street":"50687 Towne Pass","postalCode":"11220","city":"Brooklyn","state":"NY","email":"rgrievesonei@mit.edu"}, +{"id":524,"firstName":"Florette","lastName":"Eke","street":"85057 Anzinger Lane","postalCode":"66225","city":"Shawnee Mission","state":"KS","phoneNumber":"913-299-0032","email":"fekeej@fema.gov"}, +{"id":525,"firstName":"Sheff","lastName":"Baigrie","street":"80366 Lawn Hill","postalCode":"02203","city":"Boston","state":"MA","phoneNumber":"617-556-4978","email":"sbaigrieek@aboutads.info"}, +{"id":526,"firstName":"Clarisse","lastName":"Hubbuck","street":"435 Truax Trail","postalCode":"02458","city":"Newton","state":"MA","phoneNumber":"781-641-2937"}, +{"id":527,"firstName":"Gilberte","lastName":"Yanele","street":"413 Glacier Hill Park","postalCode":"90610","city":"Whittier","state":"CA","phoneNumber":"562-451-1686","email":"gyaneleem@dot.gov"}, +{"id":528,"firstName":"Lefty","lastName":"Dufore","street":"957 Straubel Street","postalCode":"35220","city":"Birmingham","state":"AL","email":"lduforeen@slideshare.net"}, +{"id":529,"firstName":"Saul","lastName":"Shepperd","street":"44805 Sunnyside Place","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-904-7271"}, +{"id":530,"firstName":"Hadrian","lastName":"Cockhill","street":"479 Mayer Way","postalCode":"22119","city":"Merrifield","state":"VA","email":"hcockhillep@xrea.com"}, +{"id":531,"firstName":"Amalia","lastName":"Geare","street":"63075 Glendale Trail","postalCode":"90065","city":"Los Angeles","state":"CA","email":"ageareeq@vistaprint.com"}, +{"id":532,"firstName":"Adan","lastName":"Ibbeson","street":"5 Cambridge Lane","postalCode":"73142","city":"Oklahoma City","state":"OK"}, +{"id":533,"firstName":"Nicol","lastName":"Garbutt","street":"3 8th Street","postalCode":"50393","city":"Des Moines","state":"IA","phoneNumber":"515-946-8077"}, +{"id":534,"firstName":"Lilas","lastName":"Estcot","street":"1927 Mitchell Avenue","postalCode":"75185","city":"Mesquite","state":"TX","email":"lestcotet@ezinearticles.com"}, +{"id":535,"firstName":"Valina","lastName":"Dellenbrok","street":"1 Victoria Hill","postalCode":"45249","city":"Cincinnati","state":"OH","phoneNumber":"513-958-5055","email":"vdellenbrokeu@upenn.edu"}, +{"id":536,"firstName":"Gwen","lastName":"Harwell","street":"64275 Bartelt Terrace","postalCode":"93721","city":"Fresno","state":"CA"}, +{"id":537,"firstName":"Adriena","lastName":"Lochead","street":"0088 Hintze Point","postalCode":"43231","city":"Columbus","state":"OH","phoneNumber":"614-506-5616","email":"alocheadew@paypal.com"}, +{"id":538,"firstName":"Jacobo","lastName":"Jills","street":"809 Anderson Park","postalCode":"55557","city":"Young America","state":"MN","phoneNumber":"952-580-6574","email":"jjillsex@xing.com"}, +{"id":539,"firstName":"Saree","lastName":"Jeanequin","street":"0212 Clyde Gallagher Alley","postalCode":"32891","city":"Orlando","state":"FL","email":"sjeanequiney@who.int"}, +{"id":540,"firstName":"Kin","lastName":"Dewar","street":"3 Emmet Center","postalCode":"20244","city":"Washington","state":"DC","email":"kdewarez@discovery.com"}, +{"id":541,"firstName":"Kaleena","lastName":"Godfray","street":"4350 Eliot Parkway","postalCode":"76134","city":"Fort Worth","state":"TX","phoneNumber":"817-332-6412","email":"kgodfrayf0@webmd.com"}, +{"id":542,"firstName":"Wallace","lastName":"Poytres","street":"78157 Dovetail Crossing","postalCode":"14683","city":"Rochester","state":"NY","email":"wpoytresf1@springer.com"}, +{"id":543,"firstName":"Dur","lastName":"Burgise","street":"2 Weeping Birch Court","postalCode":"89130","city":"Las Vegas","state":"NV"}, +{"id":544,"firstName":"Sheridan","lastName":"Gardiner","street":"26 Gateway Crossing","postalCode":"64193","city":"Kansas City","state":"MO","phoneNumber":"816-647-4434","email":"sgardinerf3@jugem.jp"}, +{"id":545,"firstName":"Nickolaus","lastName":"Thomassen","street":"130 Anderson Drive","postalCode":"33330","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-339-0290"}, +{"id":546,"firstName":"Boris","lastName":"Cortez","street":"55 Center Court","postalCode":"10184","city":"New York City","state":"NY","phoneNumber":"212-549-8414","email":"bcortezf5@mail.ru"}, +{"id":547,"firstName":"Candra","lastName":"Codner","street":"24078 Superior Point","postalCode":"93715","city":"Fresno","state":"CA","phoneNumber":"209-495-8135"}, +{"id":548,"firstName":"Ashton","lastName":"Hugin","street":"33 Fuller Place","postalCode":"63143","city":"Saint Louis","state":"MO"}, +{"id":549,"firstName":"Miguelita","lastName":"Lanceley","street":"34877 Arizona Street","postalCode":"80045","city":"Aurora","state":"CO","email":"mlanceleyf8@trellian.com"}, +{"id":550,"firstName":"Law","lastName":"Skim","street":"1795 Farmco Street","postalCode":"28230","city":"Charlotte","state":"NC","email":"lskimf9@bravesites.com"}, +{"id":551,"firstName":"Carlita","lastName":"Kindall","street":"7 Scofield Road","postalCode":"93709","city":"Fresno","state":"CA","email":"ckindallfa@zimbio.com"}, +{"id":552,"firstName":"Mehetabel","lastName":"Stawell","street":"648 Upham Plaza","postalCode":"75277","city":"Dallas","state":"TX","phoneNumber":"214-597-5958","email":"mstawellfb@ehow.com"}, +{"id":553,"firstName":"Charlena","lastName":"MacAlpyne","street":"2 Village Terrace","postalCode":"33758","city":"Clearwater","state":"FL","phoneNumber":"813-452-9764","email":"cmacalpynefc@xinhuanet.com"}, +{"id":554,"firstName":"Gayel","lastName":"Litel","street":"34782 Birchwood Road","postalCode":"46406","city":"Gary","state":"IN","phoneNumber":"219-156-8377","email":"glitelfd@alibaba.com"}, +{"id":555,"firstName":"Prisca","lastName":"Kanzler","street":"67 Miller Terrace","postalCode":"08619","city":"Trenton","state":"NJ","phoneNumber":"609-352-4487"}, +{"id":556,"firstName":"Marlowe","lastName":"Idenden","street":"396 Beilfuss Park","postalCode":"74103","city":"Tulsa","state":"OK","phoneNumber":"918-254-3102"}, +{"id":557,"firstName":"Ashley","lastName":"Skule","street":"2327 Valley Edge Terrace","postalCode":"93794","city":"Fresno","state":"CA","phoneNumber":"559-558-9123"}, +{"id":558,"firstName":"Trista","lastName":"Naptine","street":"646 Dahle Court","postalCode":"06538","city":"New Haven","state":"CT","phoneNumber":"203-257-3017","email":"tnaptinefh@hugedomains.com"}, +{"id":559,"firstName":"Hasheem","lastName":"Ottery","street":"004 Clemons Street","postalCode":"28815","city":"Asheville","state":"NC","phoneNumber":"828-768-3824","email":"hotteryfi@gmpg.org"}, +{"id":560,"firstName":"Alisa","lastName":"Bernhardt","street":"49 Cody Center","postalCode":"84120","city":"Salt Lake City","state":"UT","phoneNumber":"801-808-4005","email":"abernhardtfj@census.gov"}, +{"id":561,"firstName":"Isadora","lastName":"Hatchett","street":"78644 Hoepker Junction","postalCode":"77015","city":"Houston","state":"TX","email":"ihatchettfk@spiegel.de"}, +{"id":562,"firstName":"Valdemar","lastName":"Stithe","street":"75 East Street","postalCode":"48206","city":"Detroit","state":"MI","email":"vstithefl@marriott.com"}, +{"id":563,"firstName":"Elden","lastName":"Rebert","street":"2 Florence Place","postalCode":"65110","city":"Jefferson City","state":"MO","phoneNumber":"573-753-8030"}, +{"id":564,"firstName":"Stormie","lastName":"Trewartha","street":"59 Shoshone Lane","postalCode":"19136","city":"Philadelphia","state":"PA","phoneNumber":"215-466-6832"}, +{"id":565,"firstName":"Bernhard","lastName":"Boulsher","street":"50888 Dwight Drive","postalCode":"02114","city":"Boston","state":"MA","email":"bboulsherfo@zdnet.com"}, +{"id":566,"firstName":"Twyla","lastName":"Yerrill","street":"526 Clove Terrace","postalCode":"40745","city":"London","state":"KY","email":"tyerrillfp@smugmug.com"}, +{"id":567,"firstName":"Sullivan","lastName":"Dudeney","street":"953 Swallow Crossing","postalCode":"19160","city":"Philadelphia","state":"PA","email":"sdudeneyfq@kickstarter.com"}, +{"id":568,"firstName":"Estell","lastName":"Kiggel","street":"8170 Rusk Alley","postalCode":"20442","city":"Washington","state":"DC","phoneNumber":"202-645-5828","email":"ekiggelfr@imgur.com"}, +{"id":569,"firstName":"Jonis","lastName":"Pymer","street":"21296 International Pass","postalCode":"77844","city":"College Station","state":"TX","email":"jpymerfs@nymag.com"}, +{"id":570,"firstName":"Linea","lastName":"Cranmor","street":"2541 Thackeray Hill","postalCode":"31210","city":"Macon","state":"GA"}, +{"id":571,"firstName":"Starlin","lastName":"Reven","street":"7692 Mifflin Hill","postalCode":"66611","city":"Topeka","state":"KS","email":"srevenfu@nba.com"}, +{"id":572,"firstName":"Augusta","lastName":"Heustice","street":"947 Ramsey Lane","postalCode":"10292","city":"New York City","state":"NY","phoneNumber":"212-194-3346","email":"aheusticefv@cloudflare.com"}, +{"id":573,"firstName":"Glen","lastName":"O'Mailey","street":"90 6th Court","postalCode":"33982","city":"Punta Gorda","state":"FL","phoneNumber":"941-381-2231"}, +{"id":574,"firstName":"Astrix","lastName":"Bister","street":"505 Artisan Crossing","postalCode":"23324","city":"Chesapeake","state":"VA","phoneNumber":"757-469-4444","email":"abisterfx@uol.com.br"}, +{"id":575,"firstName":"Shaw","lastName":"Lidbetter","street":"70 New Castle Trail","postalCode":"10474","city":"Bronx","state":"NY","phoneNumber":"917-917-9173"}, +{"id":576,"firstName":"Yovonnda","lastName":"Wych","street":"97472 Derek Drive","postalCode":"90410","city":"Santa Monica","state":"CA","email":"ywychfz@symantec.com"}, +{"id":577,"firstName":"Harcourt","lastName":"Faier","street":"056 Northridge Street","postalCode":"16510","city":"Erie","state":"PA","email":"hfaierg0@cloudflare.com"}, +{"id":578,"firstName":"Archibold","lastName":"Kos","street":"6 Forster Park","postalCode":"63104","city":"Saint Louis","state":"MO","phoneNumber":"314-967-5566","email":"akosg1@soup.io"}, +{"id":579,"firstName":"Nataniel","lastName":"Beldom","street":"1 Sullivan Street","postalCode":"02453","city":"Waltham","state":"MA","email":"nbeldomg2@alibaba.com"}, +{"id":580,"firstName":"Felisha","lastName":"Bamfield","street":"970 Washington Avenue","postalCode":"12305","city":"Schenectady","state":"NY","email":"fbamfieldg3@jimdo.com"}, +{"id":581,"firstName":"Colly","lastName":"Rugge","street":"8 Golf Course Avenue","postalCode":"55172","city":"Saint Paul","state":"MN","phoneNumber":"651-450-9347","email":"cruggeg4@tmall.com"}, +{"id":582,"firstName":"Patti","lastName":"Maddrell","street":"0483 Coolidge Drive","postalCode":"74193","city":"Tulsa","state":"OK"}, +{"id":583,"firstName":"Antin","lastName":"Gabbetis","street":"93510 Clemons Drive","postalCode":"68583","city":"Lincoln","state":"NE","email":"agabbetisg6@java.com"}, +{"id":584,"firstName":"Bree","lastName":"Million","street":"3 Columbus Avenue","postalCode":"61614","city":"Peoria","state":"IL","phoneNumber":"309-360-1909","email":"bmilliong7@gnu.org"}, +{"id":585,"firstName":"Taber","lastName":"Lorait","street":"4 Melrose Way","postalCode":"62764","city":"Springfield","state":"IL","phoneNumber":"217-436-2021","email":"tloraitg8@cargocollective.com"}, +{"id":586,"firstName":"Roley","lastName":"Di Carlo","street":"981 Bowman Center","postalCode":"87505","city":"Santa Fe","state":"NM"}, +{"id":587,"firstName":"Seline","lastName":"Oxenham","street":"65051 Forest Run Center","postalCode":"94064","city":"Redwood City","state":"CA","email":"soxenhamga@fastcompany.com"}, +{"id":588,"firstName":"Costa","lastName":"Tomblin","street":"7 Arapahoe Alley","postalCode":"33315","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-239-1335"}, +{"id":589,"firstName":"Opalina","lastName":"Cake","street":"88 Commercial Avenue","postalCode":"40215","city":"Louisville","state":"KY","email":"ocakegc@examiner.com"}, +{"id":590,"firstName":"Suzanne","lastName":"Giuroni","street":"73 Twin Pines Terrace","postalCode":"99260","city":"Spokane","state":"WA"}, +{"id":591,"firstName":"Faustine","lastName":"Croysdale","street":"01 Delladonna Point","postalCode":"48295","city":"Detroit","state":"MI"}, +{"id":592,"firstName":"Sheffie","lastName":"Aldine","street":"4 Hansons Junction","postalCode":"74108","city":"Tulsa","state":"OK"}, +{"id":593,"firstName":"Bret","lastName":"Birrane","street":"745 Mayer Junction","postalCode":"77030","city":"Houston","state":"TX","phoneNumber":"832-374-7571","email":"bbirranegg@opera.com"}, +{"id":594,"firstName":"Lennard","lastName":"Mowbury","street":"5 Dwight Road","postalCode":"94522","city":"Concord","state":"CA","email":"lmowburygh@1und1.de"}, +{"id":595,"firstName":"Albie","lastName":"Pert","street":"23705 Fieldstone Plaza","postalCode":"08922","city":"New Brunswick","state":"NJ","phoneNumber":"732-587-7312","email":"apertgi@netlog.com"}, +{"id":596,"firstName":"Stevie","lastName":"Pressnell","street":"0077 Ronald Regan Point","postalCode":"85020","city":"Phoenix","state":"AZ","phoneNumber":"623-991-0482","email":"spressnellgj@skype.com"}, +{"id":597,"firstName":"Eddy","lastName":"McIlreavy","street":"04 Luster Lane","postalCode":"94126","city":"San Francisco","state":"CA"}, +{"id":598,"firstName":"Webb","lastName":"Titterell","street":"94323 Kedzie Alley","postalCode":"91505","city":"Burbank","state":"CA","phoneNumber":"818-220-9105","email":"wtitterellgl@bandcamp.com"}, +{"id":599,"firstName":"Jeffrey","lastName":"Benito","street":"7487 Scott Lane","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"917-379-2592","email":"jbenitogm@deviantart.com"}, +{"id":600,"firstName":"Nollie","lastName":"Arsey","street":"7282 Summerview Plaza","postalCode":"55811","city":"Duluth","state":"MN","email":"narseygn@imageshack.us"}, +{"id":601,"firstName":"Petra","lastName":"Turpey","street":"43920 Evergreen Junction","postalCode":"77255","city":"Houston","state":"TX","phoneNumber":"713-446-0144"}, +{"id":602,"firstName":"Harwilll","lastName":"Lashbrook","street":"8063 Grasskamp Parkway","postalCode":"27621","city":"Raleigh","state":"NC","phoneNumber":"919-142-9887","email":"hlashbrookgp@seattletimes.com"}, +{"id":603,"firstName":"Tedman","lastName":"Steinor","street":"80230 Hanson Hill","postalCode":"47134","city":"Jeffersonville","state":"IN","email":"tsteinorgq@dmoz.org"}, +{"id":604,"firstName":"Georgette","lastName":"Tupper","street":"37 Lillian Avenue","postalCode":"33543","city":"Zephyrhills","state":"FL","phoneNumber":"813-743-2425","email":"gtuppergr@qq.com"}, +{"id":605,"firstName":"Torrance","lastName":"Welsh","street":"95802 Doe Crossing Crossing","postalCode":"13217","city":"Syracuse","state":"NY","phoneNumber":"315-145-4503","email":"twelshgs@imgur.com"}, +{"id":606,"firstName":"Silvie","lastName":"Souster","street":"52827 Fuller Place","postalCode":"99709","city":"Fairbanks","state":"AK"}, +{"id":607,"firstName":"Pauline","lastName":"Dulwitch","street":"8 Aberg Drive","postalCode":"17105","city":"Harrisburg","state":"PA","phoneNumber":"717-228-4960","email":"pdulwitchgu@aboutads.info"}, +{"id":608,"firstName":"Roberta","lastName":"Castanie","street":"182 Mosinee Avenue","postalCode":"75185","city":"Mesquite","state":"TX"}, +{"id":609,"firstName":"Percival","lastName":"Kristoffersen","street":"4 Del Mar Park","postalCode":"48335","city":"Farmington","state":"MI","phoneNumber":"248-438-1650","email":"pkristoffersengw@chron.com"}, +{"id":610,"firstName":"Caryl","lastName":"Boame","street":"094 Springview Avenue","postalCode":"78255","city":"San Antonio","state":"TX","email":"cboamegx@example.com"}, +{"id":611,"firstName":"Steve","lastName":"Simakov","street":"323 Brickson Park Trail","postalCode":"32244","city":"Jacksonville","state":"FL","phoneNumber":"904-468-9377","email":"ssimakovgy@angelfire.com"}, +{"id":612,"firstName":"Carl","lastName":"Tumayan","street":"93854 Clyde Gallagher Circle","postalCode":"98447","city":"Tacoma","state":"WA","email":"ctumayangz@1und1.de"}, +{"id":613,"firstName":"Gayle","lastName":"Blaker","street":"5930 Grasskamp Drive","postalCode":"12262","city":"Albany","state":"NY","email":"gblakerh0@spiegel.de"}, +{"id":614,"firstName":"Darrick","lastName":"Harefoot","street":"359 Waywood Trail","postalCode":"20189","city":"Dulles","state":"VA"}, +{"id":615,"firstName":"Sayer","lastName":"Eversfield","street":"86 Park Meadow Crossing","postalCode":"53263","city":"Milwaukee","state":"WI","email":"seversfieldh2@multiply.com"}, +{"id":616,"firstName":"Loralyn","lastName":"Poyner","street":"28530 Magdeline Crossing","postalCode":"84125","city":"Salt Lake City","state":"UT","phoneNumber":"801-363-2593"}, +{"id":617,"firstName":"Petrina","lastName":"Ridewood","street":"91782 Oriole Parkway","postalCode":"80235","city":"Denver","state":"CO","phoneNumber":"720-131-3660","email":"pridewoodh4@walmart.com"}, +{"id":618,"firstName":"Leroi","lastName":"Marde","street":"7992 Prairieview Junction","postalCode":"02142","city":"Cambridge","state":"MA","phoneNumber":"781-623-9420","email":"lmardeh5@oracle.com"}, +{"id":619,"firstName":"Brannon","lastName":"Janata","street":"79706 Wayridge Alley","postalCode":"24515","city":"Lynchburg","state":"VA","phoneNumber":"434-255-0721"}, +{"id":620,"firstName":"Berry","lastName":"Joska","street":"301 6th Alley","postalCode":"10150","city":"New York City","state":"NY","email":"bjoskah7@360.cn"}, +{"id":621,"firstName":"Blinnie","lastName":"Basten","street":"047 Canary Parkway","postalCode":"30343","city":"Atlanta","state":"GA","phoneNumber":"404-794-2760"}, +{"id":622,"firstName":"Inesita","lastName":"Abbitt","street":"8 Sachtjen Plaza","postalCode":"60681","city":"Chicago","state":"IL"}, +{"id":623,"firstName":"Nickie","lastName":"Ellicombe","street":"1067 Ridge Oak Terrace","postalCode":"38131","city":"Memphis","state":"TN","phoneNumber":"901-695-3826","email":"nellicombeha@imgur.com"}, +{"id":624,"firstName":"Barney","lastName":"Sheeres","street":"1 Rutledge Avenue","postalCode":"29208","city":"Columbia","state":"SC","phoneNumber":"803-166-1398"}, +{"id":625,"firstName":"Ogdan","lastName":"Lelievre","street":"27 Weeping Birch Plaza","postalCode":"27264","city":"High Point","state":"NC","phoneNumber":"336-416-3966","email":"olelievrehc@exblog.jp"}, +{"id":626,"firstName":"Zora","lastName":"Exter","street":"7 Ronald Regan Pass","postalCode":"33673","city":"Tampa","state":"FL"}, +{"id":627,"firstName":"Travus","lastName":"Jaulme","street":"3159 Montana Circle","postalCode":"79176","city":"Amarillo","state":"TX","phoneNumber":"806-894-9411"}, +{"id":628,"firstName":"Krishna","lastName":"Beckingham","street":"58 Fair Oaks Lane","postalCode":"30311","city":"Atlanta","state":"GA","email":"kbeckinghamhf@usnews.com"}, +{"id":629,"firstName":"Bartolomeo","lastName":"Bosanko","street":"753 Victoria Place","postalCode":"79699","city":"Abilene","state":"TX","phoneNumber":"325-223-9615","email":"bbosankohg@merriam-webster.com"}, +{"id":630,"firstName":"Umberto","lastName":"McGinly","street":"30 Upham Parkway","postalCode":"80945","city":"Colorado Springs","state":"CO","email":"umcginlyhh@cdc.gov"}, +{"id":631,"firstName":"Launce","lastName":"Fatkin","street":"03246 Esch Place","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-916-7032","email":"lfatkinhi@blogs.com"}, +{"id":632,"firstName":"Simone","lastName":"Soars","street":"9969 Forest Run Crossing","postalCode":"90101","city":"Los Angeles","state":"CA","phoneNumber":"213-282-8462"}, +{"id":633,"firstName":"Clerissa","lastName":"Leason","street":"59731 Mayfield Street","postalCode":"89510","city":"Reno","state":"NV"}, +{"id":634,"firstName":"Rutter","lastName":"Sultan","street":"697 Spenser Way","postalCode":"77245","city":"Houston","state":"TX"}, +{"id":635,"firstName":"Shannon","lastName":"De Carteret","street":"2 Grover Avenue","postalCode":"92717","city":"Irvine","state":"CA","phoneNumber":"714-410-2360","email":"sdecarterethm@simplemachines.org"}, +{"id":636,"firstName":"Sawyere","lastName":"Cardno","street":"428 Golf Course Drive","postalCode":"33111","city":"Miami","state":"FL"}, +{"id":637,"firstName":"Paulie","lastName":"Bucktharp","street":"5398 Sugar Park","postalCode":"10039","city":"New York City","state":"NY","phoneNumber":"646-197-4123","email":"pbucktharpho@businessweek.com"}, +{"id":638,"firstName":"Kippy","lastName":"Guisler","street":"2161 Claremont Trail","postalCode":"20546","city":"Washington","state":"DC","phoneNumber":"202-138-6171","email":"kguislerhp@ox.ac.uk"}, +{"id":639,"firstName":"Yoshiko","lastName":"Tolson","street":"2 Glendale Court","postalCode":"27415","city":"Greensboro","state":"NC","email":"ytolsonhq@example.com"}, +{"id":640,"firstName":"Page","lastName":"Chillingsworth","street":"8 Loomis Drive","postalCode":"55470","city":"Minneapolis","state":"MN","email":"pchillingsworthhr@wunderground.com"}, +{"id":641,"firstName":"Jillana","lastName":"O'Siaghail","street":"13517 Del Mar Road","postalCode":"29215","city":"Columbia","state":"SC","phoneNumber":"803-420-8597","email":"josiaghailhs@reuters.com"}, +{"id":642,"firstName":"Phedra","lastName":"Bagnold","street":"7059 Hallows Street","postalCode":"55470","city":"Minneapolis","state":"MN","email":"pbagnoldht@howstuffworks.com"}, +{"id":643,"firstName":"Bellina","lastName":"Gouldie","street":"7567 Bultman Way","postalCode":"88514","city":"El Paso","state":"TX","email":"bgouldiehu@salon.com"}, +{"id":644,"firstName":"Devi","lastName":"Bohden","street":"68833 Northview Hill","postalCode":"84115","city":"Salt Lake City","state":"UT"}, +{"id":645,"firstName":"Peggi","lastName":"Gobert","street":"667 Sauthoff Hill","postalCode":"44710","city":"Canton","state":"OH","email":"pgoberthw@mapy.cz"}, +{"id":646,"firstName":"Madelina","lastName":"Gurys","street":"70 Del Sol Trail","postalCode":"20420","city":"Washington","state":"DC","phoneNumber":"202-747-9276","email":"mguryshx@hibu.com"}, +{"id":647,"firstName":"Ikey","lastName":"Aubri","street":"76 Sutteridge Hill","postalCode":"36205","city":"Anniston","state":"AL","phoneNumber":"256-945-5095","email":"iaubrihy@mayoclinic.com"}, +{"id":648,"firstName":"Ginevra","lastName":"Duffitt","street":"25 Eagan Circle","postalCode":"31217","city":"Macon","state":"GA"}, +{"id":649,"firstName":"Cissiee","lastName":"Gozzard","street":"40240 Lillian Park","postalCode":"60609","city":"Chicago","state":"IL","email":"cgozzardi0@columbia.edu"}, +{"id":650,"firstName":"Sonny","lastName":"Jobern","street":"8 Green Trail","postalCode":"77065","city":"Houston","state":"TX","email":"sjoberni1@ucoz.com"}, +{"id":651,"firstName":"Mitch","lastName":"Guidera","street":"0 Dorton Junction","postalCode":"35210","city":"Birmingham","state":"AL","phoneNumber":"205-224-0177"}, +{"id":652,"firstName":"Dorey","lastName":"Marks","street":"81562 Maywood Crossing","postalCode":"71208","city":"Monroe","state":"LA","phoneNumber":"318-492-5487"}, +{"id":653,"firstName":"Pavla","lastName":"Conneely","street":"4007 Mifflin Lane","postalCode":"20456","city":"Washington","state":"DC"}, +{"id":654,"firstName":"Kym","lastName":"Gecks","street":"72638 Namekagon Plaza","postalCode":"61656","city":"Peoria","state":"IL","email":"kgecksi5@nature.com"}, +{"id":655,"firstName":"Prudence","lastName":"Peert","street":"91 Tomscot Parkway","postalCode":"32209","city":"Jacksonville","state":"FL","phoneNumber":"904-277-2945","email":"ppeerti6@usa.gov"}, +{"id":656,"firstName":"Elston","lastName":"Paolo","street":"4 Jenna Crossing","postalCode":"95155","city":"San Jose","state":"CA","email":"epaoloi7@umn.edu"}, +{"id":657,"firstName":"Indira","lastName":"Splaven","street":"8853 Vermont Drive","postalCode":"38188","city":"Memphis","state":"TN","phoneNumber":"901-706-3908","email":"isplaveni8@fda.gov"}, +{"id":658,"firstName":"Paul","lastName":"Mc Meekin","street":"56 Vidon Drive","postalCode":"08695","city":"Trenton","state":"NJ","phoneNumber":"609-361-1580"}, +{"id":659,"firstName":"Hadley","lastName":"Windmill","street":"31384 Evergreen Point","postalCode":"16550","city":"Erie","state":"PA","email":"hwindmillia@yale.edu"}, +{"id":660,"firstName":"Jay","lastName":"Yesichev","street":"675 Starling Pass","postalCode":"89150","city":"Las Vegas","state":"NV"}, +{"id":661,"firstName":"Ranna","lastName":"Dowtry","street":"303 Nevada Pass","postalCode":"48550","city":"Flint","state":"MI","phoneNumber":"810-164-4521","email":"rdowtryic@amazon.co.jp"}, +{"id":662,"firstName":"Annabel","lastName":"Pellamont","street":"277 Merrick Crossing","postalCode":"36605","city":"Mobile","state":"AL","phoneNumber":"251-595-3594","email":"apellamontid@reverbnation.com"}, +{"id":663,"firstName":"Kaitlynn","lastName":"Tracey","street":"612 Magdeline Road","postalCode":"97296","city":"Portland","state":"OR","email":"ktraceyie@ycombinator.com"}, +{"id":664,"firstName":"Matthiew","lastName":"Jills","street":"65 Walton Circle","postalCode":"93750","city":"Fresno","state":"CA","email":"mjillsif@addthis.com"}, +{"id":665,"firstName":"Bartlet","lastName":"Roe","street":"51573 Mandrake Park","postalCode":"02109","city":"Boston","state":"MA","phoneNumber":"617-460-5377","email":"broeig@nasa.gov"}, +{"id":666,"firstName":"Ban","lastName":"Knotton","street":"174 Westridge Parkway","postalCode":"32405","city":"Panama City","state":"FL","phoneNumber":"850-939-6502","email":"bknottonih@businesswire.com"}, +{"id":667,"firstName":"Cordelie","lastName":"O'Dee","street":"1733 Linden Avenue","postalCode":"80940","city":"Colorado Springs","state":"CO","phoneNumber":"719-966-3402","email":"codeeii@amazonaws.com"}, +{"id":668,"firstName":"Hardy","lastName":"Lob","street":"4 Bultman Road","postalCode":"75074","city":"Plano","state":"TX","email":"hlobij@dropbox.com"}, +{"id":669,"firstName":"Rosabelle","lastName":"Tonner","street":"1 Holy Cross Trail","postalCode":"36670","city":"Mobile","state":"AL","phoneNumber":"251-606-9437","email":"rtonnerik@google.ru"}, +{"id":670,"firstName":"Bernardina","lastName":"Mardy","street":"65 Myrtle Center","postalCode":"96845","city":"Honolulu","state":"HI","email":"bmardyil@wordpress.com"}, +{"id":671,"firstName":"Hynda","lastName":"Soldner","street":"88 Hazelcrest Drive","postalCode":"55470","city":"Minneapolis","state":"MN","email":"hsoldnerim@webeden.co.uk"}, +{"id":672,"firstName":"Quinn","lastName":"Templeton","street":"5 Village Way","postalCode":"19131","city":"Philadelphia","state":"PA","email":"qtempletonin@diigo.com"}, +{"id":673,"firstName":"Torrence","lastName":"Askwith","street":"1 Namekagon Point","postalCode":"31410","city":"Savannah","state":"GA","phoneNumber":"912-552-5239","email":"taskwithio@people.com.cn"}, +{"id":674,"firstName":"Bonnie","lastName":"Robilliard","street":"731 Johnson Lane","postalCode":"24515","city":"Lynchburg","state":"VA","phoneNumber":"434-382-5496"}, +{"id":675,"firstName":"Daphna","lastName":"D'Souza","street":"1549 Loftsgordon Center","postalCode":"91406","city":"Van Nuys","state":"CA","phoneNumber":"818-773-9088"}, +{"id":676,"firstName":"Palm","lastName":"Gandrich","street":"9 4th Pass","postalCode":"87121","city":"Albuquerque","state":"NM","phoneNumber":"505-815-5555"}, +{"id":677,"firstName":"Danie","lastName":"Gaydon","street":"382 Bayside Junction","postalCode":"55441","city":"Minneapolis","state":"MN","phoneNumber":"952-744-9400","email":"dgaydonis@seesaa.net"}, +{"id":678,"firstName":"Tabatha","lastName":"Caddock","street":"3858 Mccormick Road","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-996-7653","email":"tcaddockit@gizmodo.com"}, +{"id":679,"firstName":"Sergent","lastName":"Cade","street":"7 Riverside Crossing","postalCode":"13505","city":"Utica","state":"NY","email":"scadeiu@google.co.uk"}, +{"id":680,"firstName":"Shina","lastName":"Dumphry","street":"483 Del Mar Terrace","postalCode":"73109","city":"Oklahoma City","state":"OK","phoneNumber":"405-261-3364","email":"sdumphryiv@mediafire.com"}, +{"id":681,"firstName":"Aaron","lastName":"O'Neal","street":"669 Crowley Road","postalCode":"87140","city":"Albuquerque","state":"NM","phoneNumber":"505-451-6591","email":"aonealiw@npr.org"}, +{"id":682,"firstName":"Cynthea","lastName":"Wippermann","street":"109 Kinsman Parkway","postalCode":"06606","city":"Bridgeport","state":"CT","phoneNumber":"203-799-4552"}, +{"id":683,"firstName":"Stoddard","lastName":"Hullett","street":"06200 Mesta Park","postalCode":"78769","city":"Austin","state":"TX","phoneNumber":"512-190-7003"}, +{"id":684,"firstName":"Margit","lastName":"Comusso","street":"54 Springs Center","postalCode":"33737","city":"Saint Petersburg","state":"FL","phoneNumber":"727-144-3743","email":"mcomussoiz@drupal.org"}, +{"id":685,"firstName":"Dur","lastName":"Manns","street":"464 Park Meadow Road","postalCode":"90015","city":"Los Angeles","state":"CA","email":"dmannsj0@nymag.com"}, +{"id":686,"firstName":"Hollie","lastName":"Aldersey","street":"12195 Mallory Court","postalCode":"21405","city":"Annapolis","state":"MD","email":"halderseyj1@businessinsider.com"}, +{"id":687,"firstName":"Ralina","lastName":"Crepin","street":"13313 Clyde Gallagher Way","postalCode":"78285","city":"San Antonio","state":"TX"}, +{"id":688,"firstName":"Lyell","lastName":"Graveston","street":"20 Talisman Crossing","postalCode":"27157","city":"Winston Salem","state":"NC","phoneNumber":"336-638-3366","email":"lgravestonj3@webmd.com"}, +{"id":689,"firstName":"Anny","lastName":"Potell","street":"0 Ludington Circle","postalCode":"32803","city":"Orlando","state":"FL","email":"apotellj4@microsoft.com"}, +{"id":690,"firstName":"Harriot","lastName":"Klimpke","street":"8 Southridge Alley","postalCode":"22047","city":"Falls Church","state":"VA","phoneNumber":"571-470-2688","email":"hklimpkej5@slashdot.org"}, +{"id":691,"firstName":"Stacia","lastName":"Stainsby","street":"78 Mcbride Avenue","postalCode":"46862","city":"Fort Wayne","state":"IN"}, +{"id":692,"firstName":"Zacharia","lastName":"Willmont","street":"24 Everett Center","postalCode":"73135","city":"Oklahoma City","state":"OK","phoneNumber":"405-167-0584","email":"zwillmontj7@tuttocitta.it"}, +{"id":693,"firstName":"Dorelia","lastName":"Flexman","street":"0 Hauk Crossing","postalCode":"95298","city":"Stockton","state":"CA","phoneNumber":"209-759-3308"}, +{"id":694,"firstName":"Rubi","lastName":"Karran","street":"586 Eggendart Pass","postalCode":"64082","city":"Lees Summit","state":"MO","email":"rkarranj9@yahoo.com"}, +{"id":695,"firstName":"Edlin","lastName":"Davidsen","street":"5646 Arrowood Park","postalCode":"20591","city":"Washington","state":"DC","phoneNumber":"202-800-5817","email":"edavidsenja@purevolume.com"}, +{"id":696,"firstName":"Oralle","lastName":"Coneybeare","street":"0 Lakewood Parkway","postalCode":"08695","city":"Trenton","state":"NJ","email":"oconeybearejb@booking.com"}, +{"id":697,"firstName":"Scotti","lastName":"Cereceres","street":"2 Golf Hill","postalCode":"38119","city":"Memphis","state":"TN"}, +{"id":698,"firstName":"Hermione","lastName":"Mingotti","street":"14 Shoshone Alley","postalCode":"44511","city":"Youngstown","state":"OH","phoneNumber":"330-505-0585"}, +{"id":699,"firstName":"Janka","lastName":"Merredy","street":"877 Reinke Park","postalCode":"45233","city":"Cincinnati","state":"OH","email":"jmerredyje@furl.net"}, +{"id":700,"firstName":"Phillida","lastName":"Gannicleff","street":"48778 Sheridan Center","postalCode":"99210","city":"Spokane","state":"WA","email":"pgannicleffjf@github.io"}, +{"id":701,"firstName":"Bryn","lastName":"Shury","street":"82609 Surrey Road","postalCode":"78240","city":"San Antonio","state":"TX","phoneNumber":"210-361-9404","email":"bshuryjg@arstechnica.com"}, +{"id":702,"firstName":"Bobbe","lastName":"Yurocjhin","street":"54904 Southridge Parkway","postalCode":"33633","city":"Tampa","state":"FL","email":"byurocjhinjh@tumblr.com"}, +{"id":703,"firstName":"Noell","lastName":"Trewman","street":"63703 Fair Oaks Point","postalCode":"91520","city":"Burbank","state":"CA"}, +{"id":704,"firstName":"Adelind","lastName":"Marr","street":"68 Lotheville Park","postalCode":"02912","city":"Providence","state":"RI","email":"amarrjj@hexun.com"}, +{"id":705,"firstName":"Arabelle","lastName":"Oultram","street":"7927 Waxwing Place","postalCode":"77085","city":"Houston","state":"TX","email":"aoultramjk@diigo.com"}, +{"id":706,"firstName":"Derril","lastName":"Whylie","street":"1 Summerview Terrace","postalCode":"91606","city":"North Hollywood","state":"CA","phoneNumber":"323-244-3266","email":"dwhyliejl@auda.org.au"}, +{"id":707,"firstName":"Isadore","lastName":"Airth","street":"08897 Hauk Court","postalCode":"73104","city":"Oklahoma City","state":"OK","phoneNumber":"405-488-1807"}, +{"id":708,"firstName":"Barbara","lastName":"Feast","street":"420 Bayside Circle","postalCode":"63136","city":"Saint Louis","state":"MO","phoneNumber":"314-919-9094"}, +{"id":709,"firstName":"Engracia","lastName":"Laxtonne","street":"189 Oneill Center","postalCode":"22047","city":"Falls Church","state":"VA","email":"elaxtonnejo@addthis.com"}, +{"id":710,"firstName":"Dorice","lastName":"Dearle","street":"655 Union Way","postalCode":"47705","city":"Evansville","state":"IN","phoneNumber":"812-812-8795","email":"ddearlejp@mail.ru"}, +{"id":711,"firstName":"Crissie","lastName":"Leall","street":"1 1st Drive","postalCode":"36689","city":"Mobile","state":"AL","phoneNumber":"251-112-1542","email":"clealljq@nyu.edu"}, +{"id":712,"firstName":"Rica","lastName":"Wilshin","street":"0 Miller Way","postalCode":"79705","city":"Midland","state":"TX","phoneNumber":"432-935-1867"}, +{"id":713,"firstName":"Annie","lastName":"Thorns","street":"297 Thompson Park","postalCode":"32412","city":"Panama City","state":"FL","phoneNumber":"850-594-4049"}, +{"id":714,"firstName":"Lilah","lastName":"Beining","street":"1566 American Ash Avenue","postalCode":"25326","city":"Charleston","state":"WV","email":"lbeiningjt@mayoclinic.com"}, +{"id":715,"firstName":"Leeann","lastName":"Dorant","street":"5530 Mcguire Alley","postalCode":"93407","city":"San Luis Obispo","state":"CA","email":"ldorantju@homestead.com"}, +{"id":716,"firstName":"Elinor","lastName":"James","street":"2 Waxwing Terrace","postalCode":"88579","city":"El Paso","state":"TX","email":"ejamesjv@europa.eu"}, +{"id":717,"firstName":"Novelia","lastName":"Durman","street":"7 Hermina Junction","postalCode":"77050","city":"Houston","state":"TX","email":"ndurmanjw@fc2.com"}, +{"id":718,"firstName":"Sharai","lastName":"Pickervance","street":"739 Lien Junction","postalCode":"73167","city":"Oklahoma City","state":"OK","email":"spickervancejx@independent.co.uk"}, +{"id":719,"firstName":"Gilberte","lastName":"Stilling","street":"29950 Annamark Trail","postalCode":"89178","city":"Las Vegas","state":"NV","phoneNumber":"702-604-4240","email":"gstillingjy@feedburner.com"}, +{"id":720,"firstName":"Rosabelle","lastName":"Guinan","street":"13078 Sutherland Center","postalCode":"83757","city":"Boise","state":"ID","phoneNumber":"208-792-6705"}, +{"id":721,"firstName":"Karin","lastName":"Ackermann","street":"3 Susan Hill","postalCode":"48919","city":"Lansing","state":"MI","phoneNumber":"517-579-7811","email":"kackermannk0@csmonitor.com"}, +{"id":722,"firstName":"Reeta","lastName":"Attwell","street":"96 Alpine Junction","postalCode":"66622","city":"Topeka","state":"KS"}, +{"id":723,"firstName":"Dru","lastName":"Linck","street":"37 Wayridge Place","postalCode":"49505","city":"Grand Rapids","state":"MI","phoneNumber":"616-197-1837"}, +{"id":724,"firstName":"Frances","lastName":"Collingridge","street":"273 Ludington Crossing","postalCode":"77255","city":"Houston","state":"TX"}, +{"id":725,"firstName":"Wilmette","lastName":"Haimes","street":"8408 Shopko Circle","postalCode":"98907","city":"Yakima","state":"WA","phoneNumber":"509-821-5948"}, +{"id":726,"firstName":"Isahella","lastName":"Rubrow","street":"25 Melby Crossing","postalCode":"59105","city":"Billings","state":"MT","email":"irubrowk5@edublogs.org"}, +{"id":727,"firstName":"Walden","lastName":"Sappson","street":"1 3rd Hill","postalCode":"60435","city":"Joliet","state":"IL","email":"wsappsonk6@ameblo.jp"}, +{"id":728,"firstName":"Blondie","lastName":"Godehard.sf","street":"4606 Caliangt Circle","postalCode":"20709","city":"Laurel","state":"MD"}, +{"id":729,"firstName":"Dion","lastName":"Wingeatt","street":"098 Ridgeview Alley","postalCode":"78769","city":"Austin","state":"TX","phoneNumber":"512-948-4113","email":"dwingeattk8@clickbank.net"}, +{"id":730,"firstName":"Antoni","lastName":"Tibbles","street":"9 Muir Court","postalCode":"25313","city":"Charleston","state":"WV","phoneNumber":"304-298-6149","email":"atibblesk9@usa.gov"}, +{"id":731,"firstName":"Quinn","lastName":"McKevin","street":"063 Washington Parkway","postalCode":"55470","city":"Minneapolis","state":"MN","phoneNumber":"612-140-1997"}, +{"id":732,"firstName":"Rita","lastName":"Hallam","street":"4 Chive Court","postalCode":"85025","city":"Phoenix","state":"AZ","email":"rhallamkb@list-manage.com"}, +{"id":733,"firstName":"Cliff","lastName":"McCrum","street":"30841 Scoville Street","postalCode":"38150","city":"Memphis","state":"TN","phoneNumber":"901-983-7713","email":"cmccrumkc@yellowpages.com"}, +{"id":734,"firstName":"Allyson","lastName":"Petkov","street":"057 Grover Trail","postalCode":"55487","city":"Minneapolis","state":"MN","phoneNumber":"612-706-7185"}, +{"id":735,"firstName":"Tanney","lastName":"Cicccitti","street":"84959 Calypso Way","postalCode":"66629","city":"Topeka","state":"KS","phoneNumber":"785-516-0753","email":"tcicccittike@netscape.com"}, +{"id":736,"firstName":"Brendin","lastName":"Behnke","street":"3057 Browning Parkway","postalCode":"38181","city":"Memphis","state":"TN","email":"bbehnkekf@answers.com"}, +{"id":737,"firstName":"Sydelle","lastName":"Lestor","street":"6 Old Shore Way","postalCode":"73167","city":"Oklahoma City","state":"OK"}, +{"id":738,"firstName":"Nilson","lastName":"Nelthorp","street":"5 Gerald Trail","postalCode":"60567","city":"Naperville","state":"IL","phoneNumber":"630-718-5304","email":"nnelthorpkh@scribd.com"}, +{"id":739,"firstName":"Randy","lastName":"Boller","street":"64 Roth Junction","postalCode":"95354","city":"Modesto","state":"CA","phoneNumber":"209-795-8532","email":"rbollerki@nature.com"}, +{"id":740,"firstName":"Vicki","lastName":"De Vaan","street":"08 Mariners Cove Terrace","postalCode":"62776","city":"Springfield","state":"IL","email":"vdevaankj@disqus.com"}, +{"id":741,"firstName":"Romain","lastName":"Castri","street":"7 Atwood Road","postalCode":"02905","city":"Providence","state":"RI","phoneNumber":"401-865-9950","email":"rcastrikk@google.com.br"}, +{"id":742,"firstName":"Adlai","lastName":"Keppel","street":"6 Farragut Circle","postalCode":"76705","city":"Waco","state":"TX","phoneNumber":"254-852-6322"}, +{"id":743,"firstName":"Arlyne","lastName":"Whalley","street":"6 Esker Terrace","postalCode":"83727","city":"Boise","state":"ID","email":"awhalleykm@amazon.co.uk"}, +{"id":744,"firstName":"Alistair","lastName":"Jennins","street":"6 Loeprich Center","postalCode":"21684","city":"Ridgely","state":"MD","phoneNumber":"410-494-2201","email":"ajenninskn@sciencedaily.com"}, +{"id":745,"firstName":"Farr","lastName":"Steer","street":"8569 Eliot Lane","postalCode":"93381","city":"Bakersfield","state":"CA","phoneNumber":"661-416-1609","email":"fsteerko@usgs.gov"}, +{"id":746,"firstName":"Analise","lastName":"Balasini","street":"8901 Lyons Parkway","postalCode":"23242","city":"Richmond","state":"VA","email":"abalasinikp@imgur.com"}, +{"id":747,"firstName":"Gilbert","lastName":"Lockton","street":"3 Leroy Court","postalCode":"49018","city":"Battle Creek","state":"MI","email":"glocktonkq@google.nl"}, +{"id":748,"firstName":"Hamlen","lastName":"Massie","street":"469 Mallory Drive","postalCode":"77250","city":"Houston","state":"TX","email":"hmassiekr@admin.ch"}, +{"id":749,"firstName":"Ebony","lastName":"Loker","street":"21173 Raven Point","postalCode":"21265","city":"Baltimore","state":"MD"}, +{"id":750,"firstName":"Kristina","lastName":"Deeble","street":"479 Warner Park","postalCode":"92013","city":"Carlsbad","state":"CA","phoneNumber":"760-377-7198","email":"kdeeblekt@ezinearticles.com"}, +{"id":751,"firstName":"Jabez","lastName":"Mummery","street":"1 East Point","postalCode":"52809","city":"Davenport","state":"IA","email":"jmummeryku@sfgate.com"}, +{"id":752,"firstName":"Perrine","lastName":"Aldwinckle","street":"98 Montana Avenue","postalCode":"85030","city":"Phoenix","state":"AZ","phoneNumber":"602-224-2810","email":"paldwincklekv@eepurl.com"}, +{"id":753,"firstName":"Humfried","lastName":"Pendleton","street":"843 Swallow Park","postalCode":"89115","city":"Las Vegas","state":"NV","phoneNumber":"702-524-6047"}, +{"id":754,"firstName":"Dario","lastName":"Chesshire","street":"638 Westport Place","postalCode":"96845","city":"Honolulu","state":"HI","phoneNumber":"808-718-1386"}, +{"id":755,"firstName":"Cherianne","lastName":"Hearfield","street":"15 Quincy Street","postalCode":"14233","city":"Buffalo","state":"NY","email":"chearfieldky@technorati.com"}, +{"id":756,"firstName":"Jemima","lastName":"Oxnam","street":"22276 Maple Street","postalCode":"92165","city":"San Diego","state":"CA","email":"joxnamkz@addtoany.com"}, +{"id":757,"firstName":"Tedmund","lastName":"Chandler","street":"81 Katie Point","postalCode":"44310","city":"Akron","state":"OH","phoneNumber":"330-336-2279","email":"tchandlerl0@webeden.co.uk"}, +{"id":758,"firstName":"Tobie","lastName":"Risley","street":"82996 Reindahl Junction","postalCode":"17140","city":"Harrisburg","state":"PA","phoneNumber":"717-272-9110","email":"trisleyl1@youtu.be"}, +{"id":759,"firstName":"Tomi","lastName":"Crevagh","street":"91791 Buhler Park","postalCode":"33715","city":"Saint Petersburg","state":"FL"}, +{"id":760,"firstName":"Luce","lastName":"Gwatkin","street":"424 Lunder Crossing","postalCode":"31416","city":"Savannah","state":"GA"}, +{"id":761,"firstName":"Vinita","lastName":"Hannon","street":"90 Claremont Trail","postalCode":"39236","city":"Jackson","state":"MS"}, +{"id":762,"firstName":"Ruby","lastName":"O'Cosgra","street":"304 Dayton Avenue","postalCode":"07188","city":"Newark","state":"NJ"}, +{"id":763,"firstName":"Amandi","lastName":"Vasiltsov","street":"98188 Killdeer Alley","postalCode":"93399","city":"Bakersfield","state":"CA","email":"avasiltsovl6@smh.com.au"}, +{"id":764,"firstName":"Juliana","lastName":"Goldspink","street":"93 Maryland Terrace","postalCode":"06705","city":"Waterbury","state":"CT","email":"jgoldspinkl7@guardian.co.uk"}, +{"id":765,"firstName":"Giorgi","lastName":"Yakovl","street":"24240 Shasta Drive","postalCode":"46814","city":"Fort Wayne","state":"IN","phoneNumber":"260-754-5907"}, +{"id":766,"firstName":"Aleksandr","lastName":"Justun","street":"06 Fulton Terrace","postalCode":"85025","city":"Phoenix","state":"AZ"}, +{"id":767,"firstName":"Cornela","lastName":"Grindell","street":"1 Hazelcrest Lane","postalCode":"53285","city":"Milwaukee","state":"WI"}, +{"id":768,"firstName":"Liv","lastName":"Madrell","street":"623 Cordelia Terrace","postalCode":"17105","city":"Harrisburg","state":"PA","email":"lmadrelllb@1688.com"}, +{"id":769,"firstName":"Konstance","lastName":"Rosebotham","street":"8930 Utah Terrace","postalCode":"20029","city":"Washington","state":"DC","email":"krosebothamlc@studiopress.com"}, +{"id":770,"firstName":"Theo","lastName":"Scotland","street":"454 Hintze Park","postalCode":"45238","city":"Cincinnati","state":"OH"}, +{"id":771,"firstName":"Trefor","lastName":"Rein","street":"9 Redwing Plaza","postalCode":"22184","city":"Vienna","state":"VA","email":"treinle@barnesandnoble.com"}, +{"id":772,"firstName":"Angelina","lastName":"Bromehead","street":"62477 Walton Circle","postalCode":"14683","city":"Rochester","state":"NY","email":"abromeheadlf@php.net"}, +{"id":773,"firstName":"Thornie","lastName":"Ivanishin","street":"0 Sunbrook Court","postalCode":"34665","city":"Pinellas Park","state":"FL","email":"tivanishinlg@aol.com"}, +{"id":774,"firstName":"Dyana","lastName":"McNickle","street":"2696 Lakewood Gardens Pass","postalCode":"20456","city":"Washington","state":"DC","phoneNumber":"202-653-8740"}, +{"id":775,"firstName":"Humfried","lastName":"Suero","street":"643 Pearson Junction","postalCode":"28410","city":"Wilmington","state":"NC"}, +{"id":776,"firstName":"Jessamine","lastName":"Stockings","street":"739 Moose Street","postalCode":"94137","city":"San Francisco","state":"CA","phoneNumber":"415-641-0091","email":"jstockingslj@skype.com"}, +{"id":777,"firstName":"Laryssa","lastName":"Grahl","street":"0538 Bultman Point","postalCode":"81505","city":"Grand Junction","state":"CO"}, +{"id":778,"firstName":"Susan","lastName":"Stonnell","street":"7 Dennis Parkway","postalCode":"67215","city":"Wichita","state":"KS","phoneNumber":"316-966-3243","email":"sstonnellll@nps.gov"}, +{"id":779,"firstName":"Melinde","lastName":"Segoe","street":"9 Dottie Place","postalCode":"19125","city":"Philadelphia","state":"PA","phoneNumber":"215-119-3801"}, +{"id":780,"firstName":"Skip","lastName":"Sedgebeer","street":"1 Eliot Drive","postalCode":"20005","city":"Washington","state":"DC","email":"ssedgebeerln@blogtalkradio.com"}, +{"id":781,"firstName":"Annabel","lastName":"Schusterl","street":"6094 Talisman Lane","postalCode":"68510","city":"Lincoln","state":"NE","phoneNumber":"402-355-7934","email":"aschusterllo@cargocollective.com"}, +{"id":782,"firstName":"Emiline","lastName":"Whittlesey","street":"5 Claremont Lane","postalCode":"77040","city":"Houston","state":"TX","phoneNumber":"832-835-1321","email":"ewhittleseylp@geocities.com"}, +{"id":783,"firstName":"Frasquito","lastName":"Loukes","street":"47 Merchant Pass","postalCode":"27499","city":"Greensboro","state":"NC","phoneNumber":"336-265-5719","email":"floukeslq@google.it"}, +{"id":784,"firstName":"Jerald","lastName":"Fairholm","street":"5939 Mariners Cove Road","postalCode":"76598","city":"Gatesville","state":"TX","email":"jfairholmlr@smh.com.au"}, +{"id":785,"firstName":"Melisent","lastName":"Strange","street":"50 Glendale Trail","postalCode":"10606","city":"White Plains","state":"NY"}, +{"id":786,"firstName":"Aaron","lastName":"Mixter","street":"14347 Darwin Place","postalCode":"33124","city":"Miami","state":"FL","phoneNumber":"786-244-1856","email":"amixterlt@dmoz.org"}, +{"id":787,"firstName":"Margy","lastName":"Falla","street":"5 Caliangt Trail","postalCode":"40287","city":"Louisville","state":"KY","email":"mfallalu@booking.com"}, +{"id":788,"firstName":"Malinde","lastName":"Ashdown","street":"97234 Anniversary Hill","postalCode":"06152","city":"Hartford","state":"CT","phoneNumber":"860-140-7408","email":"mashdownlv@economist.com"}, +{"id":789,"firstName":"Carolynn","lastName":"Dulany","street":"33 Melby Road","postalCode":"74116","city":"Tulsa","state":"OK","phoneNumber":"918-140-7039","email":"cdulanylw@yelp.com"}, +{"id":790,"firstName":"Kissee","lastName":"Escale","street":"1470 Hanson Parkway","postalCode":"92812","city":"Anaheim","state":"CA","phoneNumber":"714-466-6376"}, +{"id":791,"firstName":"Rebeka","lastName":"Moralee","street":"898 Oak Street","postalCode":"34108","city":"Naples","state":"FL","email":"rmoraleely@shutterfly.com"}, +{"id":792,"firstName":"Cort","lastName":"Arter","street":"35039 Menomonie Way","postalCode":"50936","city":"Des Moines","state":"IA","email":"carterlz@surveymonkey.com"}, +{"id":793,"firstName":"Kirsteni","lastName":"Heady","street":"473 Lawn Street","postalCode":"32092","city":"Saint Augustine","state":"FL","phoneNumber":"904-424-3526","email":"kheadym0@usda.gov"}, +{"id":794,"firstName":"Ettie","lastName":"Overil","street":"1085 Waubesa Lane","postalCode":"18105","city":"Allentown","state":"PA"}, +{"id":795,"firstName":"Evey","lastName":"Tesimon","street":"9 Cordelia Place","postalCode":"55127","city":"Saint Paul","state":"MN"}, +{"id":796,"firstName":"Hersh","lastName":"Lebond","street":"5265 Bartelt Park","postalCode":"34282","city":"Bradenton","state":"FL","phoneNumber":"941-114-7090"}, +{"id":797,"firstName":"Hendrika","lastName":"Govan","street":"27747 La Follette Avenue","postalCode":"21229","city":"Baltimore","state":"MD","email":"hgovanm4@cam.ac.uk"}, +{"id":798,"firstName":"Renado","lastName":"Hambly","street":"5211 Schmedeman Drive","postalCode":"68105","city":"Omaha","state":"NE","phoneNumber":"402-183-0376","email":"rhamblym5@netlog.com"}, +{"id":799,"firstName":"Brewer","lastName":"Boyn","street":"3161 Novick Lane","postalCode":"77055","city":"Houston","state":"TX","email":"bboynm6@google.it"}, +{"id":800,"firstName":"Patrick","lastName":"Speck","street":"57052 Ronald Regan Way","postalCode":"30306","city":"Atlanta","state":"GA","phoneNumber":"770-764-6971","email":"pspeckm7@live.com"}, +{"id":801,"firstName":"Skipper","lastName":"Conybear","street":"75 Autumn Leaf Alley","postalCode":"79968","city":"El Paso","state":"TX","phoneNumber":"915-705-5594","email":"sconybearm8@jimdo.com"}, +{"id":802,"firstName":"Elmore","lastName":"Quilty","street":"027 Warbler Court","postalCode":"35210","city":"Birmingham","state":"AL","email":"equiltym9@ebay.co.uk"}, +{"id":803,"firstName":"Estella","lastName":"Jorck","street":"52695 Holy Cross Trail","postalCode":"47134","city":"Jeffersonville","state":"IN","email":"ejorckma@bluehost.com"}, +{"id":804,"firstName":"Scotti","lastName":"Goodale","street":"7551 Dottie Pass","postalCode":"77713","city":"Beaumont","state":"TX","email":"sgoodalemb@nba.com"}, +{"id":805,"firstName":"Catha","lastName":"Shekle","street":"38839 Derek Terrace","postalCode":"62718","city":"Springfield","state":"IL","email":"csheklemc@tmall.com"}, +{"id":806,"firstName":"Clemens","lastName":"Chuter","street":"015 Charing Cross Pass","postalCode":"30306","city":"Atlanta","state":"GA"}, +{"id":807,"firstName":"Kiley","lastName":"Vasiltsov","street":"8 Reindahl Hill","postalCode":"33432","city":"Boca Raton","state":"FL","email":"kvasiltsovme@google.nl"}, +{"id":808,"firstName":"Korrie","lastName":"McGauhy","street":"188 Golf Lane","postalCode":"89110","city":"Las Vegas","state":"NV","phoneNumber":"702-647-1620","email":"kmcgauhymf@goodreads.com"}, +{"id":809,"firstName":"Giustina","lastName":"Hentze","street":"62244 Roth Way","postalCode":"48604","city":"Saginaw","state":"MI","email":"ghentzemg@pcworld.com"}, +{"id":810,"firstName":"Emilia","lastName":"Virgoe","street":"13910 Alpine Lane","postalCode":"33994","city":"Fort Myers","state":"FL","phoneNumber":"239-993-2041","email":"evirgoemh@mediafire.com"}, +{"id":811,"firstName":"Gordan","lastName":"Trimming","street":"38168 Transport Avenue","postalCode":"38131","city":"Memphis","state":"TN","email":"gtrimmingmi@spiegel.de"}, +{"id":812,"firstName":"Tadeo","lastName":"Vannoort","street":"41476 Pond Alley","postalCode":"20851","city":"Rockville","state":"MD","phoneNumber":"240-432-6489","email":"tvannoortmj@privacy.gov.au"}, +{"id":813,"firstName":"Joseito","lastName":"Viant","street":"1390 Kropf Court","postalCode":"04109","city":"Portland","state":"ME"}, +{"id":814,"firstName":"Blake","lastName":"Tailby","street":"5 Bultman Terrace","postalCode":"31914","city":"Columbus","state":"GA"}, +{"id":815,"firstName":"Cynthie","lastName":"Victor","street":"64 Hoard Avenue","postalCode":"46221","city":"Indianapolis","state":"IN","phoneNumber":"317-836-2511","email":"cvictormm@bizjournals.com"}, +{"id":816,"firstName":"Kristoforo","lastName":"Luckman","street":"019 Ohio Avenue","postalCode":"58505","city":"Bismarck","state":"ND","phoneNumber":"701-921-3472"}, +{"id":817,"firstName":"Celinka","lastName":"Brakewell","street":"5702 Tennessee Pass","postalCode":"92612","city":"Irvine","state":"CA","phoneNumber":"714-584-5599","email":"cbrakewellmo@house.gov"}, +{"id":818,"firstName":"Analiese","lastName":"Debenham","street":"7 Straubel Pass","postalCode":"31704","city":"Albany","state":"GA","phoneNumber":"229-600-4384","email":"adebenhammp@dell.com"}, +{"id":819,"firstName":"Sebastiano","lastName":"Eskriett","street":"0 Northridge Pass","postalCode":"34114","city":"Naples","state":"FL","phoneNumber":"239-651-1326","email":"seskriettmq@berkeley.edu"}, +{"id":820,"firstName":"Jermaine","lastName":"Donisthorpe","street":"69319 Hollow Ridge Park","postalCode":"62794","city":"Springfield","state":"IL","phoneNumber":"217-510-3030","email":"jdonisthorpemr@istockphoto.com"}, +{"id":821,"firstName":"Tera","lastName":"Smalecombe","street":"646 Oakridge Avenue","postalCode":"43699","city":"Toledo","state":"OH","email":"tsmalecombems@tripod.com"}, +{"id":822,"firstName":"Issie","lastName":"Cohane","street":"79078 Fair Oaks Circle","postalCode":"40233","city":"Louisville","state":"KY","email":"icohanemt@wired.com"}, +{"id":823,"firstName":"Nanete","lastName":"Erb","street":"02 Truax Place","postalCode":"88563","city":"El Paso","state":"TX","phoneNumber":"915-234-2792"}, +{"id":824,"firstName":"Benetta","lastName":"Roger","street":"822 Fallview Alley","postalCode":"33625","city":"Tampa","state":"FL","phoneNumber":"813-715-8911","email":"brogermv@ca.gov"}, +{"id":825,"firstName":"Sascha","lastName":"Hillyatt","street":"06 Fisk Plaza","postalCode":"11407","city":"Jamaica","state":"NY"}, +{"id":826,"firstName":"Britt","lastName":"Gilderoy","street":"64312 Delaware Place","postalCode":"89135","city":"Las Vegas","state":"NV"}, +{"id":827,"firstName":"Sterne","lastName":"Frissell","street":"69121 Sycamore Way","postalCode":"06912","city":"Stamford","state":"CT"}, +{"id":828,"firstName":"Lonny","lastName":"Petersen","street":"6 Golf Course Crossing","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-245-3289","email":"lpetersenmz@msu.edu"}, +{"id":829,"firstName":"Maridel","lastName":"Clunie","street":"0312 Dryden Street","postalCode":"80328","city":"Boulder","state":"CO","phoneNumber":"303-848-1116","email":"mclunien0@china.com.cn"}, +{"id":830,"firstName":"Annabal","lastName":"Pruckner","street":"98481 Anhalt Pass","postalCode":"30340","city":"Atlanta","state":"GA","email":"aprucknern1@bandcamp.com"}, +{"id":831,"firstName":"Carin","lastName":"Ambrois","street":"7982 Vahlen Road","postalCode":"85010","city":"Phoenix","state":"AZ"}, +{"id":832,"firstName":"Consuela","lastName":"Grubey","street":"1 Lillian Circle","postalCode":"89714","city":"Carson City","state":"NV","email":"cgrubeyn3@google.pl"}, +{"id":833,"firstName":"Friedrick","lastName":"Ventom","street":"703 Almo Crossing","postalCode":"43215","city":"Columbus","state":"OH"}, +{"id":834,"firstName":"Shalom","lastName":"Rosten","street":"4460 Parkside Road","postalCode":"37215","city":"Nashville","state":"TN","email":"srostenn5@e-recht24.de"}, +{"id":835,"firstName":"Sofia","lastName":"Pottie","street":"89885 Golf Course Junction","postalCode":"27635","city":"Raleigh","state":"NC","email":"spottien6@weather.com"}, +{"id":836,"firstName":"Ed","lastName":"Cecely","street":"38576 Gina Trail","postalCode":"85305","city":"Glendale","state":"AZ","email":"ececelyn7@friendfeed.com"}, +{"id":837,"firstName":"Ruthann","lastName":"Bignold","street":"202 Monterey Alley","postalCode":"19104","city":"Philadelphia","state":"PA","phoneNumber":"610-892-3949"}, +{"id":838,"firstName":"Vonnie","lastName":"Leeming","street":"5 Farmco Center","postalCode":"18706","city":"Wilkes Barre","state":"PA"}, +{"id":839,"firstName":"Diandra","lastName":"Gredden","street":"68178 Parkside Hill","postalCode":"89120","city":"Las Vegas","state":"NV","phoneNumber":"702-952-4026"}, +{"id":840,"firstName":"Donny","lastName":"Bruckent","street":"6 Dapin Way","postalCode":"98127","city":"Seattle","state":"WA","email":"dbruckentnb@stumbleupon.com"}, +{"id":841,"firstName":"Mill","lastName":"Finlay","street":"9 Meadow Valley Terrace","postalCode":"94405","city":"San Mateo","state":"CA","email":"mfinlaync@hibu.com"}, +{"id":842,"firstName":"Garv","lastName":"Feldberger","street":"5916 Marquette Lane","postalCode":"98127","city":"Seattle","state":"WA"}, +{"id":843,"firstName":"Micheal","lastName":"Favela","street":"41587 Dunning Road","postalCode":"47712","city":"Evansville","state":"IN"}, +{"id":844,"firstName":"Shannon","lastName":"Alvaro","street":"86377 Becker Avenue","postalCode":"33315","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-661-6648","email":"salvaronf@usa.gov"}, +{"id":845,"firstName":"Corenda","lastName":"Aldcorn","street":"19 Bowman Court","postalCode":"67220","city":"Wichita","state":"KS","phoneNumber":"316-835-1638","email":"caldcornng@ebay.com"}, +{"id":846,"firstName":"Alvy","lastName":"Mahood","street":"0814 Spohn Hill","postalCode":"50347","city":"Des Moines","state":"IA","phoneNumber":"515-865-3669","email":"amahoodnh@toplist.cz"}, +{"id":847,"firstName":"Alexandr","lastName":"Stut","street":"8672 Anderson Court","postalCode":"78410","city":"Corpus Christi","state":"TX"}, +{"id":848,"firstName":"Gale","lastName":"Chaperling","street":"78873 Bellgrove Alley","postalCode":"10009","city":"New York City","state":"NY","phoneNumber":"212-978-6798","email":"gchaperlingnj@livejournal.com"}, +{"id":849,"firstName":"Eunice","lastName":"Dadson","street":"340 Dwight Hill","postalCode":"52809","city":"Davenport","state":"IA","phoneNumber":"563-787-9869","email":"edadsonnk@businessinsider.com"}, +{"id":850,"firstName":"Florentia","lastName":"Camin","street":"68733 Orin Point","postalCode":"46867","city":"Fort Wayne","state":"IN","phoneNumber":"260-920-3928","email":"fcaminnl@technorati.com"}, +{"id":851,"firstName":"Norina","lastName":"Vannacci","street":"585 Karstens Circle","postalCode":"45233","city":"Cincinnati","state":"OH"}, +{"id":852,"firstName":"Syd","lastName":"Gianolo","street":"99755 Arrowood Hill","postalCode":"33673","city":"Tampa","state":"FL","phoneNumber":"813-878-8150","email":"sgianolonn@uol.com.br"}, +{"id":853,"firstName":"Timofei","lastName":"Serle","street":"1081 Cascade Park","postalCode":"94257","city":"Sacramento","state":"CA","email":"tserleno@behance.net"}, +{"id":854,"firstName":"Moina","lastName":"Ciobutaro","street":"502 Stone Corner Circle","postalCode":"33018","city":"Hialeah","state":"FL","email":"mciobutaronp@ycombinator.com"}, +{"id":855,"firstName":"Nikolaos","lastName":"Gavaghan","street":"47136 Golf Junction","postalCode":"97255","city":"Portland","state":"OR"}, +{"id":856,"firstName":"Gallard","lastName":"Jenks","street":"2 Carioca Terrace","postalCode":"35263","city":"Birmingham","state":"AL","email":"gjenksnr@blogtalkradio.com"}, +{"id":857,"firstName":"Dare","lastName":"Nielson","street":"3 Carberry Hill","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-211-0944"}, +{"id":858,"firstName":"Cecilius","lastName":"Fasse","street":"1 Novick Street","postalCode":"68583","city":"Lincoln","state":"NE","phoneNumber":"402-342-4624","email":"cfassent@zimbio.com"}, +{"id":859,"firstName":"Kevon","lastName":"Doxsey","street":"152 Warrior Pass","postalCode":"91616","city":"North Hollywood","state":"CA","phoneNumber":"213-339-9582"}, +{"id":860,"firstName":"Matti","lastName":"Gras","street":"4567 Bunting Way","postalCode":"94544","city":"Hayward","state":"CA"}, +{"id":861,"firstName":"Nathan","lastName":"Longfut","street":"3178 Mockingbird Alley","postalCode":"97255","city":"Portland","state":"OR","phoneNumber":"971-206-3004"}, +{"id":862,"firstName":"Willetta","lastName":"Fitzpayn","street":"87 Alpine Drive","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-698-7578","email":"wfitzpaynnx@geocities.jp"}, +{"id":863,"firstName":"Emanuel","lastName":"Jikylls","street":"42 Heffernan Court","postalCode":"33884","city":"Winter Haven","state":"FL","email":"ejikyllsny@biglobe.ne.jp"}, +{"id":864,"firstName":"Lenard","lastName":"Nore","street":"7 Nevada Avenue","postalCode":"77343","city":"Huntsville","state":"TX","phoneNumber":"936-267-6742","email":"lnorenz@netscape.com"}, +{"id":865,"firstName":"Jeanine","lastName":"MacTurlough","street":"26343 Gale Crossing","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-865-6630","email":"jmacturlougho0@scientificamerican.com"}, +{"id":866,"firstName":"Jaquenetta","lastName":"Dorn","street":"3963 Novick Way","postalCode":"19495","city":"Valley Forge","state":"PA","email":"jdorno1@about.com"}, +{"id":867,"firstName":"Amity","lastName":"Titterrell","street":"3216 Lindbergh Court","postalCode":"90071","city":"Los Angeles","state":"CA","phoneNumber":"626-416-1494","email":"atitterrello2@psu.edu"}, +{"id":868,"firstName":"Rafaelia","lastName":"Melly","street":"6 Westridge Center","postalCode":"61825","city":"Champaign","state":"IL","email":"rmellyo3@ovh.net"}, +{"id":869,"firstName":"Cordi","lastName":"Martinovsky","street":"38 Forest Dale Terrace","postalCode":"50362","city":"Des Moines","state":"IA","email":"cmartinovskyo4@tuttocitta.it"}, +{"id":870,"firstName":"Humfrid","lastName":"Varne","street":"858 Farwell Street","postalCode":"06127","city":"West Hartford","state":"CT","email":"hvarneo5@yolasite.com"}, +{"id":871,"firstName":"Ford","lastName":"Pinchback","street":"363 Lien Pass","postalCode":"20599","city":"Washington","state":"DC","email":"fpinchbacko6@nytimes.com"}, +{"id":872,"firstName":"Maible","lastName":"Haresign","street":"809 Monica Point","postalCode":"28230","city":"Charlotte","state":"NC"}, +{"id":873,"firstName":"Rozamond","lastName":"Challis","street":"312 Mcbride Plaza","postalCode":"77266","city":"Houston","state":"TX","email":"rchalliso8@google.ca"}, +{"id":874,"firstName":"Myrah","lastName":"Menendez","street":"21 Garrison Plaza","postalCode":"23208","city":"Richmond","state":"VA","email":"mmenendezo9@msn.com"}, +{"id":875,"firstName":"Roberto","lastName":"Lamb","street":"3339 Cottonwood Pass","postalCode":"43699","city":"Toledo","state":"OH","phoneNumber":"419-633-9671"}, +{"id":876,"firstName":"Foster","lastName":"Delyth","street":"91500 Carpenter Point","postalCode":"79928","city":"El Paso","state":"TX","phoneNumber":"915-782-9005"}, +{"id":877,"firstName":"Nicholle","lastName":"Pickring","street":"8083 Talmadge Lane","postalCode":"14624","city":"Rochester","state":"NY","email":"npickringoc@tuttocitta.it"}, +{"id":878,"firstName":"Theodosia","lastName":"Bayliss","street":"6 Marcy Parkway","postalCode":"33954","city":"Port Charlotte","state":"FL"}, +{"id":879,"firstName":"Araldo","lastName":"Dowzell","street":"8376 Carpenter Court","postalCode":"71151","city":"Shreveport","state":"LA","email":"adowzelloe@army.mil"}, +{"id":880,"firstName":"Hugues","lastName":"McColgan","street":"990 Southridge Point","postalCode":"93591","city":"Palmdale","state":"CA","phoneNumber":"661-978-2646","email":"hmccolganof@netvibes.com"}, +{"id":881,"firstName":"Annissa","lastName":"Mordue","street":"62114 Ludington Lane","postalCode":"30911","city":"Augusta","state":"GA","phoneNumber":"706-152-3967","email":"amordueog@tripod.com"}, +{"id":882,"firstName":"Tierney","lastName":"Claughton","street":"3 Twin Pines Trail","postalCode":"88563","city":"El Paso","state":"TX","phoneNumber":"915-784-7980"}, +{"id":883,"firstName":"Rey","lastName":"Fleckno","street":"49 Oakridge Point","postalCode":"27605","city":"Raleigh","state":"NC"}, +{"id":884,"firstName":"Stacee","lastName":"Rewcastle","street":"19 Glendale Point","postalCode":"78278","city":"San Antonio","state":"TX","phoneNumber":"210-454-3087","email":"srewcastleoj@ustream.tv"}, +{"id":885,"firstName":"Delano","lastName":"Bragger","street":"0 Hoffman Center","postalCode":"47725","city":"Evansville","state":"IN","email":"dbraggerok@ifeng.com"}, +{"id":886,"firstName":"Redford","lastName":"Bare","street":"801 Garrison Court","postalCode":"08638","city":"Trenton","state":"NJ"}, +{"id":887,"firstName":"Grantham","lastName":"Arlidge","street":"69 Shelley Parkway","postalCode":"34210","city":"Bradenton","state":"FL","email":"garlidgeom@google.nl"}, +{"id":888,"firstName":"Debbie","lastName":"Tommaseo","street":"295 Crowley Alley","postalCode":"98516","city":"Olympia","state":"WA","email":"dtommaseoon@xrea.com"}, +{"id":889,"firstName":"Ragnar","lastName":"O' Byrne","street":"88163 Manitowish Terrace","postalCode":"20260","city":"Washington","state":"DC","phoneNumber":"202-982-3050","email":"robyrneoo@ft.com"}, +{"id":890,"firstName":"Leopold","lastName":"Woodington","street":"44 Vera Pass","postalCode":"24009","city":"Roanoke","state":"VA","email":"lwoodingtonop@engadget.com"}, +{"id":891,"firstName":"Farrah","lastName":"Conniam","street":"2078 Bunting Parkway","postalCode":"68134","city":"Omaha","state":"NE","email":"fconniamoq@github.com"}, +{"id":892,"firstName":"Augustus","lastName":"Morrish","street":"430 Sauthoff Plaza","postalCode":"27710","city":"Durham","state":"NC","phoneNumber":"919-266-8155","email":"amorrishor@naver.com"}, +{"id":893,"firstName":"Cassaundra","lastName":"Deaves","street":"32 Clarendon Way","postalCode":"40266","city":"Louisville","state":"KY","phoneNumber":"502-138-7158"}, +{"id":894,"firstName":"Glynn","lastName":"Shewan","street":"989 Susan Avenue","postalCode":"95194","city":"San Jose","state":"CA","email":"gshewanot@reuters.com"}, +{"id":895,"firstName":"Neils","lastName":"Niesing","street":"488 Jana Road","postalCode":"48232","city":"Detroit","state":"MI","email":"nniesingou@cafepress.com"}, +{"id":896,"firstName":"Alix","lastName":"Cleeton","street":"8 Merrick Crossing","postalCode":"18018","city":"Bethlehem","state":"PA","email":"acleetonov@ask.com"}, +{"id":897,"firstName":"Kyrstin","lastName":"Alejandro","street":"45487 Carey Way","postalCode":"37919","city":"Knoxville","state":"TN","email":"kalejandroow@scribd.com"}, +{"id":898,"firstName":"Waylin","lastName":"De Caroli","street":"9237 Ludington Plaza","postalCode":"77554","city":"Galveston","state":"TX","email":"wdecaroliox@washingtonpost.com"}, +{"id":899,"firstName":"Lian","lastName":"Brade","street":"704 Lotheville Drive","postalCode":"24014","city":"Roanoke","state":"VA","phoneNumber":"540-712-7147"}, +{"id":900,"firstName":"Griz","lastName":"Elgie","street":"435 Northridge Point","postalCode":"93399","city":"Bakersfield","state":"CA","email":"gelgieoz@hao123.com"}, +{"id":901,"firstName":"Georgeanna","lastName":"Gilberthorpe","street":"6 Tomscot Park","postalCode":"37931","city":"Knoxville","state":"TN","phoneNumber":"865-664-6191","email":"ggilberthorpep0@typepad.com"}, +{"id":902,"firstName":"Korrie","lastName":"Goldstraw","street":"00 Lindbergh Plaza","postalCode":"14225","city":"Buffalo","state":"NY","email":"kgoldstrawp1@yellowbook.com"}, +{"id":903,"firstName":"Hervey","lastName":"Wyse","street":"27 Buell Road","postalCode":"75044","city":"Garland","state":"TX","phoneNumber":"972-243-9031","email":"hwysep2@deliciousdays.com"}, +{"id":904,"firstName":"Georgeta","lastName":"Buckam","street":"0 Continental Hill","postalCode":"65810","city":"Springfield","state":"MO","phoneNumber":"417-682-2553","email":"gbuckamp3@java.com"}, +{"id":905,"firstName":"Hussein","lastName":"Jacson","street":"478 Vermont Court","postalCode":"95354","city":"Modesto","state":"CA","phoneNumber":"209-714-7362","email":"hjacsonp4@squarespace.com"}, +{"id":906,"firstName":"Chrysler","lastName":"Heddy","street":"913 Steensland Parkway","postalCode":"20709","city":"Laurel","state":"MD","phoneNumber":"410-691-9748"}, +{"id":907,"firstName":"Jourdan","lastName":"Frise","street":"35 Erie Point","postalCode":"94245","city":"Sacramento","state":"CA","email":"jfrisep6@eepurl.com"}, +{"id":908,"firstName":"Roxie","lastName":"Gimber","street":"9237 Vermont Pass","postalCode":"88553","city":"El Paso","state":"TX","email":"rgimberp7@mayoclinic.com"}, +{"id":909,"firstName":"Jenilee","lastName":"MacNab","street":"23 Union Alley","postalCode":"29579","city":"Myrtle Beach","state":"SC","email":"jmacnabp8@mit.edu"}, +{"id":910,"firstName":"Lola","lastName":"Bier","street":"371 Bartillon Avenue","postalCode":"71105","city":"Shreveport","state":"LA","phoneNumber":"318-818-1659","email":"lbierp9@goo.gl"}, +{"id":911,"firstName":"Fayina","lastName":"Brosel","street":"3255 Macpherson Pass","postalCode":"55166","city":"Saint Paul","state":"MN","email":"fbroselpa@rakuten.co.jp"}, +{"id":912,"firstName":"Ellerey","lastName":"Darell","street":"735 Leroy Road","postalCode":"07544","city":"Paterson","state":"NJ"}, +{"id":913,"firstName":"Lorianne","lastName":"McLanachan","street":"22 Alpine Point","postalCode":"77293","city":"Houston","state":"TX","email":"lmclanachanpc@dmoz.org"}, +{"id":914,"firstName":"Merrill","lastName":"Searson","street":"8447 Namekagon Hill","postalCode":"55114","city":"Saint Paul","state":"MN","phoneNumber":"651-567-8380","email":"msearsonpd@census.gov"}, +{"id":915,"firstName":"Nisse","lastName":"Larive","street":"976 Forest Dale Way","postalCode":"10004","city":"New York City","state":"NY","phoneNumber":"347-192-6897","email":"nlarivepe@drupal.org"}, +{"id":916,"firstName":"Cazzie","lastName":"Brenard","street":"647 Gulseth Plaza","postalCode":"02283","city":"Boston","state":"MA","phoneNumber":"781-248-3572","email":"cbrenardpf@uiuc.edu"}, +{"id":917,"firstName":"Gael","lastName":"Ramirez","street":"161 Basil Terrace","postalCode":"93786","city":"Fresno","state":"CA","phoneNumber":"559-692-2653","email":"gramirezpg@ucoz.ru"}, +{"id":918,"firstName":"Culver","lastName":"Le Brun","street":"73906 Muir Terrace","postalCode":"95973","city":"Chico","state":"CA","email":"clebrunph@jigsy.com"}, +{"id":919,"firstName":"Bordie","lastName":"Muskett","street":"27 Nobel Trail","postalCode":"20599","city":"Washington","state":"DC","phoneNumber":"202-872-5253"}, +{"id":920,"firstName":"Riccardo","lastName":"Miskin","street":"778 Eagan Place","postalCode":"55407","city":"Minneapolis","state":"MN","email":"rmiskinpj@slideshare.net"}, +{"id":921,"firstName":"Cristabel","lastName":"Gowlett","street":"5 Quincy Lane","postalCode":"62525","city":"Decatur","state":"IL","email":"cgowlettpk@cafepress.com"}, +{"id":922,"firstName":"Crawford","lastName":"Huby","street":"6 Gina Lane","postalCode":"94913","city":"San Rafael","state":"CA","phoneNumber":"415-133-8552","email":"chubypl@jugem.jp"}, +{"id":923,"firstName":"Cherish","lastName":"Mutch","street":"8 Oak Valley Lane","postalCode":"20719","city":"Bowie","state":"MD","phoneNumber":"240-982-9087"}, +{"id":924,"firstName":"Jerrie","lastName":"Latek","street":"9462 Moulton Terrace","postalCode":"52809","city":"Davenport","state":"IA","phoneNumber":"563-687-6664","email":"jlatekpn@gov.uk"}, +{"id":925,"firstName":"Lacey","lastName":"Maris","street":"1 Carpenter Hill","postalCode":"61605","city":"Peoria","state":"IL","phoneNumber":"309-570-3216"}, +{"id":926,"firstName":"Daffy","lastName":"Binion","street":"8 Milwaukee Parkway","postalCode":"33129","city":"Miami","state":"FL","phoneNumber":"305-579-9009"}, +{"id":927,"firstName":"Melita","lastName":"Valde","street":"629 Packers Crossing","postalCode":"06140","city":"Hartford","state":"CT","phoneNumber":"860-747-5927","email":"mvaldepq@storify.com"}, +{"id":928,"firstName":"Cherlyn","lastName":"Rosenshine","street":"764 Pepper Wood Place","postalCode":"72204","city":"Little Rock","state":"AR","phoneNumber":"501-823-8134"}, +{"id":929,"firstName":"Morty","lastName":"Stanger","street":"3286 Charing Cross Court","postalCode":"08603","city":"Trenton","state":"NJ","email":"mstangerps@yellowpages.com"}, +{"id":930,"firstName":"Bernete","lastName":"Hirth","street":"83 Granby Center","postalCode":"95194","city":"San Jose","state":"CA","phoneNumber":"408-738-2333","email":"bhirthpt@people.com.cn"}, +{"id":931,"firstName":"Elena","lastName":"Wace","street":"98 Grover Trail","postalCode":"33742","city":"Saint Petersburg","state":"FL","phoneNumber":"727-883-2239","email":"ewacepu@merriam-webster.com"}, +{"id":932,"firstName":"Giselbert","lastName":"Sisland","street":"2214 Sheridan Pass","postalCode":"40225","city":"Louisville","state":"KY"}, +{"id":933,"firstName":"Herb","lastName":"Voyce","street":"628 Basil Pass","postalCode":"21265","city":"Baltimore","state":"MD"}, +{"id":934,"firstName":"Vina","lastName":"Antonetti","street":"6 Springview Terrace","postalCode":"20430","city":"Washington","state":"DC","phoneNumber":"202-955-4578"}, +{"id":935,"firstName":"Bard","lastName":"De Avenell","street":"2775 Clarendon Avenue","postalCode":"53215","city":"Milwaukee","state":"WI"}, +{"id":936,"firstName":"Briana","lastName":"Pinshon","street":"43 Del Sol Street","postalCode":"33615","city":"Tampa","state":"FL","email":"bpinshonpz@java.com"}, +{"id":937,"firstName":"Hilly","lastName":"Aysh","street":"37 Doe Crossing Terrace","postalCode":"23705","city":"Portsmouth","state":"VA","phoneNumber":"757-992-8124"}, +{"id":938,"firstName":"Marylin","lastName":"Ciotto","street":"3957 Browning Pass","postalCode":"94807","city":"Richmond","state":"CA"}, +{"id":939,"firstName":"Cam","lastName":"Kurth","street":"155 Walton Point","postalCode":"92867","city":"Orange","state":"CA","phoneNumber":"949-955-2248"}, +{"id":940,"firstName":"Rawley","lastName":"Bickle","street":"54 Macpherson Point","postalCode":"93762","city":"Fresno","state":"CA","phoneNumber":"559-331-2187","email":"rbickleq3@delicious.com"}, +{"id":941,"firstName":"Merlina","lastName":"Dunster","street":"70557 Toban Trail","postalCode":"20005","city":"Washington","state":"DC","phoneNumber":"202-999-8731"}, +{"id":942,"firstName":"Kennie","lastName":"MacCoughan","street":"04566 Browning Parkway","postalCode":"75507","city":"Texarkana","state":"TX","phoneNumber":"903-622-7509","email":"kmaccoughanq5@reuters.com"}, +{"id":943,"firstName":"Jase","lastName":"Cholomin","street":"21497 Blaine Road","postalCode":"33777","city":"Largo","state":"FL","email":"jcholominq6@cocolog-nifty.com"}, +{"id":944,"firstName":"Cirstoforo","lastName":"Billingsley","street":"1306 Summer Ridge Court","postalCode":"02124","city":"Boston","state":"MA","email":"cbillingsleyq7@google.es"}, +{"id":945,"firstName":"Berkly","lastName":"Lawles","street":"80400 Milwaukee Way","postalCode":"64082","city":"Lees Summit","state":"MO","email":"blawlesq8@jiathis.com"}, +{"id":946,"firstName":"Otha","lastName":"Key","street":"59639 Center Circle","postalCode":"35405","city":"Tuscaloosa","state":"AL","email":"okeyq9@deliciousdays.com"}, +{"id":947,"firstName":"Anselma","lastName":"Debow","street":"5 Spohn Parkway","postalCode":"80241","city":"Denver","state":"CO","email":"adebowqa@yelp.com"}, +{"id":948,"firstName":"Auria","lastName":"Beric","street":"5 Anderson Way","postalCode":"20022","city":"Washington","state":"DC","email":"abericqb@a8.net"}, +{"id":949,"firstName":"Eirena","lastName":"Caswall","street":"4648 Fulton Street","postalCode":"64054","city":"Independence","state":"MO","phoneNumber":"816-406-0779","email":"ecaswallqc@i2i.jp"}, +{"id":950,"firstName":"Tracy","lastName":"Sperwell","street":"4 Heath Drive","postalCode":"91499","city":"Van Nuys","state":"CA"}, +{"id":951,"firstName":"Cherilyn","lastName":"Faint","street":"814 Anniversary Lane","postalCode":"24503","city":"Lynchburg","state":"VA","phoneNumber":"434-722-2344","email":"cfaintqe@amazon.de"}, +{"id":952,"firstName":"Sela","lastName":"Darcey","street":"002 Walton Hill","postalCode":"78703","city":"Austin","state":"TX","email":"sdarceyqf@lycos.com"}, +{"id":953,"firstName":"Freddie","lastName":"Klagge","street":"842 Schlimgen Road","postalCode":"29905","city":"Beaufort","state":"SC","email":"fklaggeqg@1und1.de"}, +{"id":954,"firstName":"Eunice","lastName":"Walrond","street":"4 Mifflin Terrace","postalCode":"68117","city":"Omaha","state":"NE","email":"ewalrondqh@arstechnica.com"}, +{"id":955,"firstName":"Adelbert","lastName":"Meuse","street":"971 Doe Crossing Court","postalCode":"27157","city":"Winston Salem","state":"NC"}, +{"id":956,"firstName":"Caitlin","lastName":"Windham","street":"29 Cordelia Alley","postalCode":"76210","city":"Denton","state":"TX","phoneNumber":"214-498-2801","email":"cwindhamqj@trellian.com"}, +{"id":957,"firstName":"Jere","lastName":"Presho","street":"7 Monica Plaza","postalCode":"75710","city":"Tyler","state":"TX","email":"jpreshoqk@e-recht24.de"}, +{"id":958,"firstName":"Lonny","lastName":"Cotter","street":"5686 Rutledge Place","postalCode":"40596","city":"Lexington","state":"KY","email":"lcotterql@last.fm"}, +{"id":959,"firstName":"Sarah","lastName":"Earnshaw","street":"69 Prentice Point","postalCode":"60669","city":"Chicago","state":"IL","email":"searnshawqm@ycombinator.com"}, +{"id":960,"firstName":"Claire","lastName":"Minette","street":"3145 Butterfield Terrace","postalCode":"43204","city":"Columbus","state":"OH","phoneNumber":"614-157-5341","email":"cminetteqn@upenn.edu"}, +{"id":961,"firstName":"Traci","lastName":"Farnes","street":"2 Service Circle","postalCode":"06905","city":"Stamford","state":"CT","phoneNumber":"203-311-5859","email":"tfarnesqo@merriam-webster.com"}, +{"id":962,"firstName":"Storm","lastName":"de Werk","street":"9 Jenifer Alley","postalCode":"98121","city":"Seattle","state":"WA","phoneNumber":"425-172-3688"}, +{"id":963,"firstName":"Neile","lastName":"Mackrill","street":"5046 Schurz Point","postalCode":"28299","city":"Charlotte","state":"NC"}, +{"id":964,"firstName":"Temple","lastName":"Howlings","street":"8831 Randy Street","postalCode":"71161","city":"Shreveport","state":"LA","phoneNumber":"318-859-6319","email":"thowlingsqr@smugmug.com"}, +{"id":965,"firstName":"Roda","lastName":"Drissell","street":"16621 Mandrake Lane","postalCode":"78744","city":"Austin","state":"TX","email":"rdrissellqs@mayoclinic.com"}, +{"id":966,"firstName":"Francoise","lastName":"Lawman","street":"7 Calypso Point","postalCode":"14614","city":"Rochester","state":"NY","phoneNumber":"585-995-3882"}, +{"id":967,"firstName":"Helen","lastName":"Kigelman","street":"613 Manley Plaza","postalCode":"01905","city":"Lynn","state":"MA","email":"hkigelmanqu@shutterfly.com"}, +{"id":968,"firstName":"Dudley","lastName":"Cansdall","street":"153 Schmedeman Place","postalCode":"93715","city":"Fresno","state":"CA","email":"dcansdallqv@naver.com"}, +{"id":969,"firstName":"Shelby","lastName":"Fayers","street":"94681 Knutson Point","postalCode":"10039","city":"New York City","state":"NY"}, +{"id":970,"firstName":"Sileas","lastName":"Jalland","street":"2199 Buhler Circle","postalCode":"10029","city":"New York City","state":"NY","phoneNumber":"917-902-1667","email":"sjallandqx@rakuten.co.jp"}, +{"id":971,"firstName":"Zeke","lastName":"Duffett","street":"5 Coolidge Park","postalCode":"37995","city":"Knoxville","state":"TN","phoneNumber":"865-814-8540","email":"zduffettqy@wikispaces.com"}, +{"id":972,"firstName":"Tabby","lastName":"Mathieu","street":"78 Donald Circle","postalCode":"55114","city":"Saint Paul","state":"MN","email":"tmathieuqz@rediff.com"}, +{"id":973,"firstName":"Zsa zsa","lastName":"Knights","street":"208 Kingsford Park","postalCode":"15250","city":"Pittsburgh","state":"PA","phoneNumber":"412-652-8956","email":"zknightsr0@privacy.gov.au"}, +{"id":974,"firstName":"Tildi","lastName":"Knewstub","street":"8572 Gina Hill","postalCode":"32909","city":"Palm Bay","state":"FL","email":"tknewstubr1@archive.org"}, +{"id":975,"firstName":"Eric","lastName":"Wharrier","street":"9 Marcy Alley","postalCode":"38126","city":"Memphis","state":"TN","phoneNumber":"901-378-1545","email":"ewharrierr2@people.com.cn"}, +{"id":976,"firstName":"Jilleen","lastName":"Durgan","street":"7 Lien Plaza","postalCode":"75241","city":"Dallas","state":"TX","email":"jdurganr3@google.pl"}, +{"id":977,"firstName":"Ingeberg","lastName":"Whipp","street":"489 Bartillon Street","postalCode":"22205","city":"Arlington","state":"VA","phoneNumber":"703-356-7728","email":"iwhippr4@un.org"}, +{"id":978,"firstName":"Drake","lastName":"McCreagh","street":"735 Mcguire Lane","postalCode":"20530","city":"Washington","state":"DC","email":"dmccreaghr5@mediafire.com"}, +{"id":979,"firstName":"Byron","lastName":"Eades","street":"931 Hollow Ridge Avenue","postalCode":"23285","city":"Richmond","state":"VA","phoneNumber":"804-728-5669","email":"beadesr6@npr.org"}, +{"id":980,"firstName":"Free","lastName":"Tungate","street":"7037 Ramsey Crossing","postalCode":"64153","city":"Kansas City","state":"MO","email":"ftungater7@macromedia.com"}, +{"id":981,"firstName":"Augustus","lastName":"Benardet","street":"398 Bultman Circle","postalCode":"70165","city":"New Orleans","state":"LA"}, +{"id":982,"firstName":"Sanders","lastName":"Sullens","street":"75785 Westend Terrace","postalCode":"43656","city":"Toledo","state":"OH","phoneNumber":"419-314-1134"}, +{"id":983,"firstName":"Ynes","lastName":"Troup","street":"328 Schurz Trail","postalCode":"98907","city":"Yakima","state":"WA","phoneNumber":"509-696-5645"}, +{"id":984,"firstName":"Siana","lastName":"Bernath","street":"968 Sommers Lane","postalCode":"55487","city":"Minneapolis","state":"MN","phoneNumber":"612-351-3016"}, +{"id":985,"firstName":"Ellary","lastName":"Enders","street":"2 Charing Cross Court","postalCode":"06505","city":"New Haven","state":"CT","phoneNumber":"203-608-5058"}, +{"id":986,"firstName":"Mariann","lastName":"Damerell","street":"885 Pennsylvania Crossing","postalCode":"15220","city":"Pittsburgh","state":"PA","phoneNumber":"412-667-1349","email":"mdamerellrd@moonfruit.com"}, +{"id":987,"firstName":"Timotheus","lastName":"Muncer","street":"293 Hoepker Center","postalCode":"32405","city":"Panama City","state":"FL","phoneNumber":"850-740-2501","email":"tmuncerre@ifeng.com"}, +{"id":988,"firstName":"Hermina","lastName":"Tetsall","street":"9354 Nobel Road","postalCode":"55585","city":"Monticello","state":"MN","phoneNumber":"763-292-3970","email":"htetsallrf@wsj.com"}, +{"id":989,"firstName":"Dorelia","lastName":"Howship","street":"747 Namekagon Way","postalCode":"14269","city":"Buffalo","state":"NY","phoneNumber":"716-470-3584","email":"dhowshiprg@un.org"}, +{"id":990,"firstName":"Peggy","lastName":"Coutts","street":"34 Village Green Road","postalCode":"19131","city":"Philadelphia","state":"PA"}, +{"id":991,"firstName":"Dacey","lastName":"Inglefield","street":"05227 Buell Avenue","postalCode":"45414","city":"Dayton","state":"OH"}, +{"id":992,"firstName":"Hollyanne","lastName":"Hobbema","street":"684 La Follette Drive","postalCode":"45218","city":"Cincinnati","state":"OH","phoneNumber":"513-346-0258"}, +{"id":993,"firstName":"Freedman","lastName":"Whorlow","street":"291 Maywood Pass","postalCode":"48098","city":"Troy","state":"MI","phoneNumber":"248-890-5937"}, +{"id":994,"firstName":"Karine","lastName":"Gerring","street":"163 Graceland Street","postalCode":"95397","city":"Modesto","state":"CA"}, +{"id":995,"firstName":"Sonya","lastName":"Giercke","street":"1801 Rowland Junction","postalCode":"66215","city":"Shawnee Mission","state":"KS","email":"sgierckerm@mapquest.com"}, +{"id":996,"firstName":"Fabiano","lastName":"O'Hear","street":"87555 Sunnyside Plaza","postalCode":"33330","city":"Fort Lauderdale","state":"FL","email":"fohearrn@china.com.cn"}, +{"id":997,"firstName":"Lelia","lastName":"Gillman","street":"29838 Eagan Junction","postalCode":"78783","city":"Austin","state":"TX","phoneNumber":"512-515-1461","email":"lgillmanro@amazon.co.jp"}, +{"id":998,"firstName":"Ophelie","lastName":"Richardet","street":"9 Bay Point","postalCode":"94042","city":"Mountain View","state":"CA"}, +{"id":999,"firstName":"Batholomew","lastName":"Janzen","street":"9 Rigney Alley","postalCode":"95113","city":"San Jose","state":"CA"}, +{"id":1000,"firstName":"Kirstyn","lastName":"Bixley","street":"2 Cascade Trail","postalCode":"80015","city":"Aurora","state":"CO","phoneNumber":"303-339-2309","email":"kbixleyrr@i2i.jp"}] \ No newline at end of file From fb4041073bc3bd9e154f2def47b4bbcf70b9b2bd Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sat, 5 Sep 2020 18:48:35 +0100 Subject: [PATCH 014/260] BAEL-3326, "Optimizing JSON Schema for production use": Optimized imports and formatted source. --- .../baeldung/jsonoptimization/Customer.java | 2 +- .../CustomerDeserializer.java | 32 +++++----- .../jsonoptimization/CustomerNoNull.java | 16 ++--- .../jsonoptimization/CustomerSerializer.java | 8 +-- .../jsonoptimization/CustomerShortNames.java | 58 ++++++++++++------- .../CustomerShortNamesNoNull.java | 18 +++--- .../jsonoptimization/CustomerSlim.java | 13 ++--- 7 files changed, 82 insertions(+), 65 deletions(-) diff --git a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java index 81a74971ea..85451731e9 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java @@ -116,7 +116,7 @@ public class Customer { public static Customer[] fromMockFile() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); + InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); Customer[] feedback = objectMapper.readValue(jsonFile, Customer[].class); return feedback; } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java index 1f478ed446..04ab15556a 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java @@ -2,39 +2,43 @@ package com.baeldung.jsonoptimization; import java.io.IOException; -import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; -public class CustomerDeserializer extends StdDeserializer { +public class CustomerDeserializer extends StdDeserializer { private static final long serialVersionUID = 1L; public CustomerDeserializer() { this(null); } - + public CustomerDeserializer(Class t) { super(t); } - + @Override public Customer deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { Customer feedback = new Customer(); ObjectCodec codec = parser.getCodec(); JsonNode node = codec.readTree(parser); - - feedback.setId(node.get(0).asLong()); - feedback.setFirstName(node.get(1).asText()); - feedback.setLastName(node.get(2).asText()); - feedback.setStreet(node.get(3).asText()); - feedback.setPostalCode(node.get(4).asText()); - feedback.setCity(node.get(5).asText()); - feedback.setState(node.get(6).asText()); + + feedback.setId(node.get(0) + .asLong()); + feedback.setFirstName(node.get(1) + .asText()); + feedback.setLastName(node.get(2) + .asText()); + feedback.setStreet(node.get(3) + .asText()); + feedback.setPostalCode(node.get(4) + .asText()); + feedback.setCity(node.get(5) + .asText()); + feedback.setState(node.get(6) + .asText()); JsonNode phoneNumber = node.get(7); feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); JsonNode email = node.get(8); diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java index 1ee76f762a..62cf526f78 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java @@ -4,19 +4,19 @@ import com.fasterxml.jackson.annotation.JsonInclude; @JsonInclude(JsonInclude.Include.NON_NULL) public class CustomerNoNull extends Customer { - + @Override public String toString() { return "CustomerNoNull [toString()=" + super.toString() + "]"; } public static CustomerNoNull[] fromCustomers(Customer[] customers) { - CustomerNoNull[] feedback = new CustomerNoNull[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerNoNull[] feedback = new CustomerNoNull[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerNoNull newOne = new CustomerNoNull(); - + newOne.setId(aCustomer.getId()); newOne.setFirstName(aCustomer.getFirstName()); newOne.setLastName(aCustomer.getLastName()); @@ -26,11 +26,11 @@ public class CustomerNoNull extends Customer { newOne.setState(aCustomer.getState()); newOne.setPhoneNumber(aCustomer.getPhoneNumber()); newOne.setEmail(aCustomer.getEmail()); - + feedback[i] = newOne; } - + return feedback; } - + } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java index 7e58010640..0f631ee85b 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java @@ -6,21 +6,21 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; -public class CustomerSerializer extends StdSerializer { +public class CustomerSerializer extends StdSerializer { private static final long serialVersionUID = 1L; public CustomerSerializer() { this(null); } - + public CustomerSerializer(Class t) { super(t); } - + @Override public void serialize(Customer customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { jsonGenerator.writeStartArray(); - jsonGenerator.writeNumber(customer.getId()); + jsonGenerator.writeNumber(customer.getId()); jsonGenerator.writeString(customer.getFirstName()); jsonGenerator.writeString(customer.getLastName()); jsonGenerator.writeString(customer.getStreet()); diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java index ffa10f786d..2a47a4bbac 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java @@ -2,97 +2,113 @@ package com.baeldung.jsonoptimization; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonGetter; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; public class CustomerShortNames { private long id; - + @JsonProperty("f") private String firstName; - + @JsonProperty("l") private String lastName; - + @JsonProperty("s") private String street; - + @JsonProperty("p") private String postalCode; - + @JsonProperty("c") private String city; - + @JsonProperty("a") private String state; - + @JsonProperty("o") private String phoneNumber; - + @JsonProperty("e") private String email; - + public long getId() { return id; } + public void setId(long id) { this.id = id; } + 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 String getStreet() { return street; } + public void setStreet(String street) { this.street = street; } + public String getPostalCode() { return postalCode; } + public void setPostalCode(String postalCode) { this.postalCode = postalCode; } + public String getCity() { return city; } + public void setCity(String city) { this.city = city; } + public String getState() { return state; } + public void setState(String state) { this.state = state; } + public String getPhoneNumber() { return phoneNumber; } + public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } + public String getEmail() { return email; } + public void setEmail(String email) { this.email = email; } - + @Override public int hashCode() { return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -105,20 +121,20 @@ public class CustomerShortNames { return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); } - + @Override public String toString() { return "CustomerWithShorterAttributes [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + "]"; - } + } public static CustomerShortNames[] fromCustomers(Customer[] customers) { - CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerShortNames newOne = new CustomerShortNames(); - + newOne.setId(aCustomer.getId()); newOne.setFirstName(aCustomer.getFirstName()); newOne.setLastName(aCustomer.getLastName()); @@ -128,11 +144,11 @@ public class CustomerShortNames { newOne.setState(aCustomer.getState()); newOne.setPhoneNumber(aCustomer.getPhoneNumber()); newOne.setEmail(aCustomer.getEmail()); - + feedback[i] = newOne; } - + return feedback; } - + } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java index d3e9648a98..1b62fb2c06 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java @@ -1,24 +1,22 @@ package com.baeldung.jsonoptimization; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; @JsonInclude(JsonInclude.Include.NON_NULL) public class CustomerShortNamesNoNull extends CustomerShortNames { - - + @Override public String toString() { return "CustomerShortNamesNoNull [toString()=" + super.toString() + "]"; } - + public static CustomerShortNamesNoNull[] fromCustomers(Customer[] customers) { - CustomerShortNamesNoNull[] feedback = new CustomerShortNamesNoNull[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerShortNamesNoNull[] feedback = new CustomerShortNamesNoNull[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerShortNamesNoNull newOne = new CustomerShortNamesNoNull(); - + newOne.setId(aCustomer.getId()); newOne.setFirstName(aCustomer.getFirstName()); newOne.setLastName(aCustomer.getLastName()); @@ -28,10 +26,10 @@ public class CustomerShortNamesNoNull extends CustomerShortNames { newOne.setState(aCustomer.getState()); newOne.setPhoneNumber(aCustomer.getPhoneNumber()); newOne.setEmail(aCustomer.getEmail()); - + feedback[i] = newOne; } - + return feedback; } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java index cdfaa4e329..e2ef4664cf 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java @@ -54,21 +54,20 @@ public class CustomerSlim { } public static CustomerSlim[] fromCustomers(Customer[] customers) { - CustomerSlim[] feedback = new CustomerSlim[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerSlim[] feedback = new CustomerSlim[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerSlim newOne = new CustomerSlim(); - + newOne.setId(aCustomer.getId()); newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); - + feedback[i] = newOne; } - + return feedback; } - } From 1ab520e63a4c148f16a76c890632e6ea9c802a75 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sat, 5 Sep 2020 18:48:35 +0100 Subject: [PATCH 015/260] BAEL-3326, "Optimizing JSON Schema for production use": Optimized imports and formatted source. --- .../baeldung/jsonoptimization/Customer.java | 2 +- .../CustomerDeserializer.java | 32 +++++----- .../jsonoptimization/CustomerNoNull.java | 16 ++--- .../jsonoptimization/CustomerSerializer.java | 8 +-- .../jsonoptimization/CustomerShortNames.java | 58 ++++++++++++------- .../CustomerShortNamesNoNull.java | 18 +++--- .../jsonoptimization/CustomerSlim.java | 13 ++--- .../JsonOptimizationUnitTest.java | 9 ++- 8 files changed, 86 insertions(+), 70 deletions(-) diff --git a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java index 81a74971ea..85451731e9 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java @@ -116,7 +116,7 @@ public class Customer { public static Customer[] fromMockFile() throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); + InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); Customer[] feedback = objectMapper.readValue(jsonFile, Customer[].class); return feedback; } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java index 1f478ed446..04ab15556a 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java @@ -2,39 +2,43 @@ package com.baeldung.jsonoptimization; import java.io.IOException; -import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.ObjectCodec; import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.deser.std.StdDeserializer; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; -public class CustomerDeserializer extends StdDeserializer { +public class CustomerDeserializer extends StdDeserializer { private static final long serialVersionUID = 1L; public CustomerDeserializer() { this(null); } - + public CustomerDeserializer(Class t) { super(t); } - + @Override public Customer deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { Customer feedback = new Customer(); ObjectCodec codec = parser.getCodec(); JsonNode node = codec.readTree(parser); - - feedback.setId(node.get(0).asLong()); - feedback.setFirstName(node.get(1).asText()); - feedback.setLastName(node.get(2).asText()); - feedback.setStreet(node.get(3).asText()); - feedback.setPostalCode(node.get(4).asText()); - feedback.setCity(node.get(5).asText()); - feedback.setState(node.get(6).asText()); + + feedback.setId(node.get(0) + .asLong()); + feedback.setFirstName(node.get(1) + .asText()); + feedback.setLastName(node.get(2) + .asText()); + feedback.setStreet(node.get(3) + .asText()); + feedback.setPostalCode(node.get(4) + .asText()); + feedback.setCity(node.get(5) + .asText()); + feedback.setState(node.get(6) + .asText()); JsonNode phoneNumber = node.get(7); feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); JsonNode email = node.get(8); diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java index 1ee76f762a..62cf526f78 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java @@ -4,19 +4,19 @@ import com.fasterxml.jackson.annotation.JsonInclude; @JsonInclude(JsonInclude.Include.NON_NULL) public class CustomerNoNull extends Customer { - + @Override public String toString() { return "CustomerNoNull [toString()=" + super.toString() + "]"; } public static CustomerNoNull[] fromCustomers(Customer[] customers) { - CustomerNoNull[] feedback = new CustomerNoNull[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerNoNull[] feedback = new CustomerNoNull[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerNoNull newOne = new CustomerNoNull(); - + newOne.setId(aCustomer.getId()); newOne.setFirstName(aCustomer.getFirstName()); newOne.setLastName(aCustomer.getLastName()); @@ -26,11 +26,11 @@ public class CustomerNoNull extends Customer { newOne.setState(aCustomer.getState()); newOne.setPhoneNumber(aCustomer.getPhoneNumber()); newOne.setEmail(aCustomer.getEmail()); - + feedback[i] = newOne; } - + return feedback; } - + } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java index 7e58010640..0f631ee85b 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java @@ -6,21 +6,21 @@ import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.SerializerProvider; import com.fasterxml.jackson.databind.ser.std.StdSerializer; -public class CustomerSerializer extends StdSerializer { +public class CustomerSerializer extends StdSerializer { private static final long serialVersionUID = 1L; public CustomerSerializer() { this(null); } - + public CustomerSerializer(Class t) { super(t); } - + @Override public void serialize(Customer customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { jsonGenerator.writeStartArray(); - jsonGenerator.writeNumber(customer.getId()); + jsonGenerator.writeNumber(customer.getId()); jsonGenerator.writeString(customer.getFirstName()); jsonGenerator.writeString(customer.getLastName()); jsonGenerator.writeString(customer.getStreet()); diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java index ffa10f786d..2a47a4bbac 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java @@ -2,97 +2,113 @@ package com.baeldung.jsonoptimization; import java.util.Objects; -import com.fasterxml.jackson.annotation.JsonGetter; -import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; public class CustomerShortNames { private long id; - + @JsonProperty("f") private String firstName; - + @JsonProperty("l") private String lastName; - + @JsonProperty("s") private String street; - + @JsonProperty("p") private String postalCode; - + @JsonProperty("c") private String city; - + @JsonProperty("a") private String state; - + @JsonProperty("o") private String phoneNumber; - + @JsonProperty("e") private String email; - + public long getId() { return id; } + public void setId(long id) { this.id = id; } + 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 String getStreet() { return street; } + public void setStreet(String street) { this.street = street; } + public String getPostalCode() { return postalCode; } + public void setPostalCode(String postalCode) { this.postalCode = postalCode; } + public String getCity() { return city; } + public void setCity(String city) { this.city = city; } + public String getState() { return state; } + public void setState(String state) { this.state = state; } + public String getPhoneNumber() { return phoneNumber; } + public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } + public String getEmail() { return email; } + public void setEmail(String email) { this.email = email; } - + @Override public int hashCode() { return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); } + @Override public boolean equals(Object obj) { if (this == obj) { @@ -105,20 +121,20 @@ public class CustomerShortNames { return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); } - + @Override public String toString() { return "CustomerWithShorterAttributes [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + "]"; - } + } public static CustomerShortNames[] fromCustomers(Customer[] customers) { - CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerShortNames newOne = new CustomerShortNames(); - + newOne.setId(aCustomer.getId()); newOne.setFirstName(aCustomer.getFirstName()); newOne.setLastName(aCustomer.getLastName()); @@ -128,11 +144,11 @@ public class CustomerShortNames { newOne.setState(aCustomer.getState()); newOne.setPhoneNumber(aCustomer.getPhoneNumber()); newOne.setEmail(aCustomer.getEmail()); - + feedback[i] = newOne; } - + return feedback; } - + } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java index d3e9648a98..1b62fb2c06 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java @@ -1,24 +1,22 @@ package com.baeldung.jsonoptimization; import com.fasterxml.jackson.annotation.JsonInclude; -import com.fasterxml.jackson.annotation.JsonProperty; @JsonInclude(JsonInclude.Include.NON_NULL) public class CustomerShortNamesNoNull extends CustomerShortNames { - - + @Override public String toString() { return "CustomerShortNamesNoNull [toString()=" + super.toString() + "]"; } - + public static CustomerShortNamesNoNull[] fromCustomers(Customer[] customers) { - CustomerShortNamesNoNull[] feedback = new CustomerShortNamesNoNull[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerShortNamesNoNull[] feedback = new CustomerShortNamesNoNull[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerShortNamesNoNull newOne = new CustomerShortNamesNoNull(); - + newOne.setId(aCustomer.getId()); newOne.setFirstName(aCustomer.getFirstName()); newOne.setLastName(aCustomer.getLastName()); @@ -28,10 +26,10 @@ public class CustomerShortNamesNoNull extends CustomerShortNames { newOne.setState(aCustomer.getState()); newOne.setPhoneNumber(aCustomer.getPhoneNumber()); newOne.setEmail(aCustomer.getEmail()); - + feedback[i] = newOne; } - + return feedback; } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java index cdfaa4e329..e2ef4664cf 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java @@ -54,21 +54,20 @@ public class CustomerSlim { } public static CustomerSlim[] fromCustomers(Customer[] customers) { - CustomerSlim[] feedback = new CustomerSlim[customers.length]; - - for(int i = 0; i < customers.length; i++) { + CustomerSlim[] feedback = new CustomerSlim[customers.length]; + + for (int i = 0; i < customers.length; i++) { Customer aCustomer = customers[i]; CustomerSlim newOne = new CustomerSlim(); - + newOne.setId(aCustomer.getId()); newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); - + feedback[i] = newOne; } - + return feedback; } - } diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java index e754978cd5..a1dbe08fed 100644 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -15,7 +15,6 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; @@ -77,7 +76,7 @@ class JsonOptimizationUnitTest { byte[] shorterJson = createPlainJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL, shorterOnesNoNull); compressJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL, shorterJson); } - + @Test void testSlim() throws IOException { printBanner(TEST_LABEL_SLIM_CUSTOMER); @@ -89,11 +88,11 @@ class JsonOptimizationUnitTest { @Test void testCustomSerializer() throws IOException { printBanner(TEST_LABEL_CUSTOM_SERIALIZER); - + SimpleModule serializer = new SimpleModule("CustomCustomerSerializer", new Version(1, 0, 0, null, null, null)); serializer.addSerializer(Customer.class, new CustomerSerializer()); mapper.registerModule(serializer); - + SimpleModule deserializer = new SimpleModule("CustomCustomerDeserializer", new Version(1, 0, 0, null, null, null)); deserializer.addDeserializer(Customer.class, new CustomerDeserializer()); mapper.registerModule(deserializer); @@ -135,7 +134,7 @@ class JsonOptimizationUnitTest { fos.write(feedback); fos.close(); System.out.println(label + " file: " + tempFile.toString()); - + Object[] restoredOnes = mapper.readValue(feedback, customers.getClass()); assertArrayEquals(TEST_LABEL_DEFAULT_JSON + ": restoring from JSON should work", customers, restoredOnes); From 8415ee8096e64e7b7a57fb0fe85d17024a4d6884 Mon Sep 17 00:00:00 2001 From: Usman Mohyuddin Date: Sun, 6 Sep 2020 00:07:33 +0500 Subject: [PATCH 016/260] update the test names as whenX_thenY update the test names as whenX_thenY --- .../com/baeldung/removeprefix/RemovePrefixTest.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy index 568e5fdde8..aa9e65d98d 100644 --- a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy +++ b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy @@ -7,7 +7,7 @@ class RemovePrefixTest { @Test - public void givenWhenCasePrefixIsRemoved_thenReturnTrue() { + public void whenCasePrefixIsRemoved_thenReturnTrue() { def trimPrefix = { it.startsWith('Groovy') ? it.minus('Groovy') : it } @@ -16,7 +16,7 @@ class RemovePrefixTest { } @Test - public void givenWhenPrefixIsRemoved_thenReturnTrue() { + public void whenPrefixIsRemovedWithIgnoreCase_thenReturnTrue() { String prefix = "groovy-" String trimPrefix = "Groovy-Tutorials at Baeldung" @@ -29,7 +29,7 @@ class RemovePrefixTest { } @Test - public void givenWhenPrefixIsRemovedUsingRegex_thenReturnTrue() { + public void whenPrefixIsRemovedUsingRegex_thenReturnTrue() { def regex = ~"^([Gg])roovy-" String trimPrefix = "Groovy-Tutorials at Baeldung" @@ -38,7 +38,7 @@ class RemovePrefixTest { Assert.assertEquals("Tutorials at Baeldung", result) } - @Test public void givenWhenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { + @Test public void whenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { def regex = ~"^groovy" String trimPrefix = "groovyTutorials at Baeldung's groovy page" String result = trimPrefix.replaceFirst(regex, "") @@ -47,7 +47,7 @@ class RemovePrefixTest { } @Test - public void givenWhenPrefixIsRemovedUsingReplaceAll_thenReturnTrue() { + public void whenPrefixIsRemovedUsingReplaceAll_thenReturnTrue() { String trimPrefix = "groovyTutorials at Baeldung groovy" String result = trimPrefix.replaceAll(/^groovy/, "") From 9d326b55bc5436251c917ecb2c6ddb05493dc2ae Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sun, 6 Sep 2020 13:23:34 +0100 Subject: [PATCH 017/260] BAEL-3326, "Optimizing JSON Schema for production use": More code for slim customer. --- .../CustomerDeserializer.java | 1 + .../jsonoptimization/CustomerShortNames.java | 1 + .../CustomerSlimDeserializer.java | 37 +++++++++ .../CustomerSlimSerializer.java | 28 +++++++ .../CustomerSlimShortNames.java | 81 +++++++++++++++++++ .../JsonOptimizationUnitTest.java | 57 ++++++++----- 6 files changed, 187 insertions(+), 18 deletions(-) create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java create mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java index 04ab15556a..1815c5f202 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java @@ -43,6 +43,7 @@ public class CustomerDeserializer extends StdDeserializer { feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); JsonNode email = node.get(8); feedback.setEmail(email.isNull() ? null : email.asText()); + return feedback; } } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java index 2a47a4bbac..b94fbb1033 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.annotation.JsonProperty; public class CustomerShortNames { + @JsonProperty("i") private long id; @JsonProperty("f") diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java new file mode 100644 index 0000000000..9da7b7c873 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java @@ -0,0 +1,37 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class CustomerSlimDeserializer extends StdDeserializer { + private static final long serialVersionUID = 1L; + + public CustomerSlimDeserializer() { + this(null); + } + + public CustomerSlimDeserializer(Class t) { + super(t); + } + + @Override + public CustomerSlim deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { + CustomerSlim feedback = new CustomerSlim(); + ObjectCodec codec = parser.getCodec(); + JsonNode node = codec.readTree(parser); + + feedback.setId(node.get(0) + .asLong()); + feedback.setName(node.get(1) + .asText()); + feedback.setAddress(node.get(2) + .asText()); + + return feedback; + } +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java new file mode 100644 index 0000000000..520c541da6 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java @@ -0,0 +1,28 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class CustomerSlimSerializer extends StdSerializer { + private static final long serialVersionUID = 1L; + + public CustomerSlimSerializer() { + this(null); + } + + public CustomerSlimSerializer(Class t) { + super(t); + } + + @Override + public void serialize(CustomerSlim customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { + jsonGenerator.writeStartArray(); + jsonGenerator.writeNumber(customer.getId()); + jsonGenerator.writeString(customer.getName()); + jsonGenerator.writeString(customer.getAddress()); + jsonGenerator.writeEndArray(); + } +} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java new file mode 100644 index 0000000000..7bb20a7453 --- /dev/null +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java @@ -0,0 +1,81 @@ +package com.baeldung.jsonoptimization; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CustomerSlimShortNames { + + @JsonProperty("i") + private long id; + + @JsonProperty("n") + private String name; + + @JsonProperty("a") + private String address; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public int hashCode() { + return Objects.hash(address, id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CustomerSlimShortNames)) { + return false; + } + CustomerSlimShortNames other = (CustomerSlimShortNames) obj; + return Objects.equals(address, other.address) && id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return "CustomerSlim [id=" + id + ", name=" + name + ", address=" + address + "]"; + } + + public static CustomerSlimShortNames[] fromCustomers(Customer[] customers) { + CustomerSlimShortNames[] feedback = new CustomerSlimShortNames[customers.length]; + + for (int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerSlimShortNames newOne = new CustomerSlimShortNames(); + + newOne.setId(aCustomer.getId()); + newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); + newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java index a1dbe08fed..dd5703543f 100644 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -23,10 +23,12 @@ import com.fasterxml.jackson.databind.module.SimpleModule; class JsonOptimizationUnitTest { private static final String TEST_LABEL_DEFAULT_JSON = "Default JSON"; private static final String TEST_LABEL_DEFAULT_JSON_NO_NULL = "Default JSON without null"; - private static final String TEST_LABEL_SHORTER_ATTRIBUTE_NAMES = "Shorter Attribute Names"; - private static final String TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL = "Shorter Attribute Names without null"; - private static final String TEST_LABEL_CUSTOM_SERIALIZER = "Custom Serializer"; + private static final String TEST_LABEL_SHORT_NAMES = "Shorter attribute names"; + private static final String TEST_LABEL_SHORT_NAMES_NO_NULL = "Shorter attribute names without null"; + private static final String TEST_LABEL_CUSTOM_SERIALIZER = "Custom serializer"; + private static final String TEST_LABEL_SLIM_CUSTOM_SERIALIZER = "Slim custom serializer"; private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; + private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter attribute names"; private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###,###"); private static Customer[] customers; private ObjectMapper mapper; @@ -62,19 +64,19 @@ class JsonOptimizationUnitTest { } @Test - void testShorterAttributes() throws IOException { - printBanner(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES); + void testShortNames() throws IOException { + printBanner(TEST_LABEL_SHORT_NAMES); CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); - byte[] shorterJson = createPlainJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES, shorterOnes); - compressJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES, shorterJson); + byte[] shorterJson = createPlainJson(TEST_LABEL_SHORT_NAMES, shorterOnes); + compressJson(TEST_LABEL_SHORT_NAMES, shorterJson); } @Test - void testShorterAttributesNoNull() throws IOException { - printBanner(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL); + void testShortNamesNoNull() throws IOException { + printBanner(TEST_LABEL_SHORT_NAMES_NO_NULL); CustomerShortNamesNoNull[] shorterOnesNoNull = CustomerShortNamesNoNull.fromCustomers(customers); - byte[] shorterJson = createPlainJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL, shorterOnesNoNull); - compressJson(TEST_LABEL_SHORTER_ATTRIBUTE_NAMES_NO_NULL, shorterJson); + byte[] shorterJson = createPlainJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterOnesNoNull); + compressJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterJson); } @Test @@ -85,21 +87,40 @@ class JsonOptimizationUnitTest { compressJson(TEST_LABEL_SLIM_CUSTOMER, slimJson); } + @Test + void testSlimShortNames() throws IOException { + printBanner(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES); + CustomerSlimShortNames[] slimOnes = CustomerSlimShortNames.fromCustomers(customers); + byte[] slimJson = createPlainJson(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimOnes); + compressJson(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimJson); + } + @Test void testCustomSerializer() throws IOException { printBanner(TEST_LABEL_CUSTOM_SERIALIZER); - - SimpleModule serializer = new SimpleModule("CustomCustomerSerializer", new Version(1, 0, 0, null, null, null)); + + SimpleModule serializer = new SimpleModule("CustomDeSerializer", new Version(1, 0, 0, null, null, null)); serializer.addSerializer(Customer.class, new CustomerSerializer()); + serializer.addDeserializer(Customer.class, new CustomerDeserializer()); mapper.registerModule(serializer); - - SimpleModule deserializer = new SimpleModule("CustomCustomerDeserializer", new Version(1, 0, 0, null, null, null)); - deserializer.addDeserializer(Customer.class, new CustomerDeserializer()); - mapper.registerModule(deserializer); - + byte[] plainJson = createPlainJson(TEST_LABEL_CUSTOM_SERIALIZER, customers); compressJson(TEST_LABEL_CUSTOM_SERIALIZER, plainJson); } + + @Test + void testSlimCustomSerializer() throws IOException { + printBanner(TEST_LABEL_SLIM_CUSTOM_SERIALIZER); + + SimpleModule serializer = new SimpleModule("SlimCustomDeSerializer", new Version(1, 0, 0, null, null, null)); + serializer.addSerializer(CustomerSlim.class, new CustomerSlimSerializer()); + serializer.addDeserializer(CustomerSlim.class, new CustomerSlimDeserializer()); + mapper.registerModule(serializer); + + CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); + byte[] plainJson = createPlainJson(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, slimOnes); + compressJson(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, plainJson); + } private void printBanner(String name) { System.out.println(); From 2c78247c95f456fd4ecb8ea197615f002327d922 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sun, 6 Sep 2020 13:48:39 +0100 Subject: [PATCH 018/260] BAEL-3326, "Optimizing JSON Schema for production use": Added percentages, fixed formatting. --- .../jsonoptimization/CustomerDeserializer.java | 2 +- .../CustomerSlimDeserializer.java | 2 +- .../jsonoptimization/CustomerSlimShortNames.java | 6 +++--- .../JsonOptimizationUnitTest.java | 16 +++++++++++----- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java index 1815c5f202..16b66311ad 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java @@ -43,7 +43,7 @@ public class CustomerDeserializer extends StdDeserializer { feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); JsonNode email = node.get(8); feedback.setEmail(email.isNull() ? null : email.asText()); - + return feedback; } } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java index 9da7b7c873..296ee6fdf6 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java @@ -31,7 +31,7 @@ public class CustomerSlimDeserializer extends StdDeserializer { .asText()); feedback.setAddress(node.get(2) .asText()); - + return feedback; } } diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java index 7bb20a7453..bf00e847ac 100644 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java +++ b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java @@ -5,13 +5,13 @@ import java.util.Objects; import com.fasterxml.jackson.annotation.JsonProperty; public class CustomerSlimShortNames { - + @JsonProperty("i") private long id; - + @JsonProperty("n") private String name; - + @JsonProperty("a") private String address; diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java index dd5703543f..2573b34414 100644 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -32,10 +32,14 @@ class JsonOptimizationUnitTest { private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###,###"); private static Customer[] customers; private ObjectMapper mapper; + private static int defaultJsonLength; @BeforeAll static void setUpOnce() throws Exception { customers = Customer.fromMockFile(); + ObjectMapper oneTimeMapper = new ObjectMapper(); + byte[] feedback = oneTimeMapper.writeValueAsBytes(customers); + defaultJsonLength = feedback.length; } @BeforeEach @@ -98,16 +102,16 @@ class JsonOptimizationUnitTest { @Test void testCustomSerializer() throws IOException { printBanner(TEST_LABEL_CUSTOM_SERIALIZER); - + SimpleModule serializer = new SimpleModule("CustomDeSerializer", new Version(1, 0, 0, null, null, null)); serializer.addSerializer(Customer.class, new CustomerSerializer()); serializer.addDeserializer(Customer.class, new CustomerDeserializer()); mapper.registerModule(serializer); - + byte[] plainJson = createPlainJson(TEST_LABEL_CUSTOM_SERIALIZER, customers); compressJson(TEST_LABEL_CUSTOM_SERIALIZER, plainJson); } - + @Test void testSlimCustomSerializer() throws IOException { printBanner(TEST_LABEL_SLIM_CUSTOM_SERIALIZER); @@ -135,7 +139,8 @@ class JsonOptimizationUnitTest { gzipStream.write(plainJson); gzipStream.close(); byte[] gzippedJson = outpuStream.toByteArray(); - System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(gzippedJson.length)); + int percent = gzippedJson.length * 100 / defaultJsonLength; + System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(gzippedJson.length / 1024) + "kB (" + percent + "%)"); assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); } @@ -145,7 +150,8 @@ class JsonOptimizationUnitTest { System.out.println(prettyWritter.writeValueAsString(customers[0])); byte[] feedback = mapper.writeValueAsBytes(customers); - System.out.println(label + " length: " + LENGTH_FORMATTER.format(feedback.length)); + int percent = feedback.length * 100 / defaultJsonLength; + System.out.println(label + " length: " + LENGTH_FORMATTER.format(feedback.length / 1024) + "kB (" + percent + "%)"); assertTrue(feedback.length > 1, label + " should be there"); String prefix = label.replaceAll(" ", "-") From 09e0e958bca4cb749c9608294f1a9ef447685a14 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Sun, 6 Sep 2020 13:49:24 +0100 Subject: [PATCH 019/260] BAEL-3326, "Optimizing JSON Schema for production use" Percentages now rounded. --- .../jsonoptimization/JsonOptimizationUnitTest.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java index 2573b34414..e9bd044869 100644 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -29,7 +29,8 @@ class JsonOptimizationUnitTest { private static final String TEST_LABEL_SLIM_CUSTOM_SERIALIZER = "Slim custom serializer"; private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter attribute names"; - private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###,###"); + private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###"); + private static DecimalFormat PERCENT_FORMATTER = new DecimalFormat("###"); private static Customer[] customers; private ObjectMapper mapper; private static int defaultJsonLength; @@ -139,8 +140,9 @@ class JsonOptimizationUnitTest { gzipStream.write(plainJson); gzipStream.close(); byte[] gzippedJson = outpuStream.toByteArray(); - int percent = gzippedJson.length * 100 / defaultJsonLength; - System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(gzippedJson.length / 1024) + "kB (" + percent + "%)"); + double percent = Math.round(gzippedJson.length * 100d / defaultJsonLength); + System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(gzippedJson.length / 1024) + + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); } @@ -150,8 +152,9 @@ class JsonOptimizationUnitTest { System.out.println(prettyWritter.writeValueAsString(customers[0])); byte[] feedback = mapper.writeValueAsBytes(customers); - int percent = feedback.length * 100 / defaultJsonLength; - System.out.println(label + " length: " + LENGTH_FORMATTER.format(feedback.length / 1024) + "kB (" + percent + "%)"); + double percent = Math.round(feedback.length * 100d / defaultJsonLength); + System.out.println(label + " length: " + LENGTH_FORMATTER.format(feedback.length / 1024) + + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); assertTrue(feedback.length > 1, label + " should be there"); String prefix = label.replaceAll(" ", "-") From b7328395a3d893b309dc6d5eda4c877b93242c0d Mon Sep 17 00:00:00 2001 From: Harihar Das Date: Sun, 6 Sep 2020 18:33:35 +0200 Subject: [PATCH 020/260] generated gradle wrapper files --- gradle-wrapper/gradle/wrapper/README.md | 35 ++++ .../gradle/wrapper/gradle-wrapper.properties | 5 + gradle-wrapper/gradlew | 183 ++++++++++++++++++ gradle-wrapper/gradlew.bat | 103 ++++++++++ 4 files changed, 326 insertions(+) create mode 100644 gradle-wrapper/gradle/wrapper/README.md create mode 100644 gradle-wrapper/gradle/wrapper/gradle-wrapper.properties create mode 100755 gradle-wrapper/gradlew create mode 100644 gradle-wrapper/gradlew.bat diff --git a/gradle-wrapper/gradle/wrapper/README.md b/gradle-wrapper/gradle/wrapper/README.md new file mode 100644 index 0000000000..892f7a23cb --- /dev/null +++ b/gradle-wrapper/gradle/wrapper/README.md @@ -0,0 +1,35 @@ +The files in this project were generated using gradle wrapper command. +`gradle wrapper` + +To test, download this project on your machine and run the following: +`./wrapper tasks` + +This should generate output similar to: +``` +> Task :tasks + +------------------------------------------------------------ +Tasks runnable from root project +------------------------------------------------------------ + +Build Setup tasks +----------------- +init - Initializes a new Gradle build. +wrapper - Generates Gradle wrapper files. + +Help tasks +---------- +buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle-wrapper'. +components - Displays the components produced by root project 'gradle-wrapper'. [incubating] +dependencies - Displays all dependencies declared in root project 'gradle-wrapper'. +dependencyInsight - Displays the insight into a specific dependency in root project 'gradle-wrapper'. +dependentComponents - Displays the dependent components of components in root project 'gradle-wrapper'. [incubating] +help - Displays a help message. +model - Displays the configuration model of root project 'gradle-wrapper'. [incubating] +outgoingVariants - Displays the outgoing variants of root project 'gradle-wrapper'. +projects - Displays the sub-projects of root project 'gradle-wrapper'. +properties - Displays the properties of root project 'gradle-wrapper'. +tasks - Displays the tasks runnable from root project 'gradle-wrapper'. + +To see all tasks and more detail, run gradlew tasks --all +``` \ No newline at end of file diff --git a/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties b/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..a4b4429748 --- /dev/null +++ b/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradle-wrapper/gradlew b/gradle-wrapper/gradlew new file mode 100755 index 0000000000..2fe81a7d95 --- /dev/null +++ b/gradle-wrapper/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradle-wrapper/gradlew.bat b/gradle-wrapper/gradlew.bat new file mode 100644 index 0000000000..9109989e3c --- /dev/null +++ b/gradle-wrapper/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From eed6c93543b18001962ed6c80e62a364d3f97612 Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Sun, 6 Sep 2020 23:29:31 +0200 Subject: [PATCH 021/260] Fix dynamic parameter Wrong Gatling usage: randCustId() was only called once. One needs to pass a function. --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index f9b3837759..d253ecab83 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -20,7 +20,7 @@ class RewardsScenario extends Simulation { .repeat(10){ exec(http("transactions_add") .post("/transactions/add/") - .body(StringBody("""{ "customerRewardsId":null,"customerId":""""+ randCustId() + """","transactionDate":null }""")).asJson + .body(StringBody(_ => s"""{ "customerRewardsId":null,"customerId":"${randCustId()}","transactionDate":null }""")).asJson .check(jsonPath("$.id").saveAs("txnId")) .check(jsonPath("$.transactionDate").saveAs("txtDate")) .check(jsonPath("$.customerId").saveAs("custId"))) From bbdce526c75236aebe0d28a06f8eda6868a1ddf6 Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Sun, 6 Sep 2020 23:32:19 +0200 Subject: [PATCH 022/260] Fix random cust id generation to reduce collisions The current range causes lots of collisions and the application doesn't handle them gracefully, causing lots of exceptions to get logged and hamerring performance. Use 100,000 like the JMeter test, see https://github.com/slandelle/tutorials/blob/master/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test%20Plan.jmx#L203 --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index d253ecab83..70c7d51748 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -7,7 +7,7 @@ import scala.concurrent.duration._ class RewardsScenario extends Simulation { - def randCustId() = Random.nextInt(99) + def randCustId() = Random.nextInt(100000) val httpProtocol = http.baseUrl("http://localhost:8080") .acceptHeader("text/html,application/json;q=0.9,*/*;q=0.8") From b2643fc0dded537af91306146b72de583fd47bd2 Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Sun, 6 Sep 2020 23:33:17 +0200 Subject: [PATCH 023/260] Use ThreadLocalRandom instead of Random which is synchronized --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index 70c7d51748..28314dca08 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -7,7 +7,7 @@ import scala.concurrent.duration._ class RewardsScenario extends Simulation { - def randCustId() = Random.nextInt(100000) + def randCustId() = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10000) val httpProtocol = http.baseUrl("http://localhost:8080") .acceptHeader("text/html,application/json;q=0.9,*/*;q=0.8") From a3626ba16c9fbad2f5f8c04390db655cc0ef873c Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Sun, 6 Sep 2020 23:34:37 +0200 Subject: [PATCH 024/260] Add missing optional option on the check that captures the reward This shouldn't be an error, it's an expected situation as described in the article. --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index 28314dca08..bda5e07c28 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -28,7 +28,7 @@ class RewardsScenario extends Simulation { .exec(http("get_reward") .get("/rewards/find/${custId}") - .check(jsonPath("$.id").saveAs("rwdId"))) + .check(jsonPath("$.id").optional.saveAs("rwdId"))) .pause(1) .doIf("${rwdId.isUndefined()}"){ From 7c41e378296080881ec0eabf7b394c3e0b063090 Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Sun, 6 Sep 2020 23:37:51 +0200 Subject: [PATCH 025/260] Remove the unfair 1 second pauses between requests Those pauses don't exist in the JMeter test. They just artificially reduce the Gatling test's throughput. --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 3 --- 1 file changed, 3 deletions(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index bda5e07c28..f17f5f6124 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -24,12 +24,10 @@ class RewardsScenario extends Simulation { .check(jsonPath("$.id").saveAs("txnId")) .check(jsonPath("$.transactionDate").saveAs("txtDate")) .check(jsonPath("$.customerId").saveAs("custId"))) - .pause(1) .exec(http("get_reward") .get("/rewards/find/${custId}") .check(jsonPath("$.id").optional.saveAs("rwdId"))) - .pause(1) .doIf("${rwdId.isUndefined()}"){ exec(http("rewards_add") @@ -41,7 +39,6 @@ class RewardsScenario extends Simulation { .exec(http("transactions_add") .post("/transactions/add/") .body(StringBody("""{ "customerRewardsId":"${rwdId}","customerId":"${custId}","transactionDate":"${txtDate}" }""")).asJson) - .pause(1) .exec(http("get_reward") .get("/transactions/findAll/${rwdId}")) From 56f09fa1d58d9b3ff3906218e481bc27b2e5c8b8 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 7 Sep 2020 10:31:03 +0100 Subject: [PATCH 026/260] BAEL-3326, "Optimizing JSON Schema for production use" Replaced per-class omission of null values with Jackson setting. --- .../jsonoptimization/CustomerNoNull.java | 36 ----------------- .../CustomerShortNamesNoNull.java | 36 ----------------- .../JsonOptimizationUnitTest.java | 40 +++++++++++-------- 3 files changed, 24 insertions(+), 88 deletions(-) delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java deleted file mode 100644 index 62cf526f78..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerNoNull.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.jsonoptimization; - -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonInclude(JsonInclude.Include.NON_NULL) -public class CustomerNoNull extends Customer { - - @Override - public String toString() { - return "CustomerNoNull [toString()=" + super.toString() + "]"; - } - - public static CustomerNoNull[] fromCustomers(Customer[] customers) { - CustomerNoNull[] feedback = new CustomerNoNull[customers.length]; - - for (int i = 0; i < customers.length; i++) { - Customer aCustomer = customers[i]; - CustomerNoNull newOne = new CustomerNoNull(); - - newOne.setId(aCustomer.getId()); - newOne.setFirstName(aCustomer.getFirstName()); - newOne.setLastName(aCustomer.getLastName()); - newOne.setStreet(aCustomer.getStreet()); - newOne.setCity(aCustomer.getCity()); - newOne.setPostalCode(aCustomer.getPostalCode()); - newOne.setState(aCustomer.getState()); - newOne.setPhoneNumber(aCustomer.getPhoneNumber()); - newOne.setEmail(aCustomer.getEmail()); - - feedback[i] = newOne; - } - - return feedback; - } - -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java deleted file mode 100644 index 1b62fb2c06..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNamesNoNull.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.jsonoptimization; - -import com.fasterxml.jackson.annotation.JsonInclude; - -@JsonInclude(JsonInclude.Include.NON_NULL) -public class CustomerShortNamesNoNull extends CustomerShortNames { - - @Override - public String toString() { - return "CustomerShortNamesNoNull [toString()=" + super.toString() + "]"; - } - - public static CustomerShortNamesNoNull[] fromCustomers(Customer[] customers) { - CustomerShortNamesNoNull[] feedback = new CustomerShortNamesNoNull[customers.length]; - - for (int i = 0; i < customers.length; i++) { - Customer aCustomer = customers[i]; - CustomerShortNamesNoNull newOne = new CustomerShortNamesNoNull(); - - newOne.setId(aCustomer.getId()); - newOne.setFirstName(aCustomer.getFirstName()); - newOne.setLastName(aCustomer.getLastName()); - newOne.setStreet(aCustomer.getStreet()); - newOne.setCity(aCustomer.getCity()); - newOne.setPostalCode(aCustomer.getPostalCode()); - newOne.setState(aCustomer.getState()); - newOne.setPhoneNumber(aCustomer.getPhoneNumber()); - newOne.setEmail(aCustomer.getEmail()); - - feedback[i] = newOne; - } - - return feedback; - } - -} diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java index e9bd044869..5734518fad 100644 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -15,6 +15,7 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import com.fasterxml.jackson.annotation.JsonInclude.Include; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectWriter; @@ -23,14 +24,14 @@ import com.fasterxml.jackson.databind.module.SimpleModule; class JsonOptimizationUnitTest { private static final String TEST_LABEL_DEFAULT_JSON = "Default JSON"; private static final String TEST_LABEL_DEFAULT_JSON_NO_NULL = "Default JSON without null"; - private static final String TEST_LABEL_SHORT_NAMES = "Shorter attribute names"; - private static final String TEST_LABEL_SHORT_NAMES_NO_NULL = "Shorter attribute names without null"; + private static final String TEST_LABEL_SHORT_NAMES = "Shorter field names"; + private static final String TEST_LABEL_SHORT_NAMES_NO_NULL = "Shorter field names without null"; private static final String TEST_LABEL_CUSTOM_SERIALIZER = "Custom serializer"; private static final String TEST_LABEL_SLIM_CUSTOM_SERIALIZER = "Slim custom serializer"; private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; - private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter attribute names"; - private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###"); - private static DecimalFormat PERCENT_FORMATTER = new DecimalFormat("###"); + private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter field names"; + private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###.0"); + private static DecimalFormat PERCENT_FORMATTER = new DecimalFormat("###.0"); private static Customer[] customers; private ObjectMapper mapper; private static int defaultJsonLength; @@ -41,6 +42,9 @@ class JsonOptimizationUnitTest { ObjectMapper oneTimeMapper = new ObjectMapper(); byte[] feedback = oneTimeMapper.writeValueAsBytes(customers); defaultJsonLength = feedback.length; + System.out.println(); + System.out.println("Default JSON length: " + defaultJsonLength); + System.out.println(); } @BeforeEach @@ -63,8 +67,8 @@ class JsonOptimizationUnitTest { @Test void testDefaultNoNull() throws IOException { printBanner(TEST_LABEL_DEFAULT_JSON_NO_NULL); - CustomerNoNull[] defaultNoNull = CustomerNoNull.fromCustomers(customers); - byte[] plainJson = createPlainJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, defaultNoNull); + mapper.setSerializationInclusion(Include.NON_NULL); + byte[] plainJson = createPlainJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, customers); compressJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, plainJson); } @@ -79,8 +83,9 @@ class JsonOptimizationUnitTest { @Test void testShortNamesNoNull() throws IOException { printBanner(TEST_LABEL_SHORT_NAMES_NO_NULL); - CustomerShortNamesNoNull[] shorterOnesNoNull = CustomerShortNamesNoNull.fromCustomers(customers); - byte[] shorterJson = createPlainJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterOnesNoNull); + CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); + mapper.setSerializationInclusion(Include.NON_NULL); + byte[] shorterJson = createPlainJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterOnes); compressJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterJson); } @@ -135,13 +140,15 @@ class JsonOptimizationUnitTest { } void compressJson(String label, byte[] plainJson) throws IOException { - ByteArrayOutputStream outpuStream = new ByteArrayOutputStream(); - GZIPOutputStream gzipStream = new GZIPOutputStream(outpuStream); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + GZIPOutputStream gzipStream = new GZIPOutputStream(outputStream); gzipStream.write(plainJson); gzipStream.close(); - byte[] gzippedJson = outpuStream.toByteArray(); - double percent = Math.round(gzippedJson.length * 100d / defaultJsonLength); - System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(gzippedJson.length / 1024) + outputStream.close(); + byte[] gzippedJson = outputStream.toByteArray(); + double length = gzippedJson.length / 1024d; + double percent = gzippedJson.length * 100d / defaultJsonLength; + System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(length) + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); } @@ -152,8 +159,9 @@ class JsonOptimizationUnitTest { System.out.println(prettyWritter.writeValueAsString(customers[0])); byte[] feedback = mapper.writeValueAsBytes(customers); - double percent = Math.round(feedback.length * 100d / defaultJsonLength); - System.out.println(label + " length: " + LENGTH_FORMATTER.format(feedback.length / 1024) + double length = feedback.length / 1024d; + double percent = feedback.length * 100d / defaultJsonLength; + System.out.println(label + " length: " + LENGTH_FORMATTER.format(length) + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); assertTrue(feedback.length > 1, label + " should be there"); From 8695b88a3ea901cdf982f6171a3067e1fb1b4e51 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 7 Sep 2020 12:22:18 +0100 Subject: [PATCH 027/260] BAEL-3326, "Optimizing JSON Schema for production use": Added article to README.md. --- json/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/json/README.md b/json/README.md index 0e50dcfddb..cfee611f4a 100644 --- a/json/README.md +++ b/json/README.md @@ -13,3 +13,4 @@ This module contains articles about JSON. - [Get a Value by Key in a JSONArray](https://www.baeldung.com/java-jsonarray-get-value-by-key) - [Iterating Over an Instance of org.json.JSONObject](https://www.baeldung.com/jsonobject-iteration) - [Escape JSON String in Java](https://www.baeldung.com/java-json-escaping) +- [Reducing JSON Data Size](https://www.baeldung.com/reducing-json-data-size) From 924517d16369041874fe5feaf9468b2f31e2400d Mon Sep 17 00:00:00 2001 From: Ricardo Caldas Date: Tue, 8 Sep 2020 12:11:29 -0300 Subject: [PATCH 028/260] BAEL-2503 Add a new section in Lombok builder article --- .../builder/RequiredFieldAnnotation.java | 19 ++++++++++++++++++ .../lombok/builder/RequiredFieldOverload.java | 20 +++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java create mode 100644 lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java diff --git a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java new file mode 100644 index 0000000000..f09f59baea --- /dev/null +++ b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java @@ -0,0 +1,19 @@ +package com.baeldung.lombok.builder; + +import lombok.Builder; +import lombok.NonNull; + +@Builder(builderMethodName = "hiddenBuilder") +public class RequiredFieldAnnotation { + @NonNull + private String name; + private String description; + + public static RequiredFieldAnnotationBuilder builder(String name) { + return hiddenBuilder().name(name); + } + + public void example() { + RequiredFieldAnnotation.builder("NameField").description("Field Description").build(); + } +} diff --git a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java new file mode 100644 index 0000000000..6b123e3cbe --- /dev/null +++ b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java @@ -0,0 +1,20 @@ +package com.baeldung.lombok.builder; + +import lombok.Builder; +import lombok.NonNull; + +@Builder +public class RequiredFieldOverload { + @NonNull + private String name; + private String description; + + public static RequiredFieldOverloadBuilder builder(String name) { + return new RequiredFieldOverloadBuilder().name(name); + } + + public void example() { + RequiredFieldAnnotation.builder("NameField").description("Field Description").build(); + } + +} From bf63939b9666a0ec8e122ebc837ed2126d78de57 Mon Sep 17 00:00:00 2001 From: Sam Millington Date: Tue, 8 Sep 2020 17:44:31 +0100 Subject: [PATCH 029/260] Revert "Non-Local Returns (#9934)" This reverts commit 0748a7534ff97866d1418f45eb0783db476439d7. --- .../main/kotlin/com/baeldung/inline/Inline.kt | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/core-kotlin-modules/core-kotlin-lang/src/main/kotlin/com/baeldung/inline/Inline.kt b/core-kotlin-modules/core-kotlin-lang/src/main/kotlin/com/baeldung/inline/Inline.kt index aaa6616ed1..3b179642ba 100644 --- a/core-kotlin-modules/core-kotlin-lang/src/main/kotlin/com/baeldung/inline/Inline.kt +++ b/core-kotlin-modules/core-kotlin-lang/src/main/kotlin/com/baeldung/inline/Inline.kt @@ -22,30 +22,6 @@ fun main() { numbers.each { println(random * it) } // capturing the random variable } -fun namedFunction(): Int { - return 42 -} - -fun anonymous(): () -> Int { - return fun(): Int { - return 42 - } -} - -inline fun List.eachIndexed(f: (Int, T) -> Unit) { - for (i in indices) { - f(i, this[i]) - } -} - -fun List.indexOf(x: T): Int { - eachIndexed { index, value -> - if (value == x) return index - } - - return -1 -} - /** * Generates a random number. */ From ae5ee571b9c7528f70e47dc7d12b038376032fc2 Mon Sep 17 00:00:00 2001 From: mikr Date: Thu, 10 Sep 2020 01:08:03 +0200 Subject: [PATCH 030/260] Java-2394 Create default and integration profile for JDK-9 and above modules --- .../{AppTest.java => AppUnitTest.java} | 6 +- core-java-modules/core-java-11/pom.xml | 2 +- ...ingAPITest.java => StringAPIUnitTest.java} | 2 +- .../{PersonTest.java => PersonUnitTest.java} | 2 +- core-java-modules/core-java-9/pom.xml | 11 +++ ...esTest.java => MethodHandlesUnitTest.java} | 2 +- ...> TimestampToStringConverterUnitTest.java} | 2 +- .../consumermodule/pom.xml | 2 +- .../decoupling-pattern1/servicemodule/pom.xml | 3 +- .../providermodule/pom.xml | 2 +- .../decoupling-pattern2/servicemodule/pom.xml | 3 +- ...a => CurrentDirectoryFetcherUnitTest.java} | 2 +- .../multimodulemavenproject/daomodule/pom.xml | 4 + .../entitymodule/pom.xml | 4 + .../mainappmodule/pom.xml | 4 + .../userdaomodule/pom.xml | 4 + core-java-modules/pom.xml | 20 ---- pom.xml | 98 +++++++++++++++++++ 18 files changed, 140 insertions(+), 33 deletions(-) rename core-java-modules/core-java-10/src/test/java/com/baeldung/{AppTest.java => AppUnitTest.java} (82%) rename core-java-modules/core-java-12/src/test/java/com/baeldung/string/{StringAPITest.java => StringAPIUnitTest.java} (97%) rename core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/{PersonTest.java => PersonUnitTest.java} (99%) rename core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/{MethodHandlesTest.java => MethodHandlesUnitTest.java} (99%) rename core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/{TimestampToStringConverterTest.java => TimestampToStringConverterUnitTest.java} (91%) rename core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/{CurrentDirectoryFetcherTest.java => CurrentDirectoryFetcherUnitTest.java} (95%) diff --git a/core-java-modules/core-java-10/src/test/java/com/baeldung/AppTest.java b/core-java-modules/core-java-10/src/test/java/com/baeldung/AppUnitTest.java similarity index 82% rename from core-java-modules/core-java-10/src/test/java/com/baeldung/AppTest.java rename to core-java-modules/core-java-10/src/test/java/com/baeldung/AppUnitTest.java index c9f61455bd..73eb8e661a 100644 --- a/core-java-modules/core-java-10/src/test/java/com/baeldung/AppTest.java +++ b/core-java-modules/core-java-10/src/test/java/com/baeldung/AppUnitTest.java @@ -7,7 +7,7 @@ import junit.framework.TestSuite; /** * Unit test for simple App. */ -public class AppTest +public class AppUnitTest extends TestCase { /** @@ -15,7 +15,7 @@ public class AppTest * * @param testName name of the test case */ - public AppTest( String testName ) + public AppUnitTest(String testName ) { super( testName ); } @@ -25,7 +25,7 @@ public class AppTest */ public static Test suite() { - return new TestSuite( AppTest.class ); + return new TestSuite( AppUnitTest.class ); } /** diff --git a/core-java-modules/core-java-11/pom.xml b/core-java-modules/core-java-11/pom.xml index bbc4219eaa..2f7f5a6bcf 100644 --- a/core-java-modules/core-java-11/pom.xml +++ b/core-java-modules/core-java-11/pom.xml @@ -107,7 +107,7 @@ benchmarks 1.22 10.0.0 - 10.0.0 + 3.2.4 diff --git a/core-java-modules/core-java-12/src/test/java/com/baeldung/string/StringAPITest.java b/core-java-modules/core-java-12/src/test/java/com/baeldung/string/StringAPIUnitTest.java similarity index 97% rename from core-java-modules/core-java-12/src/test/java/com/baeldung/string/StringAPITest.java rename to core-java-modules/core-java-12/src/test/java/com/baeldung/string/StringAPIUnitTest.java index 3d80a36bf6..e5f21bb25f 100644 --- a/core-java-modules/core-java-12/src/test/java/com/baeldung/string/StringAPITest.java +++ b/core-java-modules/core-java-12/src/test/java/com/baeldung/string/StringAPIUnitTest.java @@ -5,7 +5,7 @@ import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; -public class StringAPITest { +public class StringAPIUnitTest { @Test public void whenPositiveArgument_thenReturnIndentedString() { diff --git a/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/PersonTest.java b/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/PersonUnitTest.java similarity index 99% rename from core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/PersonTest.java rename to core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/PersonUnitTest.java index 9bed3dab8f..594ced56cd 100644 --- a/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/PersonTest.java +++ b/core-java-modules/core-java-14/src/test/java/com/baeldung/java14/record/PersonUnitTest.java @@ -7,7 +7,7 @@ import static org.junit.Assert.assertTrue; import org.junit.Test; -public class PersonTest { +public class PersonUnitTest { @Test public void givenSameNameAndAddress_whenEquals_thenPersonsEqual() { diff --git a/core-java-modules/core-java-9/pom.xml b/core-java-modules/core-java-9/pom.xml index 0669d6f597..d7894934b1 100644 --- a/core-java-modules/core-java-9/pom.xml +++ b/core-java-modules/core-java-9/pom.xml @@ -44,6 +44,16 @@ commons-collections4 ${commons-collections4.version} + + org.apache.commons + commons-lang3 + 3.11 + + + commons-io + commons-io + 2.7 + @@ -77,6 +87,7 @@ 1.9 25.1-jre 4.1 + 3.2.2 diff --git a/core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/MethodHandlesTest.java b/core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/MethodHandlesUnitTest.java similarity index 99% rename from core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/MethodHandlesTest.java rename to core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/MethodHandlesUnitTest.java index 7646755358..7aa74a490f 100644 --- a/core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/MethodHandlesTest.java +++ b/core-java-modules/core-java-9/src/test/java/com/baeldung/java9/methodhandles/MethodHandlesUnitTest.java @@ -17,7 +17,7 @@ import org.junit.Test; /** * Test case for the {@link MethodHandles} API */ -public class MethodHandlesTest { +public class MethodHandlesUnitTest { @Test public void givenConcatMethodHandle_whenInvoked_thenCorrectlyConcatenated() throws Throwable { diff --git a/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterUnitTest.java similarity index 91% rename from core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java rename to core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterUnitTest.java index b25ff2edb3..b928047a9a 100644 --- a/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterTest.java +++ b/core-java-modules/core-java-datetime-string/src/test/java/com/baeldung/timestamp/TimestampToStringConverterUnitTest.java @@ -6,7 +6,7 @@ import org.junit.jupiter.api.Test; import java.sql.Timestamp; import java.time.format.DateTimeFormatter; -public class TimestampToStringConverterTest { +public class TimestampToStringConverterUnitTest { @Test public void givenDatePattern_whenFormatting_thenResultingStringIsCorrect() { diff --git a/core-java-modules/core-java-jpms/decoupling-pattern1/consumermodule/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern1/consumermodule/pom.xml index fe6689dcc3..fb6d2b1065 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern1/consumermodule/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern1/consumermodule/pom.xml @@ -17,7 +17,7 @@ com.baeldung.servicemodule - servicemodule + servicemodule1 ${servicemodule.version} diff --git a/core-java-modules/core-java-jpms/decoupling-pattern1/servicemodule/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern1/servicemodule/pom.xml index c2da228ce6..4c811ea866 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern1/servicemodule/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern1/servicemodule/pom.xml @@ -4,7 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - servicemodule + com.baeldung.servicemodule + servicemodule1 jar diff --git a/core-java-modules/core-java-jpms/decoupling-pattern2/providermodule/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern2/providermodule/pom.xml index 3e8d5c0c39..1e29df7053 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern2/providermodule/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern2/providermodule/pom.xml @@ -17,7 +17,7 @@ com.baeldung.servicemodule - servicemodule + servicemodule2 ${servicemodule.version} diff --git a/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml b/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml index 51d64998df..9a687c9ae7 100644 --- a/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml +++ b/core-java-modules/core-java-jpms/decoupling-pattern2/servicemodule/pom.xml @@ -4,7 +4,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - servicemodule + com.baeldung.servicemodule + servicemodule2 1.0 diff --git a/core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/CurrentDirectoryFetcherTest.java b/core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/CurrentDirectoryFetcherUnitTest.java similarity index 95% rename from core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/CurrentDirectoryFetcherTest.java rename to core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/CurrentDirectoryFetcherUnitTest.java index dbaad211d9..c92049816f 100644 --- a/core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/CurrentDirectoryFetcherTest.java +++ b/core-java-modules/core-java-os/src/test/java/com/baeldung/core/pwd/CurrentDirectoryFetcherUnitTest.java @@ -4,7 +4,7 @@ import static org.junit.Assert.assertTrue; import org.junit.Test; -public class CurrentDirectoryFetcherTest { +public class CurrentDirectoryFetcherUnitTest { private static final String CURRENT_DIR = "core-java-os"; diff --git a/core-java-modules/multimodulemavenproject/daomodule/pom.xml b/core-java-modules/multimodulemavenproject/daomodule/pom.xml index 15f1215d89..56c2d70d24 100644 --- a/core-java-modules/multimodulemavenproject/daomodule/pom.xml +++ b/core-java-modules/multimodulemavenproject/daomodule/pom.xml @@ -20,6 +20,10 @@ org.apache.maven.plugins maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + diff --git a/core-java-modules/multimodulemavenproject/entitymodule/pom.xml b/core-java-modules/multimodulemavenproject/entitymodule/pom.xml index 3e5a478299..00ad56b3ab 100644 --- a/core-java-modules/multimodulemavenproject/entitymodule/pom.xml +++ b/core-java-modules/multimodulemavenproject/entitymodule/pom.xml @@ -20,6 +20,10 @@ org.apache.maven.plugins maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + diff --git a/core-java-modules/multimodulemavenproject/mainappmodule/pom.xml b/core-java-modules/multimodulemavenproject/mainappmodule/pom.xml index 196e58a419..a9fe04b108 100644 --- a/core-java-modules/multimodulemavenproject/mainappmodule/pom.xml +++ b/core-java-modules/multimodulemavenproject/mainappmodule/pom.xml @@ -38,6 +38,10 @@ org.apache.maven.plugins maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + diff --git a/core-java-modules/multimodulemavenproject/userdaomodule/pom.xml b/core-java-modules/multimodulemavenproject/userdaomodule/pom.xml index f4a7e5c8f8..150c10b68f 100644 --- a/core-java-modules/multimodulemavenproject/userdaomodule/pom.xml +++ b/core-java-modules/multimodulemavenproject/userdaomodule/pom.xml @@ -33,6 +33,10 @@ org.apache.maven.plugins maven-compiler-plugin + + ${maven.compiler.source} + ${maven.compiler.target} + diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 36fca8de93..a6aecef741 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -18,20 +18,9 @@ core-java - - - - - core-java-8 core-java-8-2 - - - - - - core-java-annotations core-java-arrays-sorting @@ -51,7 +40,6 @@ core-java-collections-maps core-java-collections-maps-2 core-java-collections-maps-3 - core-java-concurrency-2 core-java-concurrency-advanced @@ -65,10 +53,7 @@ core-java-8-datetime-2 - core-java-date-operations-2 - - core-java-8-datetime core-java-exceptions @@ -85,7 +70,6 @@ core-java-jar core-java-jndi - core-java-jvm core-java-jvm-2 @@ -113,7 +97,6 @@ core-java-nio-2 core-java-optional - core-java-perf @@ -138,9 +121,6 @@ core-java-sun core-java-regex - - - pre-jpms diff --git a/pom.xml b/pom.xml index ffdfe4cffa..6d5c810784 100644 --- a/pom.xml +++ b/pom.xml @@ -1340,6 +1340,104 @@ + + default-jdk9-and-above + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + 3 + true + + SpringContextTest + **/*UnitTest + + + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/JdbcTest.java + **/*LiveTest.java + + + + + + + + + core-java-modules/core-java-9 + core-java-modules/core-java-9-improvements + + + core-java-modules/core-java-9-streams + core-java-modules/core-java-10 + + + + + core-java-modules/core-java-collections-set + + + + core-java-modules/core-java-jpms + + + core-java-modules/multimodulemavenproject + + + + + + integration-jdk9-and-above + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/*ManualTest.java + **/*LiveTest.java + + + **/*IntegrationTest.java + **/*IntTest.java + + + + + + + + core-java-modules/core-java-9 + core-java-modules/core-java-9-improvements + + + core-java-modules/core-java-9-streams + core-java-modules/core-java-10 + + + + + core-java-modules/core-java-collections-set + + + + core-java-modules/core-java-jpms + + + core-java-modules/multimodulemavenproject + + + From 43fb479c815a010c983560885f8b713eefd4347f Mon Sep 17 00:00:00 2001 From: Usman Mohyuddin Date: Thu, 10 Sep 2020 22:39:44 +0500 Subject: [PATCH 031/260] update the PR with removal of README file and update pom.xml files according to comments --- core-groovy-strings/README.md | 8 -- core-groovy-strings/pom.xml | 114 +++++++++++++----- .../removeprefix/RemovePrefixTest.groovy | 37 ++++-- pom.xml | 2 + 4 files changed, 108 insertions(+), 53 deletions(-) delete mode 100644 core-groovy-strings/README.md diff --git a/core-groovy-strings/README.md b/core-groovy-strings/README.md deleted file mode 100644 index e3202e2dd0..0000000000 --- a/core-groovy-strings/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Core Groovy Strings - -This module contains articles about core Groovy strings concepts - -## Relevant articles: - -- [Remove prefix in Groovy]() -- [[<-- Prev]](/core-groovy-strings) diff --git a/core-groovy-strings/pom.xml b/core-groovy-strings/pom.xml index 059b53662c..1144d748ee 100644 --- a/core-groovy-strings/pom.xml +++ b/core-groovy-strings/pom.xml @@ -3,70 +3,120 @@ xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - com.baeldung 4.0.0 core-groovy-strings 1.0-SNAPSHOT core-groovy-strings jar - + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + org.codehaus.groovy - groovy-all + groovy ${groovy.version} + + + org.codehaus.groovy + groovy-all + ${groovy-all.version} pom + + org.codehaus.groovy + groovy-dateutil + ${groovy.version} + + + org.codehaus.groovy + groovy-sql + ${groovy-sql.version} + org.junit.platform junit-platform-runner ${junit.platform.version} test + + org.hsqldb + hsqldb + ${hsqldb.version} + test + + + org.spockframework + spock-core + ${spock-core.version} + test + - src/main/groovy - src/main/java - org.codehaus.groovy - groovy-eclipse-compiler - ${groovy.compiler.version} - true + org.codehaus.gmavenplus + gmavenplus-plugin + ${gmavenplus-plugin.version} + + + + addSources + addTestSources + compile + compileTests + + + - maven-compiler-plugin - ${compiler.plugin.version} - - groovy-eclipse-compiler - ${java.version} - ${java.version} - + maven-failsafe-plugin + ${maven-failsafe-plugin.version} - org.codehaus.groovy - groovy-eclipse-compiler - ${groovy.compiler.version} - - - org.codehaus.groovy - groovy-eclipse-batch - ${groovy.version}-01 + org.junit.platform + junit-platform-surefire-provider + ${junit.platform.version} + + + junit5 + + integration-test + verify + + + + **/*Test5.java + + + + - + + + + central + https://jcenter.bintray.com + + + 1.0.0 - 1.1.3 - 2.5.7 - 2.20.1 - 3.8.0 - 3.3.0-01 - 1.8 + 2.5.6 + 2.5.6 + 2.5.6 + 2.4.0 + 1.1-groovy-2.4 + 1.6 - + \ No newline at end of file diff --git a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy index aa9e65d98d..4cdcb4ddfa 100644 --- a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy +++ b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy @@ -9,23 +9,28 @@ class RemovePrefixTest { @Test public void whenCasePrefixIsRemoved_thenReturnTrue() { def trimPrefix = { - it.startsWith('Groovy') ? it.minus('Groovy') : it + it.startsWith('Groovy-') ? it.minus('Groovy-') : it } + + def actual = trimPrefix("Groovy-Tutorials at Baeldung") + def expected = "Tutorials at Baeldung" - Assert.assertEquals(trimPrefix("GroovyTutorials at Baeldung"), "Tutorials at Baeldung") + Assert.assertEquals(expected, actual) } @Test - public void whenPrefixIsRemovedWithIgnoreCase_thenReturnTrue() { + public void whenPrefixIsRemoved_thenReturnTrue() { String prefix = "groovy-" String trimPrefix = "Groovy-Tutorials at Baeldung" - def result; + def actual; if(trimPrefix.startsWithIgnoreCase(prefix)) { - result = trimPrefix.substring(prefix.length()) + actual = trimPrefix.substring(prefix.length()) } + + def expected = "Tutorials at Baeldung" - Assert.assertEquals("Tutorials at Baeldung", result) + Assert.assertEquals(expected, actual) } @Test @@ -33,26 +38,32 @@ class RemovePrefixTest { def regex = ~"^([Gg])roovy-" String trimPrefix = "Groovy-Tutorials at Baeldung" - String result = trimPrefix - regex + String actual = trimPrefix - regex + + def expected = "Tutorials at Baeldung" - Assert.assertEquals("Tutorials at Baeldung", result) + Assert.assertEquals(expected, actual) } @Test public void whenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { def regex = ~"^groovy" String trimPrefix = "groovyTutorials at Baeldung's groovy page" - String result = trimPrefix.replaceFirst(regex, "") + String actual = trimPrefix.replaceFirst(regex, "") - Assert.assertEquals("Tutorials at Baeldung's groovy page", result) + def expected = "Tutorials at Baeldung's groovy page" + + Assert.assertEquals(expected, actual) } @Test public void whenPrefixIsRemovedUsingReplaceAll_thenReturnTrue() { String trimPrefix = "groovyTutorials at Baeldung groovy" - String result = trimPrefix.replaceAll(/^groovy/, "") + String actual = trimPrefix.replaceAll(/^groovy/, "") + + def expected = "Tutorials at Baeldung groovy" - Assert.assertEquals("Tutorials at Baeldung groovy", result) + Assert.assertEquals(expected, actual) } -} +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index ffdfe4cffa..f43318bcaa 100644 --- a/pom.xml +++ b/pom.xml @@ -383,6 +383,7 @@ core-groovy core-groovy-2 core-groovy-collections + core-groovy-strings core-java-modules core-kotlin-modules @@ -898,6 +899,7 @@ core-groovy core-groovy-2 core-groovy-collections + core-groovy-strings core-java-modules core-kotlin-modules From 56cbfb1c6f7a6c60653f5c9f00a3c3c6a06645d9 Mon Sep 17 00:00:00 2001 From: Ricardo Caldas Date: Thu, 10 Sep 2020 17:16:46 -0300 Subject: [PATCH 032/260] BAEL-2503 Add a new section in Lombok builder article --- .../builder/RequiredFieldAnnotation.java | 16 +++++++------- .../lombok/builder/RequiredFieldOverload.java | 20 ------------------ .../builder/RequiredFieldAnnotationTest.java | 21 +++++++++++++++++++ 3 files changed, 28 insertions(+), 29 deletions(-) delete mode 100644 lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java create mode 100644 lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java diff --git a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java index f09f59baea..8781101613 100644 --- a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java +++ b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java @@ -1,19 +1,17 @@ package com.baeldung.lombok.builder; import lombok.Builder; +import lombok.Getter; import lombok.NonNull; -@Builder(builderMethodName = "hiddenBuilder") +@Builder(builderMethodName = "internalBuilder") +@Getter public class RequiredFieldAnnotation { - @NonNull - private String name; - private String description; + + @NonNull String name; + String description; public static RequiredFieldAnnotationBuilder builder(String name) { - return hiddenBuilder().name(name); - } - - public void example() { - RequiredFieldAnnotation.builder("NameField").description("Field Description").build(); + return internalBuilder().name(name); } } diff --git a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java deleted file mode 100644 index 6b123e3cbe..0000000000 --- a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldOverload.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.lombok.builder; - -import lombok.Builder; -import lombok.NonNull; - -@Builder -public class RequiredFieldOverload { - @NonNull - private String name; - private String description; - - public static RequiredFieldOverloadBuilder builder(String name) { - return new RequiredFieldOverloadBuilder().name(name); - } - - public void example() { - RequiredFieldAnnotation.builder("NameField").description("Field Description").build(); - } - -} diff --git a/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java b/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java new file mode 100644 index 0000000000..9d347327d4 --- /dev/null +++ b/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java @@ -0,0 +1,21 @@ +package com.baeldung.lombok.builder; + +import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; + +import static org.junit.jupiter.api.Assertions.*; + +public class RequiredFieldAnnotationTest { + RequiredFieldAnnotation requiredFieldTest; + + @BeforeEach + void setUp() { + requiredFieldTest = RequiredFieldAnnotation.builder("NameField").description("Field Description").build(); + } + + @Test + public void givenBuilderWithRequiredParameter_thenParameterIsPresent() { + assertEquals(requiredFieldTest.getName(), "NameField"); + } + +} \ No newline at end of file From 751aa761594c834efae0f2074ac4fd1175706b6a Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Fri, 11 Sep 2020 01:08:12 +0200 Subject: [PATCH 033/260] [BAEL-4583] Improvement- Java Period --- .../com/baeldung/date/DateDiffUnitTest.java | 63 +++++++++++++------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java index 226556d4bb..9a0779ccac 100644 --- a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java +++ b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java @@ -1,6 +1,8 @@ package com.baeldung.date; -import static org.junit.Assert.assertEquals; +import org.joda.time.Days; +import org.joda.time.Minutes; +import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -16,7 +18,7 @@ import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; -import org.junit.Test; +import static org.junit.Assert.*; public class DateDiffUnitTest { @@ -29,18 +31,39 @@ public class DateDiffUnitTest { long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime()); long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test - public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { - LocalDate now = LocalDate.now(); - LocalDate sixDaysBehind = now.minusDays(6); + public void givenTwoDatesInJava8_whenUsingPeriodGetDays_thenWorks() { + LocalDate aDate = LocalDate.of(2020, 9, 11); + LocalDate sixDaysBehind = aDate.minusDays(6); - Period period = Period.between(now, sixDaysBehind); + Period period = Period.between(aDate, sixDaysBehind); int diff = Math.abs(period.getDays()); - assertEquals(diff, 6); + assertEquals(6, diff); + } + + @Test + public void givenTwoDatesInJava8_whenUsingPeriodGetDays_thenDoesNotWork() { + LocalDate aDate = LocalDate.of(2020, 9, 11); + LocalDate sixtyDaysBehind = aDate.minusDays(60); + Period period = Period.between(aDate, sixtyDaysBehind); + int diff = Math.abs(period.getDays()); + //not equals + assertNotEquals(60, diff); + } + + @Test + public void givenTwoDatesInJava8_whenUsingPeriod_thenWeGet0Year1Month29Days() { + LocalDate aDate = LocalDate.of(2020, 9, 11); + LocalDate sixtyDaysBehind = aDate.minusDays(60); + Period period = Period.between(aDate, sixtyDaysBehind); + int years = Math.abs(period.getYears()); + int months = Math.abs(period.getMonths()); + int days = Math.abs(period.getDays()); + assertArrayEquals(new int[] { 0, 1, 29 }, new int[] { years, months, days }); } @Test @@ -51,7 +74,7 @@ public class DateDiffUnitTest { Duration duration = Duration.between(now, sixMinutesBehind); long diff = Math.abs(duration.toMinutes()); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test @@ -61,7 +84,7 @@ public class DateDiffUnitTest { long diff = ChronoUnit.SECONDS.between(now, tenSecondsLater); - assertEquals(diff, 10); + assertEquals(10, diff); } @Test @@ -69,9 +92,9 @@ public class DateDiffUnitTest { LocalDateTime ldt = LocalDateTime.now(); ZonedDateTime now = ldt.atZone(ZoneId.of("America/Montreal")); ZonedDateTime sixDaysBehind = now.withZoneSameInstant(ZoneId.of("Asia/Singapore")) - .minusDays(6); + .minusDays(6); long diff = ChronoUnit.DAYS.between(sixDaysBehind, now); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test @@ -81,7 +104,7 @@ public class DateDiffUnitTest { long diff = now.until(tenSecondsLater, ChronoUnit.SECONDS); - assertEquals(diff, 10); + assertEquals(10, diff); } @Test @@ -89,10 +112,9 @@ public class DateDiffUnitTest { org.joda.time.LocalDate now = org.joda.time.LocalDate.now(); org.joda.time.LocalDate sixDaysBehind = now.minusDays(6); - org.joda.time.Period period = new org.joda.time.Period(now, sixDaysBehind); - long diff = Math.abs(period.getDays()); + long diff = Math.abs(Days.daysBetween(now, sixDaysBehind).getDays()); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test @@ -100,8 +122,9 @@ public class DateDiffUnitTest { org.joda.time.LocalDateTime now = org.joda.time.LocalDateTime.now(); org.joda.time.LocalDateTime sixMinutesBehind = now.minusMinutes(6); - org.joda.time.Period period = new org.joda.time.Period(now, sixMinutesBehind); - long diff = Math.abs(period.getDays()); + long diff = Math.abs(Minutes.minutesBetween(now, sixMinutesBehind).getMinutes()); + assertEquals(6, diff); + } @Test @@ -111,6 +134,6 @@ public class DateDiffUnitTest { long diff = Math.abs(now.numDaysFrom(sixDaysBehind)); - assertEquals(diff, 6); + assertEquals(6, diff); } -} \ No newline at end of file +} From 2096c22d436935fb843b102a9ed553951c5c62c1 Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Sat, 12 Sep 2020 16:50:40 -0600 Subject: [PATCH 034/260] BAEL-4453 Reversing a Linked List in Java --- .../linkedlist/LinkedListReversal.java | 30 ++++++++++ .../algorithms/linkedlist/ListNode.java | 28 +++++++++ .../LinkedListReversalUnitTest.java | 59 +++++++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/LinkedListReversal.java create mode 100644 algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/ListNode.java create mode 100644 algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/linkedlist/LinkedListReversalUnitTest.java diff --git a/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/LinkedListReversal.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/LinkedListReversal.java new file mode 100644 index 0000000000..93402133ff --- /dev/null +++ b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/LinkedListReversal.java @@ -0,0 +1,30 @@ +package com.baeldung.algorithms.linkedlist; + +public class LinkedListReversal { + + ListNode reverseList(ListNode head) { + ListNode previous = null; + ListNode current = head; + while (current != null) { + ListNode nextElement = current.getNext(); + current.setNext(previous); + previous = current; + current = nextElement; + } + return previous; + } + + ListNode reverseListRecursive(ListNode head) { + if (head == null) { + return null; + } + if (head.getNext() == null) { + return head; + } + ListNode node = reverseListRecursive(head.getNext()); + head.getNext().setNext(head); + head.setNext(null); + return node; + } + +} diff --git a/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/ListNode.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/ListNode.java new file mode 100644 index 0000000000..de2e93a65c --- /dev/null +++ b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/linkedlist/ListNode.java @@ -0,0 +1,28 @@ +package com.baeldung.algorithms.linkedlist; + +public class ListNode { + + private int data; + private ListNode next; + + ListNode(int data) { + this.data = data; + this.next = null; + } + + public int getData() { + return data; + } + + public ListNode getNext() { + return next; + } + + public void setData(int data) { + this.data = data; + } + + public void setNext(ListNode next) { + this.next = next; + } +} diff --git a/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/linkedlist/LinkedListReversalUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/linkedlist/LinkedListReversalUnitTest.java new file mode 100644 index 0000000000..0940677959 --- /dev/null +++ b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/linkedlist/LinkedListReversalUnitTest.java @@ -0,0 +1,59 @@ +package com.baeldung.algorithms.linkedlist; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class LinkedListReversalUnitTest { + @Test + public void givenLinkedList_whenIterativeReverse_thenOutputCorrectResult() { + ListNode head = constructLinkedList(); + ListNode node = head; + for (int i = 1; i <= 5; i++) { + assertNotNull(node); + assertEquals(i, node.getData()); + node = node.getNext(); + } + LinkedListReversal reversal = new LinkedListReversal(); + node = reversal.reverseList(head); + for (int i = 5; i >= 1; i--) { + assertNotNull(node); + assertEquals(i, node.getData()); + node = node.getNext(); + } + } + + @Test + public void givenLinkedList_whenRecursiveReverse_thenOutputCorrectResult() { + ListNode head = constructLinkedList(); + ListNode node = head; + for (int i = 1; i <= 5; i++) { + assertNotNull(node); + assertEquals(i, node.getData()); + node = node.getNext(); + } + LinkedListReversal reversal = new LinkedListReversal(); + node = reversal.reverseListRecursive(head); + for (int i = 5; i >= 1; i--) { + assertNotNull(node); + assertEquals(i, node.getData()); + node = node.getNext(); + } + } + + private ListNode constructLinkedList() { + ListNode head = null; + ListNode tail = null; + for (int i = 1; i <= 5; i++) { + ListNode node = new ListNode(i); + if (head == null) { + head = node; + } else { + tail.setNext(node); + } + tail = node; + } + return head; + } +} From 1b55f0a27e96ec5ff35aca2ee3636788d5f11f3d Mon Sep 17 00:00:00 2001 From: Harihar Das Date: Sun, 13 Sep 2020 10:54:49 +0200 Subject: [PATCH 035/260] Make gradle-wrapper a subdrirectory of gradle --- .../gradle-wrapper}/gradle/wrapper/README.md | 0 .../gradle-wrapper}/gradle/wrapper/gradle-wrapper.properties | 0 {gradle-wrapper => gradle/gradle-wrapper}/gradlew | 0 {gradle-wrapper => gradle/gradle-wrapper}/gradlew.bat | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename {gradle-wrapper => gradle/gradle-wrapper}/gradle/wrapper/README.md (100%) rename {gradle-wrapper => gradle/gradle-wrapper}/gradle/wrapper/gradle-wrapper.properties (100%) rename {gradle-wrapper => gradle/gradle-wrapper}/gradlew (100%) rename {gradle-wrapper => gradle/gradle-wrapper}/gradlew.bat (100%) diff --git a/gradle-wrapper/gradle/wrapper/README.md b/gradle/gradle-wrapper/gradle/wrapper/README.md similarity index 100% rename from gradle-wrapper/gradle/wrapper/README.md rename to gradle/gradle-wrapper/gradle/wrapper/README.md diff --git a/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties b/gradle/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from gradle-wrapper/gradle/wrapper/gradle-wrapper.properties rename to gradle/gradle-wrapper/gradle/wrapper/gradle-wrapper.properties diff --git a/gradle-wrapper/gradlew b/gradle/gradle-wrapper/gradlew similarity index 100% rename from gradle-wrapper/gradlew rename to gradle/gradle-wrapper/gradlew diff --git a/gradle-wrapper/gradlew.bat b/gradle/gradle-wrapper/gradlew.bat similarity index 100% rename from gradle-wrapper/gradlew.bat rename to gradle/gradle-wrapper/gradlew.bat From e756edec9296c722114e77b4bbe09d61f5f53fde Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 13 Sep 2020 21:05:10 +0530 Subject: [PATCH 036/260] add modules in parent pom build --- maven-modules/maven-plugins/pom.xml | 5 +++++ spring-cloud/pom.xml | 1 + 2 files changed, 6 insertions(+) diff --git a/maven-modules/maven-plugins/pom.xml b/maven-modules/maven-plugins/pom.xml index 43bcf1f422..4877f00a92 100644 --- a/maven-modules/maven-plugins/pom.xml +++ b/maven-modules/maven-plugins/pom.xml @@ -14,6 +14,11 @@ ../.. + + + maven-enforcer + + diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 99fde0daf4..ee7b80ffc1 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -43,6 +43,7 @@ spring-cloud-ribbon-retry spring-cloud-circuit-breaker spring-cloud-eureka-self-preservation + From 57b66fa5788ff711f92716540f87205a1af38f80 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Sun, 13 Sep 2020 21:40:14 +0200 Subject: [PATCH 037/260] JAVA-2404: Fix Spring MVC and Security config --- .../java/com/baeldung/spring/WebConfig.java | 2 +- .../src/main/webapp/WEB-INF/web.xml | 28 +++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java index 84b211a9bd..76e9abdbdb 100644 --- a/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java +++ b/spring-security-modules/spring-security-web-rest/src/main/java/com/baeldung/spring/WebConfig.java @@ -12,7 +12,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration -@ComponentScan("com.baeldung.web") +@ComponentScan("com.baeldung") @EnableWebMvc @EnableAsync public class WebConfig implements WebMvcConfigurer { diff --git a/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml index 663c17bc56..6321277c5b 100644 --- a/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml +++ b/spring-security-modules/spring-security-web-rest/src/main/webapp/WEB-INF/web.xml @@ -20,9 +20,9 @@ com.baeldung.spring - - org.springframework.web.context.ContextLoaderListener - + + + @@ -40,17 +40,17 @@ - - springSecurityFilterChain - org.springframework.web.filter.DelegatingFilterProxy - true - - - springSecurityFilterChain - /* - REQUEST - ASYNC - + + + + + + + + + + + From 5d1439378863657b54591ade01ef11e51d0ab313 Mon Sep 17 00:00:00 2001 From: mikr Date: Mon, 14 Sep 2020 12:21:57 +0200 Subject: [PATCH 038/260] Java-2136 Update Jackson version in main pom --- pom.xml | 3 +-- spring-dispatcher-servlet/pom.xml | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/pom.xml b/pom.xml index a2e09c0f91..49c9fd9413 100644 --- a/pom.xml +++ b/pom.xml @@ -1389,9 +1389,8 @@ 3.1.0 1.2 2.3.1 - 1.9.13 1.2 - 2.9.8 + 2.11.1 1.3 1.2.0 5.2.0 diff --git a/spring-dispatcher-servlet/pom.xml b/spring-dispatcher-servlet/pom.xml index 46e40722f1..21324e6757 100644 --- a/spring-dispatcher-servlet/pom.xml +++ b/spring-dispatcher-servlet/pom.xml @@ -40,11 +40,6 @@ javax.servlet.jsp-api ${javax.servlet.jsp-api.version} - - org.codehaus.jackson - jackson-mapper-asl - ${jackson-mapper-asl.version} - javax.servlet jstl From 6927cc7237978851c174ea1e3daec27d32ffe254 Mon Sep 17 00:00:00 2001 From: mikr Date: Mon, 14 Sep 2020 13:11:59 +0200 Subject: [PATCH 039/260] Java-2136 Use Jackson version from main pom in all other applicable modules --- json-2/pom.xml | 4 ++-- libraries-data-2/pom.xml | 2 +- libraries-http-2/pom.xml | 2 +- libraries-http/pom.xml | 2 +- metrics/pom.xml | 6 +++--- persistence-modules/hibernate-libraries/pom.xml | 1 - spring-5-mvc/pom.xml | 1 - .../spring-openapi-generator-api-client/pom.xml | 6 +++--- testing-modules/mockito-2/pom.xml | 1 - 9 files changed, 11 insertions(+), 14 deletions(-) diff --git a/json-2/pom.xml b/json-2/pom.xml index f0215a375f..53091d6245 100644 --- a/json-2/pom.xml +++ b/json-2/pom.xml @@ -53,12 +53,12 @@ com.fasterxml.jackson.core jackson-annotations - 2.11.0 + ${jackson.version} com.fasterxml.jackson.core jackson-databind - 2.11.0 + ${jackson.version} com.io-informatics.oss diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml index 26d8651cdd..0154823cca 100644 --- a/libraries-data-2/pom.xml +++ b/libraries-data-2/pom.xml @@ -168,7 +168,7 @@ 0.1.0 1.0.3 9.1.5.Final - 2.9.8 + 4.3.8.RELEASE 4.0.0 1.1.0 diff --git a/libraries-http-2/pom.xml b/libraries-http-2/pom.xml index 73fe6c66bd..3c0af51131 100644 --- a/libraries-http-2/pom.xml +++ b/libraries-http-2/pom.xml @@ -72,7 +72,7 @@ 3.14.2 2.8.5 3.14.2 - 2.9.8 + 1.0.3 9.4.19.v20190610 2.2.11 diff --git a/libraries-http/pom.xml b/libraries-http/pom.xml index cbc74ce132..74e00a7291 100644 --- a/libraries-http/pom.xml +++ b/libraries-http/pom.xml @@ -118,7 +118,7 @@ 2.8.5 4.5.3 - 2.9.8 + 3.6.2 3.14.2 1.23.0 diff --git a/metrics/pom.xml b/metrics/pom.xml index 92699c3fb8..07adf15936 100644 --- a/metrics/pom.xml +++ b/metrics/pom.xml @@ -66,12 +66,12 @@ com.fasterxml.jackson.core jackson-databind - ${fasterxml.jackson.version} + ${jackson.version} com.fasterxml.jackson.dataformat jackson-dataformat-smile - ${fasterxml.jackson.version} + ${jackson.version} @@ -93,7 +93,7 @@ 3.1.0 0.12.17 0.12.0.RELEASE - 2.9.1 + 2.0.7.RELEASE 3.11.1 1.1.0 diff --git a/persistence-modules/hibernate-libraries/pom.xml b/persistence-modules/hibernate-libraries/pom.xml index 808c47133c..f67309cf43 100644 --- a/persistence-modules/hibernate-libraries/pom.xml +++ b/persistence-modules/hibernate-libraries/pom.xml @@ -170,7 +170,6 @@ 29.0-jre 2.9.7 5.4.14.Final - 2.10.3 3.27.0-GA 2.3.1 2.0.0 diff --git a/spring-5-mvc/pom.xml b/spring-5-mvc/pom.xml index fd9868ad66..0bb69d8057 100644 --- a/spring-5-mvc/pom.xml +++ b/spring-5-mvc/pom.xml @@ -173,7 +173,6 @@ 2.9.0 - 2.9.9 1.2.71 4.5.8 com.baeldung.Spring5Application diff --git a/spring-swagger-codegen/spring-openapi-generator-api-client/pom.xml b/spring-swagger-codegen/spring-openapi-generator-api-client/pom.xml index 7c6de543ae..3074849e4c 100644 --- a/spring-swagger-codegen/spring-openapi-generator-api-client/pom.xml +++ b/spring-swagger-codegen/spring-openapi-generator-api-client/pom.xml @@ -90,7 +90,7 @@ com.fasterxml.jackson.core jackson-databind - ${jackson-databind-version} + ${jackson-version} com.fasterxml.jackson.jaxrs @@ -264,8 +264,8 @@ 1.5.22 4.3.9.RELEASE - 2.10.1 - 2.10.1 + 2.11.1 + 0.2.1 2.9.10 1.0.0 diff --git a/testing-modules/mockito-2/pom.xml b/testing-modules/mockito-2/pom.xml index 340af89c82..055debe615 100644 --- a/testing-modules/mockito-2/pom.xml +++ b/testing-modules/mockito-2/pom.xml @@ -30,7 +30,6 @@ 2.21.0 - 2.10.3 From c4396dd1bd453128dc0e83de26742c83415533e1 Mon Sep 17 00:00:00 2001 From: mikr Date: Mon, 14 Sep 2020 16:30:00 +0200 Subject: [PATCH 040/260] Java-2797 Cleanup maven-java-11/multimodule-maven-project --- .../entitymodule/pom.xml | 22 ---------- .../main/java/com/baeldung/entity/User.java | 19 --------- .../src/main/java/module-info.java | 3 -- .../mainappmodule/pom.xml | 41 ------------------- .../com/baeldung/mainapp/Application.java | 19 --------- .../src/main/java/module-info.java | 6 --- pom.xml | 2 - 7 files changed, 112 deletions(-) delete mode 100644 maven-java-11/multimodule-maven-project/entitymodule/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/entitymodule/src/main/java/com/baeldung/entity/User.java delete mode 100644 maven-java-11/multimodule-maven-project/entitymodule/src/main/java/module-info.java delete mode 100644 maven-java-11/multimodule-maven-project/mainappmodule/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/com/baeldung/mainapp/Application.java delete mode 100644 maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/module-info.java diff --git a/maven-java-11/multimodule-maven-project/entitymodule/pom.xml b/maven-java-11/multimodule-maven-project/entitymodule/pom.xml deleted file mode 100644 index 228619ed74..0000000000 --- a/maven-java-11/multimodule-maven-project/entitymodule/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 4.0.0 - com.baeldung.entitymodule - entitymodule - 1.0 - entitymodule - jar - - - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - - - - 11 - 11 - - - diff --git a/maven-java-11/multimodule-maven-project/entitymodule/src/main/java/com/baeldung/entity/User.java b/maven-java-11/multimodule-maven-project/entitymodule/src/main/java/com/baeldung/entity/User.java deleted file mode 100644 index 22022a2e6d..0000000000 --- a/maven-java-11/multimodule-maven-project/entitymodule/src/main/java/com/baeldung/entity/User.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.entity; - -public class User { - - private final String name; - - public User(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return "User{" + "name=" + name + '}'; - } -} diff --git a/maven-java-11/multimodule-maven-project/entitymodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/entitymodule/src/main/java/module-info.java deleted file mode 100644 index 67a3097352..0000000000 --- a/maven-java-11/multimodule-maven-project/entitymodule/src/main/java/module-info.java +++ /dev/null @@ -1,3 +0,0 @@ -module com.baeldung.entity { - exports com.baeldung.entity; -} diff --git a/maven-java-11/multimodule-maven-project/mainappmodule/pom.xml b/maven-java-11/multimodule-maven-project/mainappmodule/pom.xml deleted file mode 100644 index 1f4493c34c..0000000000 --- a/maven-java-11/multimodule-maven-project/mainappmodule/pom.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - 4.0.0 - com.baeldung.mainappmodule - mainappmodule - 1.0 - mainappmodule - jar - - - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - - - - - com.baeldung.entitymodule - entitymodule - ${entitymodule.version} - - - com.baeldung.daomodule - daomodule - ${daomodule.version} - - - com.baeldung.userdaomodule - userdaomodule - ${userdaomodule.version} - - - - - 1.0 - 1.0 - 1.0 - - - diff --git a/maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/com/baeldung/mainapp/Application.java b/maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/com/baeldung/mainapp/Application.java deleted file mode 100644 index 0c0df7461b..0000000000 --- a/maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/com/baeldung/mainapp/Application.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.mainapp; - -import com.baeldung.dao.Dao; -import com.baeldung.entity.User; -import com.baeldung.userdao.UserDao; -import java.util.HashMap; -import java.util.Map; - -public class Application { - - public static void main(String[] args) { - Map users = new HashMap<>(); - users.put(1, new User("Julie")); - users.put(2, new User("David")); - Dao userDao = new UserDao(users); - userDao.findAll().forEach(System.out::println); - } - -} diff --git a/maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/module-info.java deleted file mode 100644 index c688fcf7de..0000000000 --- a/maven-java-11/multimodule-maven-project/mainappmodule/src/main/java/module-info.java +++ /dev/null @@ -1,6 +0,0 @@ -module com.baeldung.mainapp { - requires com.baeldung.entity; - requires com.baeldung.userdao; - requires com.baeldung.dao; - uses com.baeldung.dao.Dao; -} diff --git a/pom.xml b/pom.xml index a2e09c0f91..fe67bc835b 100644 --- a/pom.xml +++ b/pom.xml @@ -508,7 +508,6 @@ maven-modules maven-archetype - maven-polyglot mesos-marathon @@ -1019,7 +1018,6 @@ maven-modules maven-archetype - maven-polyglot mesos-marathon From 540e719c11bdd91c8e686785d495140778bef83e Mon Sep 17 00:00:00 2001 From: Amit Pandey Date: Mon, 14 Sep 2020 21:51:24 +0530 Subject: [PATCH 041/260] moved spring-security-web-jsonview module to spring-security-core (#10015) * moved spring-security-web-jsonview module to spring-security-core * removed deleted module from project build --- spring-security-modules/pom.xml | 1 - .../spring-security-core/README.md | 1 + .../java/com/baeldung/filterresponse/App.java | 13 ++ .../filterresponse/config}/AppConfig.java | 6 +- .../SecurityJsonViewControllerAdvice.java | 11 +- .../controller/ItemsController.java | 12 +- .../filterresponse}/controller/View.java | 5 +- .../baeldung/filterresponse}/model/Item.java | 4 +- ...SpringSecurityJsonViewIntegrationTest.java | 4 +- .../spring-security-web-jsonview/.gitignore | 13 -- .../spring-security-web-jsonview/README.md | 7 - .../spring-security-web-jsonview/pom.xml | 206 ------------------ .../java/com/baeldung/AppInitializer.java | 33 --- .../src/main/resources/logback.xml | 19 -- .../java/com/baeldung/SpringContextTest.java | 17 -- 15 files changed, 34 insertions(+), 318 deletions(-) create mode 100644 spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/App.java rename spring-security-modules/{spring-security-web-jsonview/src/main/java/com/baeldung/spring => spring-security-core/src/main/java/com/baeldung/filterresponse/config}/AppConfig.java (95%) rename spring-security-modules/{spring-security-web-jsonview/src/main/java/com/baeldung/spring => spring-security-core/src/main/java/com/baeldung/filterresponse/config}/SecurityJsonViewControllerAdvice.java (95%) rename spring-security-modules/{spring-security-web-jsonview/src/main/java/com/baeldung => spring-security-core/src/main/java/com/baeldung/filterresponse}/controller/ItemsController.java (68%) rename spring-security-modules/{spring-security-web-jsonview/src/main/java/com/baeldung => spring-security-core/src/main/java/com/baeldung/filterresponse}/controller/View.java (76%) rename spring-security-modules/{spring-security-web-jsonview/src/main/java/com/baeldung => spring-security-core/src/main/java/com/baeldung/filterresponse}/model/Item.java (85%) rename spring-security-modules/{spring-security-web-jsonview/src/test/java/com/baeldung/security => spring-security-core/src/test/java/com/baeldung/filterresponse}/SpringSecurityJsonViewIntegrationTest.java (97%) delete mode 100644 spring-security-modules/spring-security-web-jsonview/.gitignore delete mode 100644 spring-security-modules/spring-security-web-jsonview/README.md delete mode 100644 spring-security-modules/spring-security-web-jsonview/pom.xml delete mode 100644 spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java delete mode 100644 spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml delete mode 100644 spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml index b68138964b..d5c0c0dd6e 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -24,7 +24,6 @@ spring-security-web-boot-2 spring-security-web-mvc-custom spring-security-web-digest-auth - spring-security-web-jsonview spring-security-ldap spring-security-web-login spring-security-web-persisted-remember-me diff --git a/spring-security-modules/spring-security-core/README.md b/spring-security-modules/spring-security-core/README.md index f28b3abb2b..9f8e4dda53 100644 --- a/spring-security-modules/spring-security-core/README.md +++ b/spring-security-modules/spring-security-core/README.md @@ -9,6 +9,7 @@ This module contains articles about core Spring Security - [Overview and Need for DelegatingFilterProxy in Spring](https://www.baeldung.com/spring-delegating-filter-proxy) - [Deny Access on Missing @PreAuthorize to Spring Controller Methods](https://www.baeldung.com/spring-deny-access) - [Spring Security: Check If a User Has a Role in Java](https://www.baeldung.com/spring-security-check-user-role) +- [Filtering Jackson JSON Output Based on Spring Security Role](https://www.baeldung.com/spring-security-role-filter-json) ### Build the Project diff --git a/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/App.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/App.java new file mode 100644 index 0000000000..a5389e93d3 --- /dev/null +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/App.java @@ -0,0 +1,13 @@ +package com.baeldung.filterresponse; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class App { + + public static void main(String[] args) { + SpringApplication.run(App.class, args); + } + +} diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/config/AppConfig.java similarity index 95% rename from spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java rename to spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/config/AppConfig.java index 10b2d2447e..8ff6000129 100644 --- a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/AppConfig.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/config/AppConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.filterresponse.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -12,12 +12,10 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import java.util.Arrays; - @Configuration @EnableWebMvc @EnableWebSecurity -@ComponentScan("com.baeldung") +@ComponentScan("com.baeldung.filterresponse") public class AppConfig extends WebSecurityConfigurerAdapter implements WebMvcConfigurer { @Override diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/config/SecurityJsonViewControllerAdvice.java similarity index 95% rename from spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java rename to spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/config/SecurityJsonViewControllerAdvice.java index d6d022a110..d0ba0adcf5 100644 --- a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/spring/SecurityJsonViewControllerAdvice.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/config/SecurityJsonViewControllerAdvice.java @@ -1,6 +1,9 @@ -package com.baeldung.spring; +package com.baeldung.filterresponse.config; + +import java.util.Collection; +import java.util.List; +import java.util.stream.Collectors; -import com.baeldung.controller.View; import org.springframework.core.MethodParameter; import org.springframework.http.MediaType; import org.springframework.http.converter.json.MappingJacksonValue; @@ -11,9 +14,7 @@ import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.servlet.mvc.method.annotation.AbstractMappingJacksonResponseBodyAdvice; -import java.util.Collection; -import java.util.List; -import java.util.stream.Collectors; +import com.baeldung.filterresponse.controller.View; @RestControllerAdvice public class SecurityJsonViewControllerAdvice extends AbstractMappingJacksonResponseBodyAdvice { diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/controller/ItemsController.java similarity index 68% rename from spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java rename to spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/controller/ItemsController.java index 16268a239b..f5fd4ee7f1 100644 --- a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/ItemsController.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/controller/ItemsController.java @@ -1,14 +1,12 @@ -package com.baeldung.controller; +package com.baeldung.filterresponse.controller; + +import java.util.Arrays; +import java.util.Collection; -import com.baeldung.model.Item; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; +import com.baeldung.filterresponse.model.Item; @RestController public class ItemsController { diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/controller/View.java similarity index 76% rename from spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java rename to spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/controller/View.java index 10ae50adef..3099807578 100644 --- a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/controller/View.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/controller/View.java @@ -1,10 +1,11 @@ -package com.baeldung.controller; +package com.baeldung.filterresponse.controller; -import com.baeldung.spring.AppConfig.Role; import java.util.HashMap; import java.util.Map; +import com.baeldung.filterresponse.config.AppConfig.Role; + public class View { public static final Map MAPPING = new HashMap<>(); diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/model/Item.java similarity index 85% rename from spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java rename to spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/model/Item.java index 002ee73e4f..9ebdc6bad0 100644 --- a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/model/Item.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/filterresponse/model/Item.java @@ -1,6 +1,6 @@ -package com.baeldung.model; +package com.baeldung.filterresponse.model; -import com.baeldung.controller.View; +import com.baeldung.filterresponse.controller.View; import com.fasterxml.jackson.annotation.JsonView; public class Item { diff --git a/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java b/spring-security-modules/spring-security-core/src/test/java/com/baeldung/filterresponse/SpringSecurityJsonViewIntegrationTest.java similarity index 97% rename from spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java rename to spring-security-modules/spring-security-core/src/test/java/com/baeldung/filterresponse/SpringSecurityJsonViewIntegrationTest.java index 626c8cb497..fc821b5175 100644 --- a/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/security/SpringSecurityJsonViewIntegrationTest.java +++ b/spring-security-modules/spring-security-core/src/test/java/com/baeldung/filterresponse/SpringSecurityJsonViewIntegrationTest.java @@ -1,6 +1,6 @@ -package com.baeldung.security; +package com.baeldung.filterresponse; -import com.baeldung.spring.AppConfig; +import com.baeldung.filterresponse.config.AppConfig; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.junit.Before; diff --git a/spring-security-modules/spring-security-web-jsonview/.gitignore b/spring-security-modules/spring-security-web-jsonview/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/spring-security-modules/spring-security-web-jsonview/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-jsonview/README.md b/spring-security-modules/spring-security-web-jsonview/README.md deleted file mode 100644 index 83f8106df9..0000000000 --- a/spring-security-modules/spring-security-web-jsonview/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## Spring Security Web Json View - -This module contains articles about Spring Security with JSON - -### Relevant Articles: - -- [Filtering Jackson JSON Output Based on Spring Security Role](https://www.baeldung.com/spring-security-role-filter-json) diff --git a/spring-security-modules/spring-security-web-jsonview/pom.xml b/spring-security-modules/spring-security-web-jsonview/pom.xml deleted file mode 100644 index 0d1b0b09db..0000000000 --- a/spring-security-modules/spring-security-web-jsonview/pom.xml +++ /dev/null @@ -1,206 +0,0 @@ - - - 4.0.0 - spring-security-web-jsonview - 0.1-SNAPSHOT - spring-security-web-jsonview - war - - - com.baeldung - parent-spring-5 - 0.0.1-SNAPSHOT - ../../parent-spring-5 - - - - - com.fasterxml.jackson.core - jackson-core - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - - - - org.springframework.security - spring-security-web - ${spring-security.version} - - - org.springframework.security - spring-security-config - ${spring-security.version} - - - org.springframework.security - spring-security-taglibs - ${spring-security.version} - - - - - - org.springframework - spring-core - ${spring.version} - - - commons-logging - commons-logging - - - - - org.springframework - spring-context - ${spring.version} - - - org.springframework - spring-jdbc - ${spring.version} - - - org.springframework - spring-beans - ${spring.version} - - - org.springframework - spring-aop - ${spring.version} - - - org.springframework - spring-tx - ${spring.version} - - - org.springframework - spring-expression - ${spring.version} - - - - org.springframework - spring-web - ${spring.version} - - - org.springframework - spring-webmvc - ${spring.version} - - - - - - javax.servlet - javax.servlet-api - ${javax.servlet-api.version} - provided - - - - javax.servlet - jstl - ${jstl.version} - runtime - - - - - - org.springframework - spring-test - ${spring.version} - test - - - org.springframework.security - spring-security-test - ${spring-security.version} - test - - - com.jayway.jsonpath - json-path - ${json-path.version} - test - - - - - spring-security-mvc-jsonview - - - src/main/resources - true - - - - - org.apache.maven.plugins - maven-war-plugin - ${maven-war-plugin.version} - - - default-war - prepare-package - - false - - - - - - - org.codehaus.cargo - cargo-maven2-plugin - ${cargo-maven2-plugin.version} - - - - ${project.build.directory}/${project.name}.war - war - - / - - - - - 2400000 - tomcat8x - embedded - - - - - - - 8084 - - - - - - - - - 1.6.1 - 2.4.0 - - - \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java b/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java deleted file mode 100644 index 4f38d190eb..0000000000 --- a/spring-security-modules/spring-security-web-jsonview/src/main/java/com/baeldung/AppInitializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.context.support.GenericWebApplicationContext; -import org.springframework.web.filter.DelegatingFilterProxy; -import org.springframework.web.servlet.DispatcherServlet; - -public class AppInitializer implements WebApplicationInitializer { - - @Override - public void onStartup(final ServletContext sc) throws ServletException { - - AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); - - root.scan("com.baeldung"); - sc.addListener(new ContextLoaderListener(root)); - - ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet(new GenericWebApplicationContext())); - appServlet.setLoadOnStartup(1); - appServlet.addMapping("/"); - - sc.addFilter("securityFilter", new DelegatingFilterProxy("springSecurityFilterChain")) - .addMappingForUrlPatterns(null, false, "/*"); - - } - -} diff --git a/spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml b/spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml deleted file mode 100644 index 56af2d397e..0000000000 --- a/spring-security-modules/spring-security-web-jsonview/src/main/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java b/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java deleted file mode 100644 index b1a3de714e..0000000000 --- a/spring-security-modules/spring-security-web-jsonview/src/test/java/com/baeldung/SpringContextTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung; - -import com.baeldung.spring.AppConfig; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.web.WebAppConfiguration; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = AppConfig.class) -@WebAppConfiguration -public class SpringContextTest { - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} From 3563524c09e51720fe60f845581063b392ef0323 Mon Sep 17 00:00:00 2001 From: Amit Pandey Date: Mon, 14 Sep 2020 21:53:09 +0530 Subject: [PATCH 042/260] moved spring-rest-hal-browser to spring-data-rest module (#10019) * moved spring-rest-hal-browser to spring-data-rest module * removed module from build --- pom.xml | 2 - spring-data-rest/README.md | 1 + spring-data-rest/pom.xml | 9 +++ .../java/com/baeldung/halbrowser}/App.java | 2 +- .../baeldung/halbrowser}/config/DBLoader.java | 11 ++-- .../halbrowser}/config/RestConfig.java | 2 +- .../halbrowser}/data/BookRepository.java | 6 +- .../com/baeldung/halbrowser}/model/Book.java | 2 +- spring-rest-hal-browser/README.md | 6 -- spring-rest-hal-browser/pom.xml | 62 ------------------- .../src/main/resources/application.properties | 0 .../src/main/resources/logback.xml | 13 ---- 12 files changed, 22 insertions(+), 94 deletions(-) rename {spring-rest-hal-browser/src/main/java/com/baeldung => spring-data-rest/src/main/java/com/baeldung/halbrowser}/App.java (88%) rename {spring-rest-hal-browser/src/main/java/com/baeldung => spring-data-rest/src/main/java/com/baeldung/halbrowser}/config/DBLoader.java (95%) rename {spring-rest-hal-browser/src/main/java/com/baeldung => spring-data-rest/src/main/java/com/baeldung/halbrowser}/config/RestConfig.java (95%) rename {spring-rest-hal-browser/src/main/java/com/baeldung => spring-data-rest/src/main/java/com/baeldung/halbrowser}/data/BookRepository.java (86%) rename {spring-rest-hal-browser/src/main/java/com/baeldung => spring-data-rest/src/main/java/com/baeldung/halbrowser}/model/Book.java (97%) delete mode 100644 spring-rest-hal-browser/README.md delete mode 100644 spring-rest-hal-browser/pom.xml delete mode 100644 spring-rest-hal-browser/src/main/resources/application.properties delete mode 100644 spring-rest-hal-browser/src/main/resources/logback.xml diff --git a/pom.xml b/pom.xml index a2e09c0f91..9406d2e180 100644 --- a/pom.xml +++ b/pom.xml @@ -697,7 +697,6 @@ spring-remoting spring-rest-angular spring-rest-compress - spring-rest-hal-browser spring-rest-http spring-rest-http-2 spring-rest-query-language @@ -1200,7 +1199,6 @@ spring-remoting spring-rest-angular spring-rest-compress - spring-rest-hal-browser spring-rest-http spring-rest-query-language spring-rest-shell diff --git a/spring-data-rest/README.md b/spring-data-rest/README.md index bae2fe8eaf..ab1991b08f 100644 --- a/spring-data-rest/README.md +++ b/spring-data-rest/README.md @@ -12,6 +12,7 @@ This module contains articles about Spring Data REST - [Customizing HTTP Endpoints in Spring Data REST](https://www.baeldung.com/spring-data-rest-customize-http-endpoints) - [Spring Boot with SQLite](https://www.baeldung.com/spring-boot-sqlite) - [Spring Data Web Support](https://www.baeldung.com/spring-data-web-support) +- [Spring REST and HAL Browser](https://www.baeldung.com/spring-rest-hal) ### The Course The "REST With Spring" Classes: http://bit.ly/restwithspring diff --git a/spring-data-rest/pom.xml b/spring-data-rest/pom.xml index 741d146fbf..63a42857f4 100644 --- a/spring-data-rest/pom.xml +++ b/spring-data-rest/pom.xml @@ -32,6 +32,15 @@ org.springframework.boot spring-boot-starter-data-jpa + + + org.springframework.data + spring-data-rest-hal-browser + + + org.springframework.boot + spring-boot-starter-validation + org.springframework.boot spring-boot-autoconfigure diff --git a/spring-rest-hal-browser/src/main/java/com/baeldung/App.java b/spring-data-rest/src/main/java/com/baeldung/halbrowser/App.java similarity index 88% rename from spring-rest-hal-browser/src/main/java/com/baeldung/App.java rename to spring-data-rest/src/main/java/com/baeldung/halbrowser/App.java index 14b6c201d5..6421b7ac33 100644 --- a/spring-rest-hal-browser/src/main/java/com/baeldung/App.java +++ b/spring-data-rest/src/main/java/com/baeldung/halbrowser/App.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.halbrowser; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-rest-hal-browser/src/main/java/com/baeldung/config/DBLoader.java b/spring-data-rest/src/main/java/com/baeldung/halbrowser/config/DBLoader.java similarity index 95% rename from spring-rest-hal-browser/src/main/java/com/baeldung/config/DBLoader.java rename to spring-data-rest/src/main/java/com/baeldung/halbrowser/config/DBLoader.java index 7251ef0e8c..3cd059ce63 100644 --- a/spring-rest-hal-browser/src/main/java/com/baeldung/config/DBLoader.java +++ b/spring-data-rest/src/main/java/com/baeldung/halbrowser/config/DBLoader.java @@ -1,14 +1,15 @@ -package com.baeldung.config; +package com.baeldung.halbrowser.config; + +import java.util.Random; +import java.util.stream.IntStream; -import com.baeldung.data.BookRepository; -import com.baeldung.model.Book; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.stereotype.Component; -import java.util.Random; -import java.util.stream.IntStream; +import com.baeldung.halbrowser.data.BookRepository; +import com.baeldung.halbrowser.model.Book; @Component public class DBLoader implements ApplicationRunner { diff --git a/spring-rest-hal-browser/src/main/java/com/baeldung/config/RestConfig.java b/spring-data-rest/src/main/java/com/baeldung/halbrowser/config/RestConfig.java similarity index 95% rename from spring-rest-hal-browser/src/main/java/com/baeldung/config/RestConfig.java rename to spring-data-rest/src/main/java/com/baeldung/halbrowser/config/RestConfig.java index 858371facc..73f7e0f26a 100644 --- a/spring-rest-hal-browser/src/main/java/com/baeldung/config/RestConfig.java +++ b/spring-data-rest/src/main/java/com/baeldung/halbrowser/config/RestConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.config; +package com.baeldung.halbrowser.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; diff --git a/spring-rest-hal-browser/src/main/java/com/baeldung/data/BookRepository.java b/spring-data-rest/src/main/java/com/baeldung/halbrowser/data/BookRepository.java similarity index 86% rename from spring-rest-hal-browser/src/main/java/com/baeldung/data/BookRepository.java rename to spring-data-rest/src/main/java/com/baeldung/halbrowser/data/BookRepository.java index d8e35974b1..375f6886ef 100644 --- a/spring-rest-hal-browser/src/main/java/com/baeldung/data/BookRepository.java +++ b/spring-data-rest/src/main/java/com/baeldung/halbrowser/data/BookRepository.java @@ -1,14 +1,14 @@ -package com.baeldung.data; +package com.baeldung.halbrowser.data; -import com.baeldung.model.Book; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.query.Param; import org.springframework.data.rest.core.annotation.RestResource; import org.springframework.stereotype.Repository; +import com.baeldung.halbrowser.model.Book; + @Repository public interface BookRepository extends PagingAndSortingRepository { diff --git a/spring-rest-hal-browser/src/main/java/com/baeldung/model/Book.java b/spring-data-rest/src/main/java/com/baeldung/halbrowser/model/Book.java similarity index 97% rename from spring-rest-hal-browser/src/main/java/com/baeldung/model/Book.java rename to spring-data-rest/src/main/java/com/baeldung/halbrowser/model/Book.java index b1dc1b41f3..06056df525 100644 --- a/spring-rest-hal-browser/src/main/java/com/baeldung/model/Book.java +++ b/spring-data-rest/src/main/java/com/baeldung/halbrowser/model/Book.java @@ -1,4 +1,4 @@ -package com.baeldung.model; +package com.baeldung.halbrowser.model; import javax.persistence.*; import javax.validation.constraints.NotNull; diff --git a/spring-rest-hal-browser/README.md b/spring-rest-hal-browser/README.md deleted file mode 100644 index 90337aad1a..0000000000 --- a/spring-rest-hal-browser/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Spring REST HAL Browser - -This module contains articles about Spring REST with the HAL browser - -### Relevant Articles: -- [Spring REST and HAL Browser](https://www.baeldung.com/spring-rest-hal) diff --git a/spring-rest-hal-browser/pom.xml b/spring-rest-hal-browser/pom.xml deleted file mode 100644 index c8066b89a4..0000000000 --- a/spring-rest-hal-browser/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - 4.0.0 - spring-rest-hal-browser - 1.0-SNAPSHOT - spring-rest-hal-browser - - - com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../parent-boot-2 - - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-validation - - - - org.springframework.boot - spring-boot-starter-data-jpa - - - - org.springframework.data - spring-data-rest-hal-browser - - - - com.h2database - h2 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - ${source.version} - ${target.version} - - - - - - - 1.8 - 1.8 - - - \ No newline at end of file diff --git a/spring-rest-hal-browser/src/main/resources/application.properties b/spring-rest-hal-browser/src/main/resources/application.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/spring-rest-hal-browser/src/main/resources/logback.xml b/spring-rest-hal-browser/src/main/resources/logback.xml deleted file mode 100644 index 7d900d8ea8..0000000000 --- a/spring-rest-hal-browser/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file From 12b3067cd20d09ed8f5753111c9bd23e29e50a98 Mon Sep 17 00:00:00 2001 From: AmitB Date: Tue, 15 Sep 2020 10:14:25 +0530 Subject: [PATCH 043/260] [BAEL-4495] Performance of removeAll() in a HashSet (#10011) * [BAEL-4495] Performance of removeAll() in a HashSet * [BAEL-4495] Add unit test for hashset removeAll() * [BAEL-4495] Update test methods to camelCase --- .../HashSetBenchmark.java | 86 +++++++++++++++++++ .../collections/hashset/HashSetUnitTest.java | 33 +++++++ 2 files changed, 119 insertions(+) create mode 100644 core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java create mode 100644 core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashset/HashSetUnitTest.java diff --git a/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java new file mode 100644 index 0000000000..8ce58c865e --- /dev/null +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java @@ -0,0 +1,86 @@ +package com.baeldung.collections.removeallperformance; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang3.RandomStringUtils; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +import com.baeldung.collections.containsperformance.Employee; + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.NANOSECONDS) +@Warmup(iterations = 5) +public class HashSetBenchmark { + + @State(Scope.Thread) + public static class MyState { + private Set employeeSet1 = new HashSet<>(); + private List employeeList1 = new ArrayList<>(); + private Set employeeSet2 = new HashSet<>(); + private List employeeList2 = new ArrayList<>(); + + private long set1Size = 60000; + private long list1Size = 50000; + private long set2Size = 50000; + private long list2Size = 60000; + + @Setup(Level.Trial) + public void setUp() { + + for (long i = 0; i < set1Size; i++) { + employeeSet1.add(new Employee(i, RandomStringUtils.random(7, true, false))); + } + + for (long i = 0; i < list1Size; i++) { + employeeList1.add(new Employee(i, RandomStringUtils.random(7, true, false))); + } + + for (long i = 0; i < set2Size; i++) { + employeeSet2.add(new Employee(i, RandomStringUtils.random(7, true, false))); + } + + for (long i = 0; i < list2Size; i++) { + employeeList2.add(new Employee(i, RandomStringUtils.random(7, true, false))); + } + + } + + } + + @Benchmark + public boolean given_SizeOfHashsetGreaterThanSizeOfCollection_When_RemoveAllFromHashSet_Then_GoodPerformance(MyState state) { + return state.employeeSet1.removeAll(state.employeeList1); + } + + @Benchmark + public boolean given_SizeOfHashsetSmallerThanSizeOfCollection_When_RemoveAllFromHashSet_Then_BadPerformance(MyState state) { + return state.employeeSet2.removeAll(state.employeeList2); + } + + public static void main(String[] args) throws Exception { + Options options = new OptionsBuilder().include(HashSetBenchmark.class.getSimpleName()) + .threads(1) + .forks(1) + .shouldFailOnError(true) + .shouldDoGC(true) + .jvmArgs("-server") + .build(); + new Runner(options).run(); + } + +} \ No newline at end of file diff --git a/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashset/HashSetUnitTest.java b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashset/HashSetUnitTest.java new file mode 100644 index 0000000000..1c23538675 --- /dev/null +++ b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/hashset/HashSetUnitTest.java @@ -0,0 +1,33 @@ +package com.baeldung.collections.hashset; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +class HashSetUnitTest { + + @Test + void whenRemoveAllFromHashset_thenRemovesAllElementsFromHashsetThatArePresentInCollection() { + Set set = new HashSet<>(); + Collection collection = new ArrayList<>(); + set.add(1); + set.add(2); + set.add(3); + set.add(4); + collection.add(1); + collection.add(3); + + set.removeAll(collection); + + assertEquals(2, set.size()); + Integer[] actualElements = new Integer[set.size()]; + Integer[] expectedElements = new Integer[] { 2, 4 }; + assertArrayEquals(expectedElements, set.toArray(actualElements)); + } + +} From 0976c32038f17c07e0b2b2066c93a7017ebaf990 Mon Sep 17 00:00:00 2001 From: Reza Ebrahimpour Date: Tue, 15 Sep 2020 11:12:24 +0430 Subject: [PATCH 044/260] BAEL-4488 Create AvailableCiphers --- .../com/baeldung/cipher/AvailableCiphers.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java diff --git a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java new file mode 100644 index 0000000000..f73433ffd2 --- /dev/null +++ b/core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java @@ -0,0 +1,32 @@ +package com.baeldung.cipher; + +import java.security.Provider; +import java.security.Security; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +public class AvailableCiphers { + public static void main(String[] args) { + printAllCiphers(); + printCompatibleCiphers(); + } + + private static void printAllCiphers() { + for (Provider provider : Security.getProviders()) { + for (Provider.Service service : provider.getServices()) { + System.out.println(service.getAlgorithm()); + } + } + } + + private static void printCompatibleCiphers() { + List algorithms = Arrays.stream(Security.getProviders()) + .flatMap(provider -> provider.getServices().stream()) + .filter(service -> "Cipher".equals(service.getType())) + .map(Provider.Service::getAlgorithm) + .collect(Collectors.toList()); + + algorithms.forEach(System.out::println); + } +} From 27aa7c4cad3d469a1bfbb96d36e2bd5acdcd2161 Mon Sep 17 00:00:00 2001 From: mikr Date: Tue, 15 Sep 2020 10:16:09 +0200 Subject: [PATCH 045/260] Java-2136 Fix Unit tests + remove unnecessary println --- jackson-modules/jackson-custom-conversions/pom.xml | 7 +++++++ .../deserialization/CustomDeserializationUnitTest.java | 7 ++----- .../serialization/CustomSerializationUnitTest.java | 3 --- .../skipfields/IgnoreFieldsWithFilterUnitTest.java | 2 -- .../baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java | 8 -------- 5 files changed, 9 insertions(+), 18 deletions(-) diff --git a/jackson-modules/jackson-custom-conversions/pom.xml b/jackson-modules/jackson-custom-conversions/pom.xml index c319891da9..78894bb403 100644 --- a/jackson-modules/jackson-custom-conversions/pom.xml +++ b/jackson-modules/jackson-custom-conversions/pom.xml @@ -23,6 +23,13 @@ jackson-datatype-joda ${jackson.version} + + com.fasterxml.jackson.core + jackson-core + 2.10.1 + + + diff --git a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java index f2a2502c3e..17016149a2 100644 --- a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java +++ b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/deserialization/CustomDeserializationUnitTest.java @@ -60,8 +60,6 @@ public class CustomDeserializationUnitTest { String converted = objectMapper.writeValueAsString(now); // restore an instance of ZonedDateTime from String ZonedDateTime restored = objectMapper.readValue(converted, ZonedDateTime.class); - System.out.println("serialized: " + now); - System.out.println("restored: " + restored); assertThat(now, is(not(restored))); } @@ -70,15 +68,14 @@ public class CustomDeserializationUnitTest { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.findAndRegisterModules(); objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + objectMapper.enable(SerializationFeature.WRITE_DATES_WITH_ZONE_ID); objectMapper.disable(DeserializationFeature.ADJUST_DATES_TO_CONTEXT_TIME_ZONE); // construct a new instance of ZonedDateTime ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Europe/Berlin")); String converted = objectMapper.writeValueAsString(now); // restore an instance of ZonedDateTime from String ZonedDateTime restored = objectMapper.readValue(converted, ZonedDateTime.class); - System.out.println("serialized: " + now); - System.out.println("restored: " + restored); - assertThat(now, is(restored)); + assertThat(restored, is(now)); } } diff --git a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java index 6cb4019fa2..9c46a86fd8 100644 --- a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java +++ b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/serialization/CustomSerializationUnitTest.java @@ -24,7 +24,6 @@ public class CustomSerializationUnitTest { public final void whenSerializing_thenNoExceptions() throws JsonGenerationException, JsonMappingException, IOException { final Item myItem = new Item(1, "theItem", new User(2, "theUser")); final String serialized = new ObjectMapper().writeValueAsString(myItem); - System.out.println(serialized); } @Test @@ -38,7 +37,6 @@ public class CustomSerializationUnitTest { mapper.registerModule(simpleModule); final String serialized = mapper.writeValueAsString(myItem); - System.out.println(serialized); } @Test @@ -46,7 +44,6 @@ public class CustomSerializationUnitTest { final ItemWithSerializer myItem = new ItemWithSerializer(1, "theItem", new User(2, "theUser")); final String serialized = new ObjectMapper().writeValueAsString(myItem); - System.out.println(serialized); } } diff --git a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java index e71f31bc6a..ec753019b2 100644 --- a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java +++ b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/IgnoreFieldsWithFilterUnitTest.java @@ -37,7 +37,6 @@ public class IgnoreFieldsWithFilterUnitTest { assertThat(dtoAsString, not(containsString("intValue"))); assertThat(dtoAsString, containsString("booleanValue")); assertThat(dtoAsString, containsString("stringValue")); - System.out.println(dtoAsString); } @Test @@ -83,7 +82,6 @@ public class IgnoreFieldsWithFilterUnitTest { assertThat(dtoAsString, not(containsString("intValue"))); assertThat(dtoAsString, containsString("booleanValue")); assertThat(dtoAsString, containsString("stringValue")); - System.out.println(dtoAsString); } } diff --git a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java index 6ba14f7476..2fd59e2a82 100644 --- a/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java +++ b/jackson-modules/jackson-custom-conversions/src/test/java/com/baeldung/skipfields/JacksonDynamicIgnoreUnitTest.java @@ -51,8 +51,6 @@ public class JacksonDynamicIgnoreUnitTest { assertTrue(result.contains("john")); assertTrue(result.contains("address")); assertTrue(result.contains("usa")); - - System.out.println("Not Hidden = " + result); } @Test @@ -65,8 +63,6 @@ public class JacksonDynamicIgnoreUnitTest { assertTrue(result.contains("john")); assertFalse(result.contains("address")); assertFalse(result.contains("usa")); - - System.out.println("Address Hidden = " + result); } @Test @@ -76,8 +72,6 @@ public class JacksonDynamicIgnoreUnitTest { final String result = mapper.writeValueAsString(person); assertTrue(result.length() == 0); - - System.out.println("All Hidden = " + result); } @Test @@ -90,7 +84,5 @@ public class JacksonDynamicIgnoreUnitTest { final Person p3 = new Person("adam", ad3, false); final String result = mapper.writeValueAsString(Arrays.asList(p1, p2, p3)); - - System.out.println(result); } } From 4f148739678917085f9319c036e5f7b29ae0d2d5 Mon Sep 17 00:00:00 2001 From: Krzysztof Woyke Date: Tue, 15 Sep 2020 10:28:34 +0200 Subject: [PATCH 046/260] JAVA-2599: Update OS specific unit tests --- core-java-modules/core-java-io-3/README.md | 1 + .../emptiness/DirectoryEmptinessUnitTest.java | 5 +++-- .../TemporaryDirectoriesUnitTest.java | 15 +++++++++++---- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/core-java-modules/core-java-io-3/README.md b/core-java-modules/core-java-io-3/README.md index c4eacdf27a..06a2a5a0fc 100644 --- a/core-java-modules/core-java-io-3/README.md +++ b/core-java-modules/core-java-io-3/README.md @@ -9,4 +9,5 @@ This module contains articles about core Java input and output (IO) - [Check If a File or Directory Exists in Java](https://www.baeldung.com/java-file-directory-exists) - [Copy a Directory in Java](https://www.baeldung.com/java-copy-directory) - [Java Files Open Options](https://www.baeldung.com/java-file-options) +- [Creating Temporary Directories in Java](https://www.baeldung.com/java-temp-directories) - [[<-- Prev]](/core-java-modules/core-java-io-2) diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/emptiness/DirectoryEmptinessUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/emptiness/DirectoryEmptinessUnitTest.java index a44aea1383..7f7936494f 100644 --- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/emptiness/DirectoryEmptinessUnitTest.java +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/emptiness/DirectoryEmptinessUnitTest.java @@ -4,6 +4,7 @@ import org.junit.Test; import java.io.File; import java.io.IOException; +import java.net.URISyntaxException; import java.nio.file.DirectoryStream; import java.nio.file.Files; import java.nio.file.Path; @@ -20,8 +21,8 @@ public class DirectoryEmptinessUnitTest { } @Test - public void givenPath_whenNotDirectory_thenReturnsFalse() throws IOException { - Path aFile = Paths.get(getClass().getResource("/notDir.txt").getPath()); + public void givenPath_whenNotDirectory_thenReturnsFalse() throws IOException, URISyntaxException { + Path aFile = Paths.get(getClass().getResource("/notDir.txt").toURI()); assertThat(isEmpty(aFile)).isFalse(); } diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/tempdirectory/TemporaryDirectoriesUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/tempdirectory/TemporaryDirectoriesUnitTest.java index 470e06ef96..5cf7d88cd6 100644 --- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/tempdirectory/TemporaryDirectoriesUnitTest.java +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/tempdirectory/TemporaryDirectoriesUnitTest.java @@ -4,6 +4,7 @@ import org.apache.commons.io.FileUtils; import org.junit.Test; import java.io.IOException; +import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -66,10 +67,16 @@ public class TemporaryDirectoriesUnitTest { @Test public void givenTempDirWithPrefixWithFileAttrs_whenCreatePlainJava_thenAttributesAreSet() throws IOException { - final FileAttribute> attrs = PosixFilePermissions.asFileAttribute(PosixFilePermissions.fromString("r--------")); + boolean isPosix = FileSystems.getDefault().supportedFileAttributeViews().contains("posix"); - final Path tmpdir = Files.createTempDirectory(Paths.get("target"), "tmpDirPrefix", attrs); - assertThat(tmpdir.toFile().getPath()).startsWith("target"); - assertThat(tmpdir.toFile().canWrite()).isFalse(); + if(!isPosix){ + System.out.println("You must be under a Posix Compliant Filesystem to run this test."); + } else { + final FileAttribute> attrs = PosixFilePermissions.asFileAttribute(PosixFilePermissions.fromString("r--------")); + + final Path tmpdir = Files.createTempDirectory(Paths.get("target"), "tmpDirPrefix", attrs); + assertThat(tmpdir.toFile().getPath()).startsWith("target"); + assertThat(tmpdir.toFile().canWrite()).isFalse(); + } } } From 5121313f65903725a7e883d0ac9cb6f98cd9d16a Mon Sep 17 00:00:00 2001 From: mikr Date: Tue, 15 Sep 2020 11:08:35 +0200 Subject: [PATCH 047/260] Java-2136 Correctly configure netty server --- .../reactive/security/SpringSecurity5Application.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java index 325923f577..d315bf8238 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java @@ -28,9 +28,7 @@ public class SpringSecurity5Application { HttpHandler handler = WebHttpHandlerBuilder.applicationContext(context) .build(); ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler); - HttpServer httpServer = HttpServer.create(); - httpServer.host("localhost"); - httpServer.port(8080); + HttpServer httpServer = HttpServer.create().host("localhost").port(8080); return httpServer.handle(adapter).bindNow(); } From 40ebac5142a360131df2fb1f26bee8cb0b542511 Mon Sep 17 00:00:00 2001 From: Usman Mohyuddin Date: Tue, 15 Sep 2020 15:09:35 +0500 Subject: [PATCH 048/260] Split the @Test annotation in new line --- .../groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy index 4cdcb4ddfa..61b81fe1b2 100644 --- a/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy +++ b/core-groovy-strings/src/test/groovy/com/baeldung/removeprefix/RemovePrefixTest.groovy @@ -45,7 +45,8 @@ class RemovePrefixTest { Assert.assertEquals(expected, actual) } - @Test public void whenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { + @Test + public void whenPrefixIsRemovedUsingReplaceFirst_thenReturnTrue() { def regex = ~"^groovy" String trimPrefix = "groovyTutorials at Baeldung's groovy page" String actual = trimPrefix.replaceFirst(regex, "") From 51c2e22324186f7b17b141635dc66a685014ec95 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Tue, 15 Sep 2020 20:32:07 +0530 Subject: [PATCH 049/260] Formatted code --- .../charencoding/CharacterEncodingDemo.java | 28 +++++++++---------- .../CharEncodingCheckController.java | 10 +++---- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java index 453bad5633..fb02789258 100644 --- a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/CharacterEncodingDemo.java @@ -9,19 +9,19 @@ import org.springframework.web.filter.CharacterEncodingFilter; @SpringBootApplication public class CharacterEncodingDemo { - public static void main(String[] args) { - SpringApplication.run(CharacterEncodingDemo.class, args); - } + public static void main(String[] args) { + SpringApplication.run(CharacterEncodingDemo.class, args); + } - @Bean - public FilterRegistrationBean filterRegistrationBean() { - CharacterEncodingFilter filter = new CharacterEncodingFilter(); - filter.setEncoding("UTF-8"); - filter.setForceEncoding(true); - - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(filter); - registrationBean.addUrlPatterns("/*"); - return registrationBean; - } + @Bean + public FilterRegistrationBean filterRegistrationBean() { + CharacterEncodingFilter filter = new CharacterEncodingFilter(); + filter.setEncoding("UTF-8"); + filter.setForceEncoding(true); + + FilterRegistrationBean registrationBean = new FilterRegistrationBean(); + registrationBean.setFilter(filter); + registrationBean.addUrlPatterns("/*"); + return registrationBean; + } } diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java index 3257ca1f36..e1767f941e 100644 --- a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/charencoding/controller/CharEncodingCheckController.java @@ -5,9 +5,9 @@ import org.springframework.web.bind.annotation.GetMapping; @Controller public class CharEncodingCheckController { - - @GetMapping("/ping") - public String ping() { - return "path"; - } + + @GetMapping("/ping") + public String ping() { + return "path"; + } } From 4ae6ecbb39a37dde248f4d81521ba9d22dd044dc Mon Sep 17 00:00:00 2001 From: kwoyke Date: Tue, 15 Sep 2020 20:33:11 +0200 Subject: [PATCH 050/260] BAEL-4595: Upgrade to hazelcast-jet 4.2 (#10035) --- hazelcast/pom.xml | 10 +++----- .../hazelcast/cluster/NativeClient.java | 18 ++++++------- .../hazelcast/cluster/ServerNode.java | 10 ++++---- .../baeldung/hazelcast/jet/WordCounter.java | 25 ++++++++----------- .../hazelcast/jet/WordCounterUnitTest.java | 6 ++--- 5 files changed, 30 insertions(+), 39 deletions(-) diff --git a/hazelcast/pom.xml b/hazelcast/pom.xml index 287542be33..69444308a3 100644 --- a/hazelcast/pom.xml +++ b/hazelcast/pom.xml @@ -1,8 +1,8 @@ + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 hazelcast 0.0.1-SNAPSHOT @@ -15,7 +15,6 @@ - com.hazelcast.jet hazelcast-jet @@ -34,8 +33,7 @@ - - 0.6 + 4.2 \ No newline at end of file diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java index 697e362289..3e58897401 100644 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/NativeClient.java @@ -1,24 +1,20 @@ package com.baeldung.hazelcast.cluster; -import java.util.Map.Entry; - import com.hazelcast.client.HazelcastClient; import com.hazelcast.client.config.ClientConfig; -import com.hazelcast.config.GroupConfig; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IMap; + +import java.util.Map; public class NativeClient { - public static void main(String[] args) throws InterruptedException { + public static void main(String[] args) { ClientConfig config = new ClientConfig(); - GroupConfig groupConfig = config.getGroupConfig(); - groupConfig.setName("dev"); - groupConfig.setPassword("dev-pass"); + config.setClusterName("dev"); HazelcastInstance hazelcastInstanceClient = HazelcastClient.newHazelcastClient(config); - IMap map = hazelcastInstanceClient.getMap("data"); - for (Entry entry : map.entrySet()) { - System.out.println(String.format("Key: %d, Value: %s", entry.getKey(), entry.getValue())); + Map map = hazelcastInstanceClient.getMap("data"); + for (Map.Entry entry : map.entrySet()) { + System.out.printf("Key: %d, Value: %s%n", entry.getKey(), entry.getValue()); } } } diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java index 36028834a4..7c903e961a 100644 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/cluster/ServerNode.java @@ -1,19 +1,19 @@ package com.baeldung.hazelcast.cluster; -import java.util.Map; - import com.hazelcast.core.Hazelcast; import com.hazelcast.core.HazelcastInstance; -import com.hazelcast.core.IdGenerator; +import com.hazelcast.flakeidgen.FlakeIdGenerator; + +import java.util.Map; public class ServerNode { public static void main(String[] args) { HazelcastInstance hazelcastInstance = Hazelcast.newHazelcastInstance(); Map map = hazelcastInstance.getMap("data"); - IdGenerator idGenerator = hazelcastInstance.getIdGenerator("newid"); + FlakeIdGenerator idGenerator = hazelcastInstance.getFlakeIdGenerator("newid"); for (int i = 0; i < 10; i++) { - map.put(idGenerator.newId(), "message" + 1); + map.put(idGenerator.newId(), "message" + i); } } } diff --git a/hazelcast/src/main/java/com/baeldung/hazelcast/jet/WordCounter.java b/hazelcast/src/main/java/com/baeldung/hazelcast/jet/WordCounter.java index 971986bcae..5d10650f89 100644 --- a/hazelcast/src/main/java/com/baeldung/hazelcast/jet/WordCounter.java +++ b/hazelcast/src/main/java/com/baeldung/hazelcast/jet/WordCounter.java @@ -1,33 +1,31 @@ package com.baeldung.hazelcast.jet; -import java.util.List; -import java.util.Map; - -import static com.hazelcast.jet.Traversers.traverseArray; -import static com.hazelcast.jet.aggregate.AggregateOperations.counting; -import static com.hazelcast.jet.function.DistributedFunctions.wholeItem; - import com.hazelcast.jet.Jet; import com.hazelcast.jet.JetInstance; import com.hazelcast.jet.pipeline.Pipeline; import com.hazelcast.jet.pipeline.Sinks; import com.hazelcast.jet.pipeline.Sources; +import java.util.List; +import java.util.Map; + +import static com.hazelcast.function.Functions.wholeItem; +import static com.hazelcast.jet.Traversers.traverseArray; +import static com.hazelcast.jet.aggregate.AggregateOperations.counting; + public class WordCounter { private static final String LIST_NAME = "textList"; - private static final String MAP_NAME = "countMap"; private Pipeline createPipeLine() { Pipeline p = Pipeline.create(); - p.drawFrom(Sources. list(LIST_NAME)) - .flatMap(word -> traverseArray(word.toLowerCase() - .split("\\W+"))) + p.readFrom(Sources.list(LIST_NAME)) + .flatMap(word -> traverseArray(word.toLowerCase().split("\\W+"))) .filter(word -> !word.isEmpty()) .groupingKey(wholeItem()) .aggregate(counting()) - .drainTo(Sinks.map(MAP_NAME)); + .writeTo(Sinks.map(MAP_NAME)); return p; } @@ -38,8 +36,7 @@ public class WordCounter { List textList = jet.getList(LIST_NAME); textList.addAll(sentences); Pipeline p = createPipeLine(); - jet.newJob(p) - .join(); + jet.newJob(p).join(); Map counts = jet.getMap(MAP_NAME); count = counts.get(word); } finally { diff --git a/hazelcast/src/test/java/com/baeldung/hazelcast/jet/WordCounterUnitTest.java b/hazelcast/src/test/java/com/baeldung/hazelcast/jet/WordCounterUnitTest.java index 95596b3860..7a60cd9a01 100644 --- a/hazelcast/src/test/java/com/baeldung/hazelcast/jet/WordCounterUnitTest.java +++ b/hazelcast/src/test/java/com/baeldung/hazelcast/jet/WordCounterUnitTest.java @@ -1,11 +1,11 @@ package com.baeldung.hazelcast.jet; -import static org.junit.Assert.assertTrue; +import org.junit.Test; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class WordCounterUnitTest { @@ -15,7 +15,7 @@ public class WordCounterUnitTest { sentences.add("The first second was alright, but the second second was tough."); WordCounter wordCounter = new WordCounter(); long countSecond = wordCounter.countWord(sentences, "second"); - assertTrue(countSecond == 3); + assertEquals(3, countSecond); } } From 989acd5ed7859c29eb62aabae1255918707a587b Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Wed, 16 Sep 2020 10:11:58 +0200 Subject: [PATCH 051/260] JAVA-2599: Handle Windows specific exception in the ExistenceUnitTest --- .../baeldung/existence/ExistenceUnitTest.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java index c52e46e8c1..747ae85b65 100644 --- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/existence/ExistenceUnitTest.java @@ -4,10 +4,7 @@ import org.junit.Test; import java.io.File; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.LinkOption; -import java.nio.file.Path; -import java.nio.file.Paths; +import java.nio.file.*; import java.util.concurrent.ThreadLocalRandom; import static org.junit.Assert.assertFalse; @@ -47,8 +44,18 @@ public class ExistenceUnitTest { public void givenSymbolicLink_whenTargetDoesNotExists_thenFollowOrNotBasedOnTheOptions() throws IOException { Path target = Files.createTempFile("baeldung", "target"); Path symbol = Paths.get("test-link-" + ThreadLocalRandom.current().nextInt()); + Path symbolicLink = null; + + try { + symbolicLink = Files.createSymbolicLink(symbol, target); + } catch (FileSystemException ex) { + System.out.println("Your OS security policy prevents the current user from creating symbolic links.\n" + + "Most probably you're running Windows with UAC.\n" + + "If this is the case, please see - https://docs.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/create-symbolic-links\n" + + "You must change your security settings to run this test under Windows."); + return; + } - Path symbolicLink = Files.createSymbolicLink(symbol, target); assertTrue(Files.exists(symbolicLink)); assertTrue(Files.isSymbolicLink(symbolicLink)); assertFalse(Files.isSymbolicLink(target)); From 5cc62d43a36a1b484bd99871aebd5d833ee36090 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:40:09 +0800 Subject: [PATCH 052/260] Update README.md --- spring-cloud/spring-cloud-consul/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud/spring-cloud-consul/README.md b/spring-cloud/spring-cloud-consul/README.md index 47dc39f0d5..e587572ffa 100644 --- a/spring-cloud/spring-cloud-consul/README.md +++ b/spring-cloud/spring-cloud-consul/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [A Quick Guide to Spring Cloud Consul](http://www.baeldung.com/spring-cloud-consul) +- [Leadership Election With Consul](https://www.baeldung.com/consul-leadership-election) From c30abba25f0e1c335c8bfe08aa7c5f9468e0316e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:41:20 +0800 Subject: [PATCH 053/260] Update README.md --- spring-boot-modules/spring-boot-actuator/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-actuator/README.md b/spring-boot-modules/spring-boot-actuator/README.md index 6f31ee4a5e..3e8ef3411b 100644 --- a/spring-boot-modules/spring-boot-actuator/README.md +++ b/spring-boot-modules/spring-boot-actuator/README.md @@ -9,3 +9,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Liveness and Readiness Probes in Spring Boot](https://www.baeldung.com/spring-liveness-readiness-probes) - [Custom Information in Spring Boot Info Endpoint](https://www.baeldung.com/spring-boot-info-actuator-custom) +- [Health Indicators in Spring Boot](https://www.baeldung.com/spring-boot-health-indicators) From 9de2a7e7788418cc4824e6c71a69dde6747b9486 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:42:16 +0800 Subject: [PATCH 054/260] Update README.md --- spring-boot-modules/spring-boot-properties-3/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-properties-3/README.md b/spring-boot-modules/spring-boot-properties-3/README.md index d89f825c86..df272be7f4 100644 --- a/spring-boot-modules/spring-boot-properties-3/README.md +++ b/spring-boot-modules/spring-boot-properties-3/README.md @@ -6,4 +6,4 @@ ### Relevant Articles: - [How to Define a Map in YAML for a POJO?](https://www.baeldung.com/yaml-map-pojo) - +- [Using application.yml vs application.properties in Spring Boot](https://www.baeldung.com/spring-boot-yaml-vs-properties) From 29577bd7773b9a46ed1560c2c12d8f5bf65a2095 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:43:16 +0800 Subject: [PATCH 055/260] Update README.md --- core-java-modules/core-java-io-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-io-3/README.md b/core-java-modules/core-java-io-3/README.md index 06a2a5a0fc..4b1a14ab3e 100644 --- a/core-java-modules/core-java-io-3/README.md +++ b/core-java-modules/core-java-io-3/README.md @@ -10,4 +10,5 @@ This module contains articles about core Java input and output (IO) - [Copy a Directory in Java](https://www.baeldung.com/java-copy-directory) - [Java Files Open Options](https://www.baeldung.com/java-file-options) - [Creating Temporary Directories in Java](https://www.baeldung.com/java-temp-directories) +- [Reading a Line at a Given Line Number From a File in Java](https://www.baeldung.com/java-read-line-at-number) - [[<-- Prev]](/core-java-modules/core-java-io-2) From 9c64b62ad6227f20286f5cfe15b26db0580a70c6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:44:40 +0800 Subject: [PATCH 056/260] Update README.md --- spring-boot-modules/spring-boot-mvc-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-mvc-3/README.md b/spring-boot-modules/spring-boot-mvc-3/README.md index 0562224337..6627bd8eea 100644 --- a/spring-boot-modules/spring-boot-mvc-3/README.md +++ b/spring-boot-modules/spring-boot-mvc-3/README.md @@ -6,4 +6,5 @@ This module contains articles about Spring Web MVC in Spring Boot projects. - [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) - [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) +- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) - More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) From ee277ad5db39c020cdc6950068280a8babb94e3e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:44:58 +0800 Subject: [PATCH 057/260] Update README.md --- spring-5-webflux/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-5-webflux/README.md b/spring-5-webflux/README.md index 55ab0b8af4..9f9a12f997 100644 --- a/spring-5-webflux/README.md +++ b/spring-5-webflux/README.md @@ -8,3 +8,4 @@ This module contains articles about Spring 5 WebFlux - [How to Return 404 with Spring WebFlux](https://www.baeldung.com/spring-webflux-404) - [Spring WebClient Requests with Parameters](https://www.baeldung.com/webflux-webclient-parameters) - [RSocket Using Spring Boot](https://www.baeldung.com/spring-boot-rsocket) +- [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) From 35fb40162c1f110d8d54c7e266e4ffb0f8beedba Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:46:47 +0800 Subject: [PATCH 058/260] Update README.md --- spring-rest-http-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-rest-http-2/README.md b/spring-rest-http-2/README.md index 74ec59e0b5..97cdc2d068 100644 --- a/spring-rest-http-2/README.md +++ b/spring-rest-http-2/README.md @@ -7,4 +7,4 @@ The "REST With Spring 2" Classes: http://bit.ly/restwithspring ### Relevant Articles: - +- [How to Turn Off Swagger-ui in Production](https://www.baeldung.com/swagger-ui-turn-off-in-production) From 647b0e9171155402037e7d07c5b5327224d5db31 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:47:55 +0800 Subject: [PATCH 059/260] Update README.md --- libraries-testing/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-testing/README.md b/libraries-testing/README.md index 43d7673e2d..447f3f32b9 100644 --- a/libraries-testing/README.md +++ b/libraries-testing/README.md @@ -12,3 +12,4 @@ This module contains articles about test libraries. - [Introduction to Hoverfly in Java](https://www.baeldung.com/hoverfly) - [Testing with Hamcrest](https://www.baeldung.com/java-junit-hamcrest-guide) - [Introduction To DBUnit](https://www.baeldung.com/java-dbunit) +- [Introduction to ArchUnit](https://www.baeldung.com/java-archunit-intro) From c79db10648fc596c485ec4abe62d0eb887967371 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:51:52 +0800 Subject: [PATCH 060/260] Update README.md --- core-java-modules/core-java-lang-math-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-math-2/README.md b/core-java-modules/core-java-lang-math-2/README.md index 09039f6ed0..69ee00b5a5 100644 --- a/core-java-modules/core-java-lang-math-2/README.md +++ b/core-java-modules/core-java-lang-math-2/README.md @@ -13,4 +13,5 @@ - [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) - [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) +- [Largest Power of 2 That Is Less Than the Given Number](https://www.baeldung.com/java-largest-power-of-2-less-than-number) - More articles: [[<-- Prev]](/core-java-modules/core-java-lang-math) From c221c2fa0bdd2526e64e7773c5eac637909abccc Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:52:52 +0800 Subject: [PATCH 061/260] Update README.md --- core-java-modules/core-java-exceptions-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions-3/README.md b/core-java-modules/core-java-exceptions-3/README.md index e6c7eda881..1b2db24bdc 100644 --- a/core-java-modules/core-java-exceptions-3/README.md +++ b/core-java-modules/core-java-exceptions-3/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [NoSuchMethodError in Java](https://www.baeldung.com/java-nosuchmethod-error) +- [IllegalArgumentException or NullPointerException for a Null Parameter?](https://www.baeldung.com/java-illegalargumentexception-or-nullpointerexception) From ede8e77f7ab04f42ee0dec9c5e6a873615141967 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:53:49 +0800 Subject: [PATCH 062/260] Update README.md --- quarkus/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/quarkus/README.md b/quarkus/README.md index 3ff08c6f9e..94b71dd954 100644 --- a/quarkus/README.md +++ b/quarkus/README.md @@ -1,3 +1,4 @@ ## Relevant Articles: - [Guide to QuarkusIO](https://www.baeldung.com/quarkus-io) +- [Testing Quarkus Applications](https://www.baeldung.com/java-quarkus-testing) From a6f195dab69b21df2b5e131978811f131c178430 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:55:08 +0800 Subject: [PATCH 063/260] Create README.md --- gradle-5/source-sets/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 gradle-5/source-sets/README.md diff --git a/gradle-5/source-sets/README.md b/gradle-5/source-sets/README.md new file mode 100644 index 0000000000..19fe1e1fae --- /dev/null +++ b/gradle-5/source-sets/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Gradle Source Sets](https://www.baeldung.com/gradle-source-sets) From 258f1be8ac1028d3d9c76530e3ca894ad1dcc0e8 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:56:33 +0800 Subject: [PATCH 064/260] Update README.md --- core-java-modules/core-java-arrays-guides/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-arrays-guides/README.md b/core-java-modules/core-java-arrays-guides/README.md index 621443e4a9..934833b31b 100644 --- a/core-java-modules/core-java-arrays-guides/README.md +++ b/core-java-modules/core-java-arrays-guides/README.md @@ -6,3 +6,4 @@ This module contains complete guides about arrays in Java - [Arrays in Java: A Reference Guide](https://www.baeldung.com/java-arrays-guide) - [Guide to the java.util.Arrays Class](https://www.baeldung.com/java-util-arrays) - [What is \[Ljava.lang.Object;?](https://www.baeldung.com/java-tostring-array) +- [Guide to ArrayStoreException](https://www.baeldung.com/java-arraystoreexception) From 1d9cf597d8bbf31bc11f6fda449b3bc410e60414 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:57:59 +0800 Subject: [PATCH 065/260] Update README.md --- testing-modules/testing-assertions/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/testing-assertions/README.md b/testing-modules/testing-assertions/README.md index 08e2e66062..ea238af599 100644 --- a/testing-modules/testing-assertions/README.md +++ b/testing-modules/testing-assertions/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [Asserting Log Messages With JUnit](https://www.baeldung.com/junit-asserting-logs) +- [Assert Two Lists for Equality Ignoring Order in Java](https://www.baeldung.com/java-assert-lists-equality-ignore-order) From d04fadfb9bc2bcadaa1a96b2a932f6b5ae5cd95a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 22:59:27 +0800 Subject: [PATCH 066/260] Update README.md --- spring-boot-modules/spring-boot-autoconfiguration/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-autoconfiguration/README.md b/spring-boot-modules/spring-boot-autoconfiguration/README.md index d1b5fde7ed..881c88467b 100644 --- a/spring-boot-modules/spring-boot-autoconfiguration/README.md +++ b/spring-boot-modules/spring-boot-autoconfiguration/README.md @@ -10,4 +10,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Create a Custom Auto-Configuration with Spring Boot](https://www.baeldung.com/spring-boot-custom-auto-configuration) - [Guide to ApplicationContextRunner in Spring Boot](https://www.baeldung.com/spring-boot-context-runner) - [A Guide to Spring Boot Configuration Metadata](https://www.baeldung.com/spring-boot-configuration-metadata) -- [Display Auto-Configuration Report in Spring Boot](https://www.baeldung.com/spring-boot-auto-configuration-report) \ No newline at end of file +- [Display Auto-Configuration Report in Spring Boot](https://www.baeldung.com/spring-boot-auto-configuration-report) +- [The Spring @ConditionalOnProperty Annotation](https://www.baeldung.com/spring-conditionalonproperty) From f9cd2c38078c720a8229d7a9b2b22ae61b18fc33 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:01:10 +0800 Subject: [PATCH 067/260] Update README.md --- testing-modules/spring-testing-2/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing-modules/spring-testing-2/README.md b/testing-modules/spring-testing-2/README.md index 729105e3fd..702a02ff27 100644 --- a/testing-modules/spring-testing-2/README.md +++ b/testing-modules/spring-testing-2/README.md @@ -1 +1,3 @@ ## Relevant Articles: + +- [Guide to @DynamicPropertySource in Spring](https://www.baeldung.com/spring-dynamicpropertysource) From 459dc06432a68423cb2f9685110c0864180095f0 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:34:14 +0800 Subject: [PATCH 068/260] Update README.md --- spring-thymeleaf-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-thymeleaf-3/README.md b/spring-thymeleaf-3/README.md index 34bd1b4b35..8bb8861daf 100644 --- a/spring-thymeleaf-3/README.md +++ b/spring-thymeleaf-3/README.md @@ -8,3 +8,4 @@ This module contains articles about Spring with Thymeleaf - [Formatting Currencies in Spring Using Thymeleaf](https://www.baeldung.com/spring-thymeleaf-currencies) - [Working with Select and Option in Thymeleaf](https://www.baeldung.com/thymeleaf-select-option) - [Conditional CSS Classes in Thymeleaf](https://www.baeldung.com/spring-mvc-thymeleaf-conditional-css-classes) +- [Using Hidden Inputs with Spring and Thymeleaf](https://www.baeldung.com/spring-thymeleaf-hidden-inputs) From b7ec39842bd155d4c1f94b9111e1050b94387981 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:37:50 +0800 Subject: [PATCH 069/260] Create README.md --- spring-boot-modules/spring-boot-swagger/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-boot-modules/spring-boot-swagger/README.md diff --git a/spring-boot-modules/spring-boot-swagger/README.md b/spring-boot-modules/spring-boot-swagger/README.md new file mode 100644 index 0000000000..1038031210 --- /dev/null +++ b/spring-boot-modules/spring-boot-swagger/README.md @@ -0,0 +1,3 @@ +## Relevant Articles: + +- [Hiding Endpoints From Swagger Documentation in Spring Boot](https://www.baeldung.com/spring-swagger-hiding-endpoints) From 35c25daa18843cd16a81bcc9c3282408fb6db419 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:39:49 +0800 Subject: [PATCH 070/260] Update README.md --- spring-boot-modules/spring-boot-keycloak/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-keycloak/README.md b/spring-boot-modules/spring-boot-keycloak/README.md index 2dfe3fc331..74fbbb6f09 100644 --- a/spring-boot-modules/spring-boot-keycloak/README.md +++ b/spring-boot-modules/spring-boot-keycloak/README.md @@ -4,3 +4,4 @@ This module contains articles about Keycloak in Spring Boot projects. ## Relevant articles: - [A Quick Guide to Using Keycloak with Spring Boot](https://www.baeldung.com/spring-boot-keycloak) +- [Custom User Attributes with Keycloak](https://www.baeldung.com/keycloak-custom-user-attributes) From 5c0391cf68d07994ed35d86441e9de893c6e7ddb Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:42:36 +0800 Subject: [PATCH 071/260] Update README.md --- core-java-modules/core-java-exceptions-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-exceptions-3/README.md b/core-java-modules/core-java-exceptions-3/README.md index 1b2db24bdc..4e3dd22bb8 100644 --- a/core-java-modules/core-java-exceptions-3/README.md +++ b/core-java-modules/core-java-exceptions-3/README.md @@ -2,3 +2,4 @@ - [NoSuchMethodError in Java](https://www.baeldung.com/java-nosuchmethod-error) - [IllegalArgumentException or NullPointerException for a Null Parameter?](https://www.baeldung.com/java-illegalargumentexception-or-nullpointerexception) +- [IllegalMonitorStateException in Java](https://www.baeldung.com/java-illegalmonitorstateexception) From 4d84d35754ae4d9e30911fd0ceb8e06f81310863 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:44:29 +0800 Subject: [PATCH 072/260] Update README.md --- spring-rest-http/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-rest-http/README.md b/spring-rest-http/README.md index bb4cfd829d..2271858f0a 100644 --- a/spring-rest-http/README.md +++ b/spring-rest-http/README.md @@ -14,3 +14,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Guide to DeferredResult in Spring](https://www.baeldung.com/spring-deferred-result) - [Using JSON Patch in Spring REST APIs](https://www.baeldung.com/spring-rest-json-patch) - [OpenAPI JSON Objects as Query Parameters](https://www.baeldung.com/openapi-json-query-parameters) +- [Dates in OpenAPI Files](https://www.baeldung.com/openapi-dates) From 1cf9a48f688f4f13f0a38b2708896a0754329c1c Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:45:40 +0800 Subject: [PATCH 073/260] Update README.MD --- persistence-modules/flyway/README.MD | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/flyway/README.MD b/persistence-modules/flyway/README.MD index daeb9012b5..bd5f9bbe03 100644 --- a/persistence-modules/flyway/README.MD +++ b/persistence-modules/flyway/README.MD @@ -1,3 +1,4 @@ ### Relevant Articles: - [Database Migrations with Flyway](http://www.baeldung.com/database-migrations-with-flyway) - [A Guide to Flyway Callbacks](http://www.baeldung.com/flyway-callbacks) +- [Rolling Back Migrations with Flyway](https://www.baeldung.com/flyway-roll-back) From ce9e9a605e453609a9d6db9447d7335b6d9026b1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:47:15 +0800 Subject: [PATCH 074/260] Update README.md --- libraries-security/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-security/README.md b/libraries-security/README.md index 5ec85a15e9..1a0e16a776 100644 --- a/libraries-security/README.md +++ b/libraries-security/README.md @@ -11,3 +11,4 @@ This module contains articles about security libraries. - [Intro to Jasypt](https://www.baeldung.com/jasypt) - [Digital Signatures in Java](https://www.baeldung.com/java-digital-signature) - [How to Read PEM File to Get Public and Private Keys](https://www.baeldung.com/java-read-pem-file-keys) +- [SSH Connection With Java](https://www.baeldung.com/java-ssh-connection) From 5ae7a913cf4c9879a5ce8ba9b1f112c2f029da34 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:48:50 +0800 Subject: [PATCH 075/260] Update README.md --- testing-modules/mockito-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index 9ca5a38e2e..c7b62182b5 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -8,3 +8,4 @@ - [Introduction to Mockito’s AdditionalAnswers](https://www.baeldung.com/mockito-additionalanswers) - [Mockito – Using Spies](https://www.baeldung.com/mockito-spy) - [Using Mockito ArgumentCaptor](https://www.baeldung.com/mockito-argumentcaptor) +- [Difference Between when() and doXxx() Methods in Mockito](https://www.baeldung.com/java-mockito-when-vs-do) From fce5fac0c44524d321b4bb8d37c74fb1b32762ae Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:50:34 +0800 Subject: [PATCH 076/260] Update README.md --- patterns/design-patterns-architectural/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/patterns/design-patterns-architectural/README.md b/patterns/design-patterns-architectural/README.md index fbe4221752..5b6011c159 100644 --- a/patterns/design-patterns-architectural/README.md +++ b/patterns/design-patterns-architectural/README.md @@ -1,3 +1,4 @@ ### Relevant Articles: - [Service Locator Pattern](https://www.baeldung.com/java-service-locator-pattern) - [The DAO Pattern in Java](https://www.baeldung.com/java-dao-pattern) +- [DAO vs Repository Patterns](https://www.baeldung.com/java-dao-vs-repository) From d5ada37cc7d1c04175fe4e5ce8489186ed79b2c3 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:54:01 +0800 Subject: [PATCH 077/260] Update README.md --- aws-lambda/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/aws-lambda/README.md b/aws-lambda/README.md index 2fbdaace10..759c9dd506 100644 --- a/aws-lambda/README.md +++ b/aws-lambda/README.md @@ -5,3 +5,4 @@ This module contains articles about AWS Lambda ### Relevant Articles: - [Using AWS Lambda with API Gateway](https://www.baeldung.com/aws-lambda-api-gateway) - [Introduction to AWS Serverless Application Model](https://www.baeldung.com/aws-serverless) +- [How to Implement Hibernate in an AWS Lambda Function in Java](https://www.baeldung.com/java-aws-lambda-hibernate) From d30ba2c8f04284063ddec1e74b75b6c84d091d3e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:55:27 +0800 Subject: [PATCH 078/260] Create README.md --- gradle-5/cmd-line-args/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 gradle-5/cmd-line-args/README.md diff --git a/gradle-5/cmd-line-args/README.md b/gradle-5/cmd-line-args/README.md new file mode 100644 index 0000000000..de797c8588 --- /dev/null +++ b/gradle-5/cmd-line-args/README.md @@ -0,0 +1,3 @@ +## Relevant Articles: + +- [Passing Command Line Arguments in Gradle](https://www.baeldung.com/gradle-command-line-arguments) From a61f3c9b54907b8024d5f837179d951306699181 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 16 Sep 2020 23:56:46 +0800 Subject: [PATCH 079/260] Update README.md --- core-java-modules/core-java-lang-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-3/README.md b/core-java-modules/core-java-lang-3/README.md index 0fa08ef397..121d30f20f 100644 --- a/core-java-modules/core-java-lang-3/README.md +++ b/core-java-modules/core-java-lang-3/README.md @@ -5,4 +5,5 @@ This module contains articles about core features in the Java language - [Class.isInstance vs Class.isAssignableFrom](https://www.baeldung.com/java-isinstance-isassignablefrom) - [Converting a Java String Into a Boolean](https://www.baeldung.com/java-string-to-boolean) - [When are Static Variables Initialized in Java?](https://www.baeldung.com/java-static-variables-initialization) +- [Checking if a Class Exists in Java](https://www.baeldung.com/java-check-class-exists) - [[<-- Prev]](/core-java-modules/core-java-lang-2) From 2cc967c01c535e59b42cf7f939fa2eed7bab878f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 17 Sep 2020 00:09:56 +0800 Subject: [PATCH 080/260] Update README.md --- core-kotlin-modules/core-kotlin-collections-2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-kotlin-modules/core-kotlin-collections-2/README.md b/core-kotlin-modules/core-kotlin-collections-2/README.md index 2dc180b5b3..64062ee704 100644 --- a/core-kotlin-modules/core-kotlin-collections-2/README.md +++ b/core-kotlin-modules/core-kotlin-collections-2/README.md @@ -2,6 +2,6 @@ This module contains articles about core Kotlin collections. -### Relevant articles: - +## Relevant articles: +- [Aggregate Operations in Kotlin](https://www.baeldung.com/kotlin/aggregate-operations) From 8928164d224ca352b6db2a87e5bc092d9d86a62f Mon Sep 17 00:00:00 2001 From: kwoyke Date: Wed, 16 Sep 2020 20:53:28 +0200 Subject: [PATCH 081/260] BAEL-4595: Update hazelcast.xml config file (#10039) * BAEL-4595: Upgrade to hazelcast-jet 4.2 * BAEL-4595: Update hazelcast.xml config file --- hazelcast/src/main/resources/hazelcast.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/hazelcast/src/main/resources/hazelcast.xml b/hazelcast/src/main/resources/hazelcast.xml index f29dc532b8..889e65801b 100644 --- a/hazelcast/src/main/resources/hazelcast.xml +++ b/hazelcast/src/main/resources/hazelcast.xml @@ -1,16 +1,16 @@ - + 5701 - - - - machine1 - localhost - + + + machine1 + localhost + \ No newline at end of file From 4ce6b34c063d33a52ec7695c2d9e321403b24833 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Fri, 11 Sep 2020 01:08:12 +0200 Subject: [PATCH 082/260] [BAEL-4583] Improvement- Java Period --- .../com/baeldung/date/DateDiffUnitTest.java | 63 +++++++++++++------ 1 file changed, 43 insertions(+), 20 deletions(-) diff --git a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java index 226556d4bb..9a0779ccac 100644 --- a/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java +++ b/core-java-modules/core-java-date-operations-1/src/test/java/com/baeldung/date/DateDiffUnitTest.java @@ -1,6 +1,8 @@ package com.baeldung.date; -import static org.junit.Assert.assertEquals; +import org.joda.time.Days; +import org.joda.time.Minutes; +import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -16,7 +18,7 @@ import java.util.Locale; import java.util.TimeZone; import java.util.concurrent.TimeUnit; -import org.junit.Test; +import static org.junit.Assert.*; public class DateDiffUnitTest { @@ -29,18 +31,39 @@ public class DateDiffUnitTest { long diffInMillies = Math.abs(secondDate.getTime() - firstDate.getTime()); long diff = TimeUnit.DAYS.convert(diffInMillies, TimeUnit.MILLISECONDS); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test - public void givenTwoDatesInJava8_whenDifferentiating_thenWeGetSix() { - LocalDate now = LocalDate.now(); - LocalDate sixDaysBehind = now.minusDays(6); + public void givenTwoDatesInJava8_whenUsingPeriodGetDays_thenWorks() { + LocalDate aDate = LocalDate.of(2020, 9, 11); + LocalDate sixDaysBehind = aDate.minusDays(6); - Period period = Period.between(now, sixDaysBehind); + Period period = Period.between(aDate, sixDaysBehind); int diff = Math.abs(period.getDays()); - assertEquals(diff, 6); + assertEquals(6, diff); + } + + @Test + public void givenTwoDatesInJava8_whenUsingPeriodGetDays_thenDoesNotWork() { + LocalDate aDate = LocalDate.of(2020, 9, 11); + LocalDate sixtyDaysBehind = aDate.minusDays(60); + Period period = Period.between(aDate, sixtyDaysBehind); + int diff = Math.abs(period.getDays()); + //not equals + assertNotEquals(60, diff); + } + + @Test + public void givenTwoDatesInJava8_whenUsingPeriod_thenWeGet0Year1Month29Days() { + LocalDate aDate = LocalDate.of(2020, 9, 11); + LocalDate sixtyDaysBehind = aDate.minusDays(60); + Period period = Period.between(aDate, sixtyDaysBehind); + int years = Math.abs(period.getYears()); + int months = Math.abs(period.getMonths()); + int days = Math.abs(period.getDays()); + assertArrayEquals(new int[] { 0, 1, 29 }, new int[] { years, months, days }); } @Test @@ -51,7 +74,7 @@ public class DateDiffUnitTest { Duration duration = Duration.between(now, sixMinutesBehind); long diff = Math.abs(duration.toMinutes()); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test @@ -61,7 +84,7 @@ public class DateDiffUnitTest { long diff = ChronoUnit.SECONDS.between(now, tenSecondsLater); - assertEquals(diff, 10); + assertEquals(10, diff); } @Test @@ -69,9 +92,9 @@ public class DateDiffUnitTest { LocalDateTime ldt = LocalDateTime.now(); ZonedDateTime now = ldt.atZone(ZoneId.of("America/Montreal")); ZonedDateTime sixDaysBehind = now.withZoneSameInstant(ZoneId.of("Asia/Singapore")) - .minusDays(6); + .minusDays(6); long diff = ChronoUnit.DAYS.between(sixDaysBehind, now); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test @@ -81,7 +104,7 @@ public class DateDiffUnitTest { long diff = now.until(tenSecondsLater, ChronoUnit.SECONDS); - assertEquals(diff, 10); + assertEquals(10, diff); } @Test @@ -89,10 +112,9 @@ public class DateDiffUnitTest { org.joda.time.LocalDate now = org.joda.time.LocalDate.now(); org.joda.time.LocalDate sixDaysBehind = now.minusDays(6); - org.joda.time.Period period = new org.joda.time.Period(now, sixDaysBehind); - long diff = Math.abs(period.getDays()); + long diff = Math.abs(Days.daysBetween(now, sixDaysBehind).getDays()); - assertEquals(diff, 6); + assertEquals(6, diff); } @Test @@ -100,8 +122,9 @@ public class DateDiffUnitTest { org.joda.time.LocalDateTime now = org.joda.time.LocalDateTime.now(); org.joda.time.LocalDateTime sixMinutesBehind = now.minusMinutes(6); - org.joda.time.Period period = new org.joda.time.Period(now, sixMinutesBehind); - long diff = Math.abs(period.getDays()); + long diff = Math.abs(Minutes.minutesBetween(now, sixMinutesBehind).getMinutes()); + assertEquals(6, diff); + } @Test @@ -111,6 +134,6 @@ public class DateDiffUnitTest { long diff = Math.abs(now.numDaysFrom(sixDaysBehind)); - assertEquals(diff, 6); + assertEquals(6, diff); } -} \ No newline at end of file +} From 1509fa5ddc5b26a9148ec3a7476c2ebee2b353db Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Wed, 16 Sep 2020 22:20:32 +0200 Subject: [PATCH 083/260] JAVA-2904: Fix README.MD files extension --- core-java-modules/core-java-reflection/{README.MD => README.md} | 0 core-java-modules/pre-jpms/{README.MD => README.md} | 0 drools/{README.MD => README.md} | 0 libraries-primitive/{README.MD => README.md} | 0 persistence-modules/flyway-repair/{README.MD => README.md} | 0 persistence-modules/flyway/{README.MD => README.md} | 0 .../spring-boot-persistence/{README.MD => README.md} | 0 persistence-modules/spring-data-dynamodb/{README.MD => README.md} | 0 raml/{README.MD => README.md} | 0 spring-boot-modules/spring-boot-client/{README.MD => README.md} | 0 .../spring-boot-exceptions/{README.MD => README.md} | 0 spring-cloud-data-flow/apache-spark-job/{README.MD => README.md} | 0 spring-cloud-data-flow/batch-job/{README.MD => README.md} | 0 .../spring-cloud-data-flow-etl/{README.MD => README.md} | 0 .../{README.MD => README.md} | 0 spring-cloud/spring-cloud-functions/{README.MD => README.md} | 0 spring-cloud/spring-cloud-hystrix/{README.MD => README.md} | 0 17 files changed, 0 insertions(+), 0 deletions(-) rename core-java-modules/core-java-reflection/{README.MD => README.md} (100%) rename core-java-modules/pre-jpms/{README.MD => README.md} (100%) rename drools/{README.MD => README.md} (100%) rename libraries-primitive/{README.MD => README.md} (100%) rename persistence-modules/flyway-repair/{README.MD => README.md} (100%) rename persistence-modules/flyway/{README.MD => README.md} (100%) rename persistence-modules/spring-boot-persistence/{README.MD => README.md} (100%) rename persistence-modules/spring-data-dynamodb/{README.MD => README.md} (100%) rename raml/{README.MD => README.md} (100%) rename spring-boot-modules/spring-boot-client/{README.MD => README.md} (100%) rename spring-boot-modules/spring-boot-exceptions/{README.MD => README.md} (100%) rename spring-cloud-data-flow/apache-spark-job/{README.MD => README.md} (100%) rename spring-cloud-data-flow/batch-job/{README.MD => README.md} (100%) rename spring-cloud-data-flow/spring-cloud-data-flow-etl/{README.MD => README.md} (100%) rename spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/{README.MD => README.md} (100%) rename spring-cloud/spring-cloud-functions/{README.MD => README.md} (100%) rename spring-cloud/spring-cloud-hystrix/{README.MD => README.md} (100%) diff --git a/core-java-modules/core-java-reflection/README.MD b/core-java-modules/core-java-reflection/README.md similarity index 100% rename from core-java-modules/core-java-reflection/README.MD rename to core-java-modules/core-java-reflection/README.md diff --git a/core-java-modules/pre-jpms/README.MD b/core-java-modules/pre-jpms/README.md similarity index 100% rename from core-java-modules/pre-jpms/README.MD rename to core-java-modules/pre-jpms/README.md diff --git a/drools/README.MD b/drools/README.md similarity index 100% rename from drools/README.MD rename to drools/README.md diff --git a/libraries-primitive/README.MD b/libraries-primitive/README.md similarity index 100% rename from libraries-primitive/README.MD rename to libraries-primitive/README.md diff --git a/persistence-modules/flyway-repair/README.MD b/persistence-modules/flyway-repair/README.md similarity index 100% rename from persistence-modules/flyway-repair/README.MD rename to persistence-modules/flyway-repair/README.md diff --git a/persistence-modules/flyway/README.MD b/persistence-modules/flyway/README.md similarity index 100% rename from persistence-modules/flyway/README.MD rename to persistence-modules/flyway/README.md diff --git a/persistence-modules/spring-boot-persistence/README.MD b/persistence-modules/spring-boot-persistence/README.md similarity index 100% rename from persistence-modules/spring-boot-persistence/README.MD rename to persistence-modules/spring-boot-persistence/README.md diff --git a/persistence-modules/spring-data-dynamodb/README.MD b/persistence-modules/spring-data-dynamodb/README.md similarity index 100% rename from persistence-modules/spring-data-dynamodb/README.MD rename to persistence-modules/spring-data-dynamodb/README.md diff --git a/raml/README.MD b/raml/README.md similarity index 100% rename from raml/README.MD rename to raml/README.md diff --git a/spring-boot-modules/spring-boot-client/README.MD b/spring-boot-modules/spring-boot-client/README.md similarity index 100% rename from spring-boot-modules/spring-boot-client/README.MD rename to spring-boot-modules/spring-boot-client/README.md diff --git a/spring-boot-modules/spring-boot-exceptions/README.MD b/spring-boot-modules/spring-boot-exceptions/README.md similarity index 100% rename from spring-boot-modules/spring-boot-exceptions/README.MD rename to spring-boot-modules/spring-boot-exceptions/README.md diff --git a/spring-cloud-data-flow/apache-spark-job/README.MD b/spring-cloud-data-flow/apache-spark-job/README.md similarity index 100% rename from spring-cloud-data-flow/apache-spark-job/README.MD rename to spring-cloud-data-flow/apache-spark-job/README.md diff --git a/spring-cloud-data-flow/batch-job/README.MD b/spring-cloud-data-flow/batch-job/README.md similarity index 100% rename from spring-cloud-data-flow/batch-job/README.MD rename to spring-cloud-data-flow/batch-job/README.md diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-etl/README.MD b/spring-cloud-data-flow/spring-cloud-data-flow-etl/README.md similarity index 100% rename from spring-cloud-data-flow/spring-cloud-data-flow-etl/README.MD rename to spring-cloud-data-flow/spring-cloud-data-flow-etl/README.md diff --git a/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.MD b/spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.md similarity index 100% rename from spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.MD rename to spring-cloud-data-flow/spring-cloud-data-flow-stream-processing/README.md diff --git a/spring-cloud/spring-cloud-functions/README.MD b/spring-cloud/spring-cloud-functions/README.md similarity index 100% rename from spring-cloud/spring-cloud-functions/README.MD rename to spring-cloud/spring-cloud-functions/README.md diff --git a/spring-cloud/spring-cloud-hystrix/README.MD b/spring-cloud/spring-cloud-hystrix/README.md similarity index 100% rename from spring-cloud/spring-cloud-hystrix/README.MD rename to spring-cloud/spring-cloud-hystrix/README.md From 60b28c767bde255195c10c779259b1527a4c6d33 Mon Sep 17 00:00:00 2001 From: nguyennamthai Date: Thu, 17 Sep 2020 09:24:28 +0700 Subject: [PATCH 084/260] BAEL-3569: Jersey RESTful Web Services with Spring Security OAuth2 (#9949) * BAEL-3569 Jersey REST service with Spring Security OAuth * BAEL-3569 Fix indentation spaces --- spring-5-security-oauth/pom.xml | 6 +- .../baeldung/jersey/JerseyApplication.java | 13 ++++ .../com/baeldung/jersey/JerseyResource.java | 30 ++++++++ .../java/com/baeldung/jersey/RestConfig.java | 11 +++ .../com/baeldung/jersey/SecurityConfig.java | 21 ++++++ .../resources/jersey-application.properties | 3 + .../jersey/JerseyResourceUnitTest.java | 72 +++++++++++++++++++ 7 files changed, 155 insertions(+), 1 deletion(-) create mode 100644 spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyApplication.java create mode 100644 spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyResource.java create mode 100644 spring-5-security-oauth/src/main/java/com/baeldung/jersey/RestConfig.java create mode 100644 spring-5-security-oauth/src/main/java/com/baeldung/jersey/SecurityConfig.java create mode 100644 spring-5-security-oauth/src/main/resources/jersey-application.properties create mode 100644 spring-5-security-oauth/src/test/java/com/baeldung/jersey/JerseyResourceUnitTest.java diff --git a/spring-5-security-oauth/pom.xml b/spring-5-security-oauth/pom.xml index 325aacea86..19aaa576c8 100644 --- a/spring-5-security-oauth/pom.xml +++ b/spring-5-security-oauth/pom.xml @@ -32,6 +32,10 @@ org.thymeleaf.extras thymeleaf-extras-springsecurity5 + + org.springframework.boot + spring-boot-starter-jersey + @@ -63,7 +67,7 @@ test - + com.baeldung.oauth2.SpringOAuthApplication diff --git a/spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyApplication.java b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyApplication.java new file mode 100644 index 0000000000..6388c10bb3 --- /dev/null +++ b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.jersey; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.PropertySource; + +@SpringBootApplication +@PropertySource("classpath:jersey-application.properties") +public class JerseyApplication { + public static void main(String[] args) { + SpringApplication.run(JerseyApplication.class, args); + } +} diff --git a/spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyResource.java b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyResource.java new file mode 100644 index 0000000000..8968fefbf4 --- /dev/null +++ b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/JerseyResource.java @@ -0,0 +1,30 @@ +package com.baeldung.jersey; + +import org.springframework.security.oauth2.client.authentication.OAuth2AuthenticationToken; +import org.springframework.security.oauth2.core.OAuth2AuthenticatedPrincipal; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.Context; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.SecurityContext; + +@Path("/") +public class JerseyResource { + @GET + @Path("login") + @Produces(MediaType.TEXT_HTML) + public String login() { + return "Log in with GitHub"; + } + + @GET + @Produces(MediaType.TEXT_PLAIN) + public String home(@Context SecurityContext securityContext) { + OAuth2AuthenticationToken authenticationToken = (OAuth2AuthenticationToken) securityContext.getUserPrincipal(); + OAuth2AuthenticatedPrincipal authenticatedPrincipal = authenticationToken.getPrincipal(); + String userName = authenticatedPrincipal.getAttribute("login"); + return "Hello " + userName; + } +} diff --git a/spring-5-security-oauth/src/main/java/com/baeldung/jersey/RestConfig.java b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/RestConfig.java new file mode 100644 index 0000000000..306677f261 --- /dev/null +++ b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/RestConfig.java @@ -0,0 +1,11 @@ +package com.baeldung.jersey; + +import org.glassfish.jersey.server.ResourceConfig; +import org.springframework.stereotype.Component; + +@Component +public class RestConfig extends ResourceConfig { + public RestConfig() { + register(JerseyResource.class); + } +} diff --git a/spring-5-security-oauth/src/main/java/com/baeldung/jersey/SecurityConfig.java b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/SecurityConfig.java new file mode 100644 index 0000000000..5644856695 --- /dev/null +++ b/spring-5-security-oauth/src/main/java/com/baeldung/jersey/SecurityConfig.java @@ -0,0 +1,21 @@ +package com.baeldung.jersey; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .antMatchers("/login") + .permitAll() + .anyRequest() + .authenticated() + .and() + .oauth2Login() + .loginPage("/login"); + } +} diff --git a/spring-5-security-oauth/src/main/resources/jersey-application.properties b/spring-5-security-oauth/src/main/resources/jersey-application.properties new file mode 100644 index 0000000000..516b24eb67 --- /dev/null +++ b/spring-5-security-oauth/src/main/resources/jersey-application.properties @@ -0,0 +1,3 @@ +server.port=8083 +spring.security.oauth2.client.registration.github.client-id= +spring.security.oauth2.client.registration.github.client-secret= \ No newline at end of file diff --git a/spring-5-security-oauth/src/test/java/com/baeldung/jersey/JerseyResourceUnitTest.java b/spring-5-security-oauth/src/test/java/com/baeldung/jersey/JerseyResourceUnitTest.java new file mode 100644 index 0000000000..e6cc3be213 --- /dev/null +++ b/spring-5-security-oauth/src/test/java/com/baeldung/jersey/JerseyResourceUnitTest.java @@ -0,0 +1,72 @@ +package com.baeldung.jersey; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.context.junit4.SpringRunner; + +import java.net.URI; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; +import static org.springframework.http.MediaType.TEXT_HTML; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = RANDOM_PORT) +@TestPropertySource(properties = "spring.security.oauth2.client.registration.github.client-id:test-id") +public class JerseyResourceUnitTest { + @Autowired + private TestRestTemplate restTemplate; + + @LocalServerPort + private int port; + + private String basePath; + + @Before + public void setup() { + basePath = "http://localhost:" + port + "/"; + } + + @Test + public void whenUserIsUnauthenticated_thenTheyAreRedirectedToLoginPage() { + ResponseEntity response = restTemplate.getForEntity(basePath, Object.class); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.FOUND); + assertThat(response.getBody()).isNull(); + + URI redirectLocation = response.getHeaders().getLocation(); + assertThat(redirectLocation).isNotNull(); + assertThat(redirectLocation.toString()).isEqualTo(basePath + "login"); + } + + @Test + public void whenUserAttemptsToLogin_thenAuthorizationPathIsReturned() { + ResponseEntity response = restTemplate.getForEntity(basePath + "login", String.class); + assertThat(response.getHeaders().getContentType()).isEqualTo(TEXT_HTML); + assertThat(response.getBody()).isEqualTo("Log in with GitHub"); + } + + @Test + public void whenUserAccessesAuthorizationEndpoint_thenTheyAresRedirectedToProvider() { + ResponseEntity response = restTemplate.getForEntity(basePath + "oauth2/authorization/github", String.class); + assertThat(response.getStatusCode()).isEqualTo(HttpStatus.FOUND); + assertThat(response.getBody()).isNull(); + + URI redirectLocation = response.getHeaders().getLocation(); + assertThat(redirectLocation).isNotNull(); + assertThat(redirectLocation.getHost()).isEqualTo("github.com"); + assertThat(redirectLocation.getPath()).isEqualTo("/login/oauth/authorize"); + + String redirectionQuery = redirectLocation.getQuery(); + assertThat(redirectionQuery.contains("response_type=code")); + assertThat(redirectionQuery.contains("client_id=test-id")); + assertThat(redirectionQuery.contains("scope=read:user")); + } +} From 15ba49d0f40a7d498cee38829d8b9d97cda178a2 Mon Sep 17 00:00:00 2001 From: Reza Ebrahimpour Date: Thu, 17 Sep 2020 10:25:37 +0430 Subject: [PATCH 085/260] BAEL-4488 Convert class with main to UnitTest class --- .../cipher/AvailableCiphersUnitTest.java} | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) rename core-java-modules/core-java-security-2/src/{main/java/com/baeldung/cipher/AvailableCiphers.java => test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java} (57%) diff --git a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java similarity index 57% rename from core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java rename to core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java index f73433ffd2..48aaa5fb67 100644 --- a/core-java-modules/core-java-security-2/src/main/java/com/baeldung/cipher/AvailableCiphers.java +++ b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java @@ -1,32 +1,35 @@ package com.baeldung.cipher; +import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import java.security.Provider; import java.security.Security; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; -public class AvailableCiphers { - public static void main(String[] args) { - printAllCiphers(); - printCompatibleCiphers(); - } +public class AvailableCiphersUnitTest { + private final Logger logger = LoggerFactory.getLogger(AvailableCiphersUnitTest.class); - private static void printAllCiphers() { + @Test + public void whenGetServices_thenGetAllCipherAlgorithms() { for (Provider provider : Security.getProviders()) { for (Provider.Service service : provider.getServices()) { - System.out.println(service.getAlgorithm()); + logger.info(service.getAlgorithm()); } } } - private static void printCompatibleCiphers() { + @Test + public void whenGetServicesWithFilter_thenGetAllCompatibleCipherAlgorithms() { List algorithms = Arrays.stream(Security.getProviders()) .flatMap(provider -> provider.getServices().stream()) .filter(service -> "Cipher".equals(service.getType())) .map(Provider.Service::getAlgorithm) .collect(Collectors.toList()); - algorithms.forEach(System.out::println); + algorithms.forEach(logger::info); } } From 0d3dafd25cce4ce11e248fff89c540685ebcf9bc Mon Sep 17 00:00:00 2001 From: Adrian Maghear Date: Thu, 17 Sep 2020 08:37:41 +0200 Subject: [PATCH 086/260] [BAEL-4471] reduce number of parallel tests --- quarkus/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/quarkus/pom.xml b/quarkus/pom.xml index 67356abdef..7fdf1557fb 100644 --- a/quarkus/pom.xml +++ b/quarkus/pom.xml @@ -99,6 +99,8 @@ maven-surefire-plugin ${surefire-plugin.version} + 1 + true org.jboss.logmanager.LogManager From 6cbf1e87c5282415780c95fdb82ca4b8f48ed857 Mon Sep 17 00:00:00 2001 From: Rutuja Joshi <67615932+rutujavjoshi@users.noreply.github.com> Date: Thu, 17 Sep 2020 22:02:51 +0530 Subject: [PATCH 087/260] BAEL-4201 - Initial Commit (#9957) * BAEL-4201 - Initial commit * BAEL-4201 - Initial Commit * Update UserAccountController.java removed the additional brackets * Update UserAccountValidationTest.java Updated the tests * Bael - 4201 - recommit for github issue fix For 'This commit does not belong to any branch on this repository' - delete and recommitting controller * Bael - 4201 - recommit for github issue fix For 'This commit does not belong to any branch on this repository' - delete and recommitting test * Bael - 4201 - add for github issue fix For 'This commit does not belong to any branch on this repository' - adding controller again * Bael - 4201 - add for github issue fix For 'This commit does not belong to any branch on this repository' - adding test again * BAEL-4201: Initial Commit * Update UserAccountUnitTest.java * BAEL-4201: updated to fix the commit issue * BAEL-4201 - temporary deleting Deleting to fix branch issue * BAEL-4201 - commiting test again * BAEL-4201 Fixing build issues * BAEL-4201 Github commit issue * BAEL-4201 Github commit issue - webapp folder * BAEL-4201 - commiting test after view upload * Bael- 4201 ThymeLeaf related issues * Bael- 4201 ThymeLeaf related issues * Bael- 4201 ThymeLeaf related issues * Bael- 4201 ThymeLeaf related issues - added html * Bael- 4201 ThymeLeaf issue ; updated suffix- html * Bael - 4201 white label issue * Bael - 4201 white label issue * BAEL-4201 : moving html to templates * BAEL-4201 - moving to templates * BAEL-4201 - moving to templates * BAEL-4201 - review related updates * BAEL-4201 - review related updates * BAEL-4201 - review related updates * BAEL-4201 - review related updates * BAEL-4201 - review related updates * BAEL-4201 - review related updates * BAEL-4201 - review related updates * BAEL-4201 - added the spring-boot-starter-validation dependency --- spring-boot-modules/spring-boot-mvc-3/pom.xml | 6 +- .../springvalidation/ServletInitializer.java | 12 +++ .../SpringValidationApplication.java | 13 +++ .../controller/UserAccountController.java | 44 ++++++++++ .../springvalidation/domain/UserAccount.java | 80 +++++++++++++++++++ .../springvalidation/domain/UserAddress.java | 17 ++++ .../interfaces/AdvanceInfo.java | 6 ++ .../interfaces/BasicInfo.java | 6 ++ .../src/main/resources/application.properties | 2 + .../src/main/resources/templates/error.html | 10 +++ .../src/main/resources/templates/success.html | 10 +++ .../springvalidation/UserAccountUnitTest.java | 57 +++++++++++++ 12 files changed, 262 insertions(+), 1 deletion(-) create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/ServletInitializer.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/SpringValidationApplication.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/controller/UserAccountController.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAccount.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAddress.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/AdvanceInfo.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/BasicInfo.java create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/resources/application.properties create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/error.html create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/success.html create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/springvalidation/UserAccountUnitTest.java diff --git a/spring-boot-modules/spring-boot-mvc-3/pom.xml b/spring-boot-modules/spring-boot-mvc-3/pom.xml index 31c43461d2..1290b0432f 100644 --- a/spring-boot-modules/spring-boot-mvc-3/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-3/pom.xml @@ -22,6 +22,10 @@ org.springframework.boot spring-boot-starter-web + + org.springframework.boot + spring-boot-starter-validation + org.springframework.boot spring-boot-starter-thymeleaf @@ -37,4 +41,4 @@ 2.7 - \ No newline at end of file + diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/ServletInitializer.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/ServletInitializer.java new file mode 100644 index 0000000000..f365582999 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/ServletInitializer.java @@ -0,0 +1,12 @@ +package com.baeldung.springvalidation; + +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +public class ServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(SpringValidationApplication.class); + } +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/SpringValidationApplication.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/SpringValidationApplication.java new file mode 100644 index 0000000000..ccfe990ce7 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/SpringValidationApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.springvalidation; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringValidationApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringValidationApplication.class, args); + } + +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/controller/UserAccountController.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/controller/UserAccountController.java new file mode 100644 index 0000000000..48de7b35d0 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/controller/UserAccountController.java @@ -0,0 +1,44 @@ +package com.baeldung.springvalidation.controller; + +import javax.validation.Valid; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.ui.ModelMap; +import org.springframework.validation.BindingResult; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.baeldung.springvalidation.domain.UserAccount; +import com.baeldung.springvalidation.interfaces.BasicInfo; + +@Controller +public class UserAccountController { + + @GetMapping("/getUserForm") + public String showUserForm(Model theModel) { + UserAccount theUser = new UserAccount(); + theModel.addAttribute("useraccount", theUser); + return "userHome"; + } + + @RequestMapping(value = "/saveBasicInfo", method = RequestMethod.POST) + public String saveBasicInfo(@Valid @ModelAttribute("useraccount") UserAccount useraccount, BindingResult result, ModelMap model) { + if (result.hasErrors()) { + return "error"; + } + return "success"; + } + + @RequestMapping(value = "/saveBasicInfoStep1", method = RequestMethod.POST) + public String saveBasicInfoStep1(@Validated(BasicInfo.class) @ModelAttribute("useraccount") UserAccount useraccount, BindingResult result, ModelMap model) { + if (result.hasErrors()) { + return "error"; + } + return "success"; + } + +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAccount.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAccount.java new file mode 100644 index 0000000000..fd5437fe5e --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAccount.java @@ -0,0 +1,80 @@ +package com.baeldung.springvalidation.domain; + +import javax.validation.Valid; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +import com.baeldung.springvalidation.interfaces.AdvanceInfo; +import com.baeldung.springvalidation.interfaces.BasicInfo; + +public class UserAccount { + + @NotNull(groups = BasicInfo.class) + @Size(min = 4, max = 15, groups = BasicInfo.class) + private String password; + + @NotBlank(groups = BasicInfo.class) + private String name; + + @Min(value = 18, message = "Age should not be less than 18", groups = AdvanceInfo.class) + private int age; + + @NotBlank(groups = AdvanceInfo.class) + private String phone; + + @Valid + @NotNull(groups = AdvanceInfo.class) + private UserAddress useraddress; + + public UserAddress getUseraddress() { + return useraddress; + } + + public void setUseraddress(UserAddress useraddress) { + this.useraddress = useraddress; + } + + public UserAccount() { + + } + + public UserAccount(String email, String password, String name, int age) { + this.password = password; + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAddress.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAddress.java new file mode 100644 index 0000000000..9aa9656eed --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/domain/UserAddress.java @@ -0,0 +1,17 @@ +package com.baeldung.springvalidation.domain; + +import javax.validation.constraints.NotBlank; +public class UserAddress { + + @NotBlank + private String countryCode; + + public String getCountryCode() { + return countryCode; + } + + public void setCountryCode(String countryCode) { + this.countryCode = countryCode; + } + +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/AdvanceInfo.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/AdvanceInfo.java new file mode 100644 index 0000000000..dd0c7c69d0 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/AdvanceInfo.java @@ -0,0 +1,6 @@ +package com.baeldung.springvalidation.interfaces; + +public interface AdvanceInfo { + // validation group marker interface + +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/BasicInfo.java b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/BasicInfo.java new file mode 100644 index 0000000000..95d2b5e6a2 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/java/com/baeldung/springvalidation/interfaces/BasicInfo.java @@ -0,0 +1,6 @@ +package com.baeldung.springvalidation.interfaces; + +public interface BasicInfo { + // validation group marker interface + +} diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/resources/application.properties b/spring-boot-modules/spring-boot-mvc-3/src/main/resources/application.properties new file mode 100644 index 0000000000..89390eaace --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.mvc.view.prefix=/WEB-INF/views/ +spring.mvc.view.suffix=.html diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/error.html b/spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/error.html new file mode 100644 index 0000000000..341cc73603 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/error.html @@ -0,0 +1,10 @@ + + + +SpringValidation + + + +

Error!!!

+ + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/success.html b/spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/success.html new file mode 100644 index 0000000000..b422152153 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/main/resources/templates/success.html @@ -0,0 +1,10 @@ + + + +SpringValidation + + + +

SUCCESS!!!

+ + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/springvalidation/UserAccountUnitTest.java b/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/springvalidation/UserAccountUnitTest.java new file mode 100644 index 0000000000..507321bf8e --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/springvalidation/UserAccountUnitTest.java @@ -0,0 +1,57 @@ +package com.baeldung.springvalidation; + +import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.model; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.view; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.MediaType; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@AutoConfigureMockMvc +public class UserAccountUnitTest { + + @Autowired + private MockMvc mockMvc; + + @Test + public void givenSaveBasicInfo_whenCorrectInput_thenSuccess() throws Exception { + this.mockMvc.perform(MockMvcRequestBuilders.post("/saveBasicInfo") + .accept(MediaType.TEXT_HTML) + .param("name", "test123") + .param("password", "pass")) + .andExpect(view().name("success")) + .andExpect(status().isOk()) + .andDo(print()); + } + + @Test + public void givenSaveBasicInfoStep1_whenCorrectInput_thenSuccess() throws Exception { + this.mockMvc.perform(MockMvcRequestBuilders.post("/saveBasicInfoStep1") + .accept(MediaType.TEXT_HTML) + .param("name", "test123") + .param("password", "pass")) + .andExpect(view().name("success")) + .andExpect(status().isOk()) + .andDo(print()); + } + + @Test + public void givenSaveBasicInfoStep1_whenIncorrectInput_thenError() throws Exception { + this.mockMvc.perform(MockMvcRequestBuilders.post("/saveBasicInfoStep1") + .accept(MediaType.TEXT_HTML)) + // .param("name", "test123") + // .param("password", "pass")) + .andExpect(model().errorCount(2)) + // .andExpect(view().name("error")) + .andExpect(status().isOk()) + .andDo(print()); + } + +} From 4c39bcd6be91c5da7901d54e0cb4d5227d54da19 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Thu, 17 Sep 2020 19:57:53 +0200 Subject: [PATCH 088/260] BAEL-4610: Add {noop} example security config (#10046) --- ...InMemoryNoOpAuthWebSecurityConfigurer.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 spring-5-security/src/main/java/com/baeldung/inmemory/InMemoryNoOpAuthWebSecurityConfigurer.java diff --git a/spring-5-security/src/main/java/com/baeldung/inmemory/InMemoryNoOpAuthWebSecurityConfigurer.java b/spring-5-security/src/main/java/com/baeldung/inmemory/InMemoryNoOpAuthWebSecurityConfigurer.java new file mode 100644 index 0000000000..4b6494f666 --- /dev/null +++ b/spring-5-security/src/main/java/com/baeldung/inmemory/InMemoryNoOpAuthWebSecurityConfigurer.java @@ -0,0 +1,29 @@ +package com.baeldung.inmemory; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +//@Configuration +public class InMemoryNoOpAuthWebSecurityConfigurer extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.inMemoryAuthentication() + .withUser("spring") + .password("{noop}secret") + .roles("USER"); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .antMatchers("/private/**") + .authenticated() + .antMatchers("/public/**") + .permitAll() + .and() + .httpBasic(); + } +} From f6adcd0cb3260807a55341744fb87e547432900a Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Thu, 17 Sep 2020 23:22:49 +0200 Subject: [PATCH 089/260] BAEL-4437 - System Rules (#10047) Co-authored-by: Jonathan Cook --- testing-modules/pom.xml | 3 +- testing-modules/testing-libraries-2/pom.xml | 43 ++++++++++++++++++ ...ClearSystemPropertiesWithRuleUnitTest.java | 19 ++++++++ .../ProvidesSystemPropertyUnitTest.java | 26 +++++++++++ ...rovidesSystemPropertyWithRuleUnitTest.java | 44 +++++++++++++++++++ .../systemrules/SystemErrPrintlnUnitTest.java | 24 ++++++++++ .../SystemErrPrintlnWithRuleUnitTest.java | 25 +++++++++++ .../systemrules/SystemExitUnitTest.java | 23 ++++++++++ .../SystemExitWithRuleUnitTest.java | 22 ++++++++++ .../systemrules/SystemInUnitTest.java | 27 ++++++++++++ .../systemrules/SystemInWithRuleUnitTest.java | 31 +++++++++++++ .../src/test/resources/test.properties | 2 + 12 files changed, 288 insertions(+), 1 deletion(-) create mode 100644 testing-modules/testing-libraries-2/pom.xml create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ClearSystemPropertiesWithRuleUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyWithRuleUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnWithRuleUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitWithRuleUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInWithRuleUnitTest.java create mode 100644 testing-modules/testing-libraries-2/src/test/resources/test.properties diff --git a/testing-modules/pom.xml b/testing-modules/pom.xml index f1d30cd7a1..0416423239 100644 --- a/testing-modules/pom.xml +++ b/testing-modules/pom.xml @@ -41,7 +41,8 @@ junit-5-advanced xmlunit-2 junit-4 - testing-libraries + testing-libraries + testing-libraries-2 powermock diff --git a/testing-modules/testing-libraries-2/pom.xml b/testing-modules/testing-libraries-2/pom.xml new file mode 100644 index 0000000000..282583c882 --- /dev/null +++ b/testing-modules/testing-libraries-2/pom.xml @@ -0,0 +1,43 @@ + + 4.0.0 + testing-libraries-2 + testing-libraries-2 + + + com.baeldung + testing-modules + 1.0.0-SNAPSHOT + + + + + com.github.stefanbirkner + system-rules + ${system-rules.version} + test + + + com.github.stefanbirkner + system-lambda + ${system-lambda.version} + test + + + + + testing-libraries + + + src/test/resources + true + + + + + + 1.19.0 + 1.0.0 + + diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ClearSystemPropertiesWithRuleUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ClearSystemPropertiesWithRuleUnitTest.java new file mode 100644 index 0000000000..699b40bad9 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ClearSystemPropertiesWithRuleUnitTest.java @@ -0,0 +1,19 @@ +package com.baeldung.systemrules; + +import static org.junit.Assert.assertNull; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.ClearSystemProperties; + +public class ClearSystemPropertiesWithRuleUnitTest { + + @Rule + public final ClearSystemProperties userNameIsClearedRule = new ClearSystemProperties("user.name"); + + @Test + public void givenClearUsernameProperty_whenGetUserName_thenNull() { + assertNull(System.getProperty("user.name")); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyUnitTest.java new file mode 100644 index 0000000000..361a338508 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.systemrules; + +import static com.github.stefanbirkner.systemlambda.SystemLambda.restoreSystemProperties; +import static org.junit.Assert.assertEquals; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +class ProvidesSystemPropertyUnitTest { + + @BeforeAll + static void setUpBeforeClass() throws Exception { + System.setProperty("log_dir", "/tmp/baeldung/logs"); + } + + @Test + void givenSetSystemProperty_whenGetLogDir_thenLogDirIsProvidedSuccessfully() throws Exception { + restoreSystemProperties(() -> { + System.setProperty("log_dir", "test/resources"); + assertEquals("log_dir should be provided", "test/resources", System.getProperty("log_dir")); + }); + + assertEquals("log_dir should be provided", "/tmp/baeldung/logs", System.getProperty("log_dir")); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyWithRuleUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyWithRuleUnitTest.java new file mode 100644 index 0000000000..3a90592a0d --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/ProvidesSystemPropertyWithRuleUnitTest.java @@ -0,0 +1,44 @@ +package com.baeldung.systemrules; + +import static org.junit.Assert.assertEquals; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.ProvideSystemProperty; + +public class ProvidesSystemPropertyWithRuleUnitTest { + + @Rule + public final ProvideSystemProperty providesSystemPropertyRule = new ProvideSystemProperty("log_dir", "test/resources").and("another_property", "another_value"); + + @Rule + public final ProvideSystemProperty providesSystemPropertyFromFileRule = ProvideSystemProperty.fromResource("/test.properties"); + + @BeforeClass + public static void setUpBeforeClass() { + setLogs(); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + System.out.println(System.getProperty("log_dir")); + } + + @Test + public void givenProvideSystemProperty_whenGetLogDir_thenLogDirIsProvidedSuccessfully() { + assertEquals("log_dir should be provided", "test/resources", System.getProperty("log_dir")); + } + + @Test + public void givenProvideSystemPropertyFromFile_whenGetName_thenNameIsProvidedSuccessfully() { + assertEquals("name should be provided", "baeldung", System.getProperty("name")); + assertEquals("version should be provided", "1.0", System.getProperty("version")); + } + + private static void setLogs() { + System.setProperty("log_dir", "/tmp/baeldung/logs"); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnUnitTest.java new file mode 100644 index 0000000000..3345ddae8a --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.systemrules; + +import static com.github.stefanbirkner.systemlambda.SystemLambda.tapSystemErr; + +import org.junit.Assert; +import org.junit.jupiter.api.Test; + +class SystemErrPrintlnUnitTest { + + @Test + void givenTapSystemErr_whenInvokePrintln_thenOutputIsReturnedSuccessfully() throws Exception { + + String text = tapSystemErr(() -> { + printError("An error occurred Baeldung Readers!!"); + }); + + Assert.assertEquals("An error occurred Baeldung Readers!!", text.trim()); + } + + private void printError(String output) { + System.err.println(output); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnWithRuleUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnWithRuleUnitTest.java new file mode 100644 index 0000000000..7994f91063 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemErrPrintlnWithRuleUnitTest.java @@ -0,0 +1,25 @@ +package com.baeldung.systemrules; + +import org.junit.Assert; +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.SystemErrRule; + +public class SystemErrPrintlnWithRuleUnitTest { + + @Rule + public final SystemErrRule systemErrRule = new SystemErrRule().enableLog(); + + @Test + public void givenSystemErrRule_whenInvokePrintln_thenLogSuccess() { + printError("An Error occurred Baeldung Readers!!"); + + Assert.assertEquals("An Error occurred Baeldung Readers!!", systemErrRule.getLog() + .trim()); + } + + private void printError(String output) { + System.err.println(output); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitUnitTest.java new file mode 100644 index 0000000000..1e2548e714 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.systemrules; + +import static org.junit.Assert.assertEquals; + +import static com.github.stefanbirkner.systemlambda.SystemLambda.catchSystemExit; + +import org.junit.jupiter.api.Test; + +class SystemExitUnitTest { + + @Test + void givenCatchSystemExit_whenAppCallsSystemExit_thenStatusIsReturnedSuccessfully() throws Exception { + int statusCode = catchSystemExit(() -> { + exit(); + }); + assertEquals("status code should be 1:", 1, statusCode); + } + + private void exit() { + System.exit(1); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitWithRuleUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitWithRuleUnitTest.java new file mode 100644 index 0000000000..471aab1989 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemExitWithRuleUnitTest.java @@ -0,0 +1,22 @@ +package com.baeldung.systemrules; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.ExpectedSystemExit; + +public class SystemExitWithRuleUnitTest { + + @Rule + public final ExpectedSystemExit exitRule = ExpectedSystemExit.none(); + + @Test + public void givenSystemExitRule_whenAppCallsSystemExit_thenExitRuleWorkssAsExpected() { + exitRule.expectSystemExitWithStatus(1); + exit(); + } + + private void exit() { + System.exit(1); + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInUnitTest.java new file mode 100644 index 0000000000..96badb59d4 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInUnitTest.java @@ -0,0 +1,27 @@ +package com.baeldung.systemrules; + +import static com.github.stefanbirkner.systemlambda.SystemLambda.withTextFromSystemIn; +import static org.junit.Assert.assertEquals; + +import java.util.Scanner; + +import org.junit.jupiter.api.Test; + +class SystemInUnitTest { + + @Test + void givenTwoNames_whenSystemInMock_thenNamesJoinedTogether() throws Exception { + withTextFromSystemIn("Jonathan", "Cook").execute(() -> { + assertEquals("Names should be concatenated", "Jonathan Cook", getFullname()); + }); + } + + private String getFullname() { + try (Scanner scanner = new Scanner(System.in)) { + String firstName = scanner.next(); + String surname = scanner.next(); + return String.join(" ", firstName, surname); + } + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInWithRuleUnitTest.java b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInWithRuleUnitTest.java new file mode 100644 index 0000000000..5730e2f592 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/java/com/baeldung/systemrules/SystemInWithRuleUnitTest.java @@ -0,0 +1,31 @@ +package com.baeldung.systemrules; + +import static org.junit.Assert.assertEquals; + +import java.util.Scanner; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.contrib.java.lang.system.TextFromStandardInputStream; +import static org.junit.contrib.java.lang.system.TextFromStandardInputStream.emptyStandardInputStream; + +public class SystemInWithRuleUnitTest { + + @Rule + public final TextFromStandardInputStream systemInMock = emptyStandardInputStream(); + + @Test + public void givenTwoNames_whenSystemInMock_thenNamesJoinedTogether() { + systemInMock.provideLines("Jonathan", "Cook"); + assertEquals("Names should be concatenated", "Jonathan Cook", getFullname()); + } + + private String getFullname() { + try (Scanner scanner = new Scanner(System.in)) { + String firstName = scanner.next(); + String surname = scanner.next(); + return String.join(" ", firstName, surname); + } + } + +} diff --git a/testing-modules/testing-libraries-2/src/test/resources/test.properties b/testing-modules/testing-libraries-2/src/test/resources/test.properties new file mode 100644 index 0000000000..144847cdb0 --- /dev/null +++ b/testing-modules/testing-libraries-2/src/test/resources/test.properties @@ -0,0 +1,2 @@ +name=baeldung +version=1.0 \ No newline at end of file From 7c482a8e6f53cead43e8c6addd794159d2bb9f0b Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Fri, 18 Sep 2020 22:40:10 +0200 Subject: [PATCH 090/260] JAVA-2975: Clean up the pom.xml in spring-boot-exceptions --- .../spring-boot-exceptions/pom.xml | 72 +------------------ 1 file changed, 1 insertion(+), 71 deletions(-) diff --git a/spring-boot-modules/spring-boot-exceptions/pom.xml b/spring-boot-modules/spring-boot-exceptions/pom.xml index 4b9d787b61..1bfe8e6751 100644 --- a/spring-boot-modules/spring-boot-exceptions/pom.xml +++ b/spring-boot-modules/spring-boot-exceptions/pom.xml @@ -14,15 +14,7 @@ jar spring-boot-exceptions - Demo project for working with Spring Boot exceptions - - - - org.springframework.boot - spring-boot-starter - ${spring-boot.version} - - + Demo project for working with Spring Boot exceptions spring-boot-exceptions @@ -32,68 +24,6 @@ true - - - - - org.apache.maven.plugins - maven-war-plugin - - - - org.apache.maven.plugins - maven-resources-plugin - - - @ - - false - - - - - - - autoconfiguration - - - - org.apache.maven.plugins - maven-surefire-plugin - - - integration-test - - test - - - - **/*LiveTest.java - **/*IntegrationTest.java - **/*IntTest.java - - - **/AutoconfigurationTest.java - - - - - - - json - - - - - - - - - - - com.baeldung.intro.App - 2.2.3.RELEASE - From bca4b6bca5536884a4586589daeea587b61481dd Mon Sep 17 00:00:00 2001 From: mikr Date: Sat, 19 Sep 2020 13:20:07 +0200 Subject: [PATCH 091/260] Java-82 Update pom with reference to JAVA-2824 for failing tests --- pom.xml | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/pom.xml b/pom.xml index 6d5c810784..c460c080d8 100644 --- a/pom.xml +++ b/pom.xml @@ -1374,23 +1374,23 @@ core-java-modules/core-java-9 core-java-modules/core-java-9-improvements - - + + core-java-modules/core-java-9-streams core-java-modules/core-java-10 - - - - + + + + core-java-modules/core-java-collections-set - - - + + + core-java-modules/core-java-jpms - - + + core-java-modules/multimodulemavenproject - + @@ -1419,23 +1419,23 @@ core-java-modules/core-java-9 core-java-modules/core-java-9-improvements - - + + core-java-modules/core-java-9-streams core-java-modules/core-java-10 - - - - + + + + core-java-modules/core-java-collections-set - - - + + + core-java-modules/core-java-jpms - - + + core-java-modules/multimodulemavenproject - + From 23e39f4244414b15defde5bfc620383101187241 Mon Sep 17 00:00:00 2001 From: mikr Date: Sat, 19 Sep 2020 13:51:05 +0200 Subject: [PATCH 092/260] Java-82 Fix test --- apache-libraries/pom.xml | 5 +++++ jackson-modules/jackson-custom-conversions/pom.xml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/apache-libraries/pom.xml b/apache-libraries/pom.xml index 9f800f1e0b..15404676cc 100644 --- a/apache-libraries/pom.xml +++ b/apache-libraries/pom.xml @@ -129,6 +129,11 @@ zookeeper ${zookeeper.version}
+ + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + com.fasterxml.jackson.core jackson-databind diff --git a/jackson-modules/jackson-custom-conversions/pom.xml b/jackson-modules/jackson-custom-conversions/pom.xml index 78894bb403..f58b25781c 100644 --- a/jackson-modules/jackson-custom-conversions/pom.xml +++ b/jackson-modules/jackson-custom-conversions/pom.xml @@ -26,7 +26,7 @@ com.fasterxml.jackson.core jackson-core - 2.10.1 + ${jackson.version} From 8971f2dca29f863c3929aa69bd1f8b3bff5df20e Mon Sep 17 00:00:00 2001 From: Azhwani <13301425+azhwani@users.noreply.github.com> Date: Sat, 19 Sep 2020 14:52:49 +0100 Subject: [PATCH 093/260] BAEL-4327: JSON Parameters with Spring MVC (#10036) * first commit * update commit Co-authored-by: azhwani <> --- .../jsonparams/config/JsonParamsConfig.java | 36 ++++++++++ .../jsonparams/config/JsonParamsInit.java | 29 ++++++++ .../controller/ProductController.java | 57 +++++++++++++++ .../baeldung/jsonparams/model/Product.java | 37 ++++++++++ .../propertyeditor/ProductEditor.java | 34 +++++++++ .../jsonparams/JsonParamsIntegrationTest.java | 71 +++++++++++++++++++ 6 files changed, 264 insertions(+) create mode 100644 spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsConfig.java create mode 100644 spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsInit.java create mode 100644 spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/controller/ProductController.java create mode 100644 spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/model/Product.java create mode 100644 spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/propertyeditor/ProductEditor.java create mode 100644 spring-mvc-basics-4/src/test/java/com/baeldung/jsonparams/JsonParamsIntegrationTest.java diff --git a/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsConfig.java b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsConfig.java new file mode 100644 index 0000000000..f2049554ab --- /dev/null +++ b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsConfig.java @@ -0,0 +1,36 @@ +package com.baeldung.jsonparams.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.ViewResolver; +import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; +import org.springframework.web.servlet.config.annotation.EnableWebMvc; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import org.springframework.web.servlet.view.InternalResourceViewResolver; + +import com.fasterxml.jackson.databind.ObjectMapper; + +@Configuration +@EnableWebMvc +@ComponentScan(basePackages = { "com.baeldung.jsonparams" }) +public class JsonParamsConfig implements WebMvcConfigurer { + @Override + public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { + configurer.enable(); + } + + @Bean + public ViewResolver viewResolver() { + InternalResourceViewResolver bean = new InternalResourceViewResolver(); + bean.setPrefix("/WEB-INF/"); + bean.setSuffix(".jsp"); + return bean; + } + + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper(); + } + +} diff --git a/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsInit.java b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsInit.java new file mode 100644 index 0000000000..6db2a92350 --- /dev/null +++ b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/config/JsonParamsInit.java @@ -0,0 +1,29 @@ +package com.baeldung.jsonparams.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class JsonParamsInit // implements WebApplicationInitializer +{ + + //uncomment to run the product controller example + //@Override + public void onStartup(ServletContext sc) throws ServletException { + AnnotationConfigWebApplicationContext root = new AnnotationConfigWebApplicationContext(); + root.register(JsonParamsConfig.class); + root.setServletContext(sc); + sc.addListener(new ContextLoaderListener(root)); + + DispatcherServlet dv = new DispatcherServlet(root); + + ServletRegistration.Dynamic appServlet = sc.addServlet("jsonparams-mvc", dv); + appServlet.setLoadOnStartup(1); + appServlet.addMapping("/"); + } + +} diff --git a/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/controller/ProductController.java b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/controller/ProductController.java new file mode 100644 index 0000000000..e4e2ce085d --- /dev/null +++ b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/controller/ProductController.java @@ -0,0 +1,57 @@ +package com.baeldung.jsonparams.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.InitBinder; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import com.baeldung.jsonparams.model.Product; +import com.baeldung.jsonparams.propertyeditor.ProductEditor; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +@Controller +@RequestMapping("/products") +public class ProductController { + + private ObjectMapper objectMapper; + + @Autowired + public void setObjectMapper(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + + @InitBinder + public void initBinder(WebDataBinder binder) { + binder.registerCustomEditor(Product.class, new ProductEditor(objectMapper)); + } + + @PostMapping("/create") + @ResponseBody + public Product createProduct(@RequestBody Product product) { + // custom logic + return product; + } + + @GetMapping("/get") + @ResponseBody + public Product getProduct(@RequestParam String product) throws JsonMappingException, JsonProcessingException { + final Product prod = objectMapper.readValue(product, Product.class); + return prod; + } + + @GetMapping("/get2") + @ResponseBody + public Product get2Product(@RequestParam Product product) { + // custom logic + return product; + } + +} diff --git a/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/model/Product.java b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/model/Product.java new file mode 100644 index 0000000000..b0baf0aa57 --- /dev/null +++ b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/model/Product.java @@ -0,0 +1,37 @@ +package com.baeldung.jsonparams.model; + +public class Product { + + private int id; + private String name; + private double price; + + public Product() { + + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String nom) { + this.name = nom; + } + + public double getPrice() { + return price; + } + + public void setPrice(double price) { + this.price = price; + } + +} diff --git a/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/propertyeditor/ProductEditor.java b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/propertyeditor/ProductEditor.java new file mode 100644 index 0000000000..11766118cd --- /dev/null +++ b/spring-mvc-basics-4/src/main/java/com/baeldung/jsonparams/propertyeditor/ProductEditor.java @@ -0,0 +1,34 @@ +package com.baeldung.jsonparams.propertyeditor; + +import java.beans.PropertyEditorSupport; + +import org.springframework.util.StringUtils; + +import com.baeldung.jsonparams.model.Product; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class ProductEditor extends PropertyEditorSupport { + + private ObjectMapper objectMapper; + + public ProductEditor(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + + @Override + public void setAsText(String text) throws IllegalArgumentException { + if (StringUtils.isEmpty(text)) { + setValue(null); + } else { + Product prod = new Product(); + try { + prod = objectMapper.readValue(text, Product.class); + } catch (JsonProcessingException e) { + throw new IllegalArgumentException(e); + } + setValue(prod); + } + } + +} diff --git a/spring-mvc-basics-4/src/test/java/com/baeldung/jsonparams/JsonParamsIntegrationTest.java b/spring-mvc-basics-4/src/test/java/com/baeldung/jsonparams/JsonParamsIntegrationTest.java new file mode 100644 index 0000000000..bceadc4896 --- /dev/null +++ b/spring-mvc-basics-4/src/test/java/com/baeldung/jsonparams/JsonParamsIntegrationTest.java @@ -0,0 +1,71 @@ +package com.baeldung.jsonparams; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.web.AnnotationConfigWebContextLoader; +import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.setup.MockMvcBuilders; +import org.springframework.web.context.WebApplicationContext; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*; + +import com.baeldung.jsonparams.config.JsonParamsConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@WebAppConfiguration +@ContextConfiguration(classes = { JsonParamsConfig.class }, loader = AnnotationConfigWebContextLoader.class) +public class JsonParamsIntegrationTest { + + private MockMvc mockMvc; + + @Autowired + private WebApplicationContext wac; + + @Before + public void setUp() { + this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac) + .build(); + } + + @Test + public void whenJsonIsPassedWithPost_thenResponseOK() throws Exception { + + this.mockMvc.perform(post("/products/create").accept(MediaType.APPLICATION_JSON) + .contentType(MediaType.APPLICATION_JSON) + .content("{\"id\": 1,\"name\": \"Asus Zenbook\",\"price\": 800}")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.id").value("1")) + .andExpect(jsonPath("$.name").value("Asus Zenbook")); + + } + + @Test + public void whenJsonIsPassedWithGet_thenResponseOK() throws Exception { + + this.mockMvc.perform(get("/products/get").contentType(MediaType.APPLICATION_JSON) + .queryParam("product", "{\"id\": 2,\"name\": \"HP EliteBook\",\"price\": 700}")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.id").value("2")) + .andExpect(jsonPath("$.name").value("HP EliteBook")); + + } + + @Test + public void whenJsonIsPassedWithGet2_thenResponseOK() throws Exception { + + this.mockMvc.perform(get("/products/get2").contentType(MediaType.APPLICATION_JSON) + .queryParam("product", "{\"id\": 3,\"name\": \"Dell G5 15\",\"price\": 1200}")) + .andExpect(status().isOk()) + .andExpect(jsonPath("$.id").value("3")) + .andExpect(jsonPath("$.name").value("Dell G5 15")); + + } + +} From 1cd9875381b282aff23c40473f03754e20302d1f Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Sat, 19 Sep 2020 10:40:37 -0500 Subject: [PATCH 094/260] BAEL-3569: Update README (#10053) * BAEL-3336 BAEL-3058 add links * BAEL-3319: add link * BAEL-3284: add link * BAEL-3198: add link to article * BAEL-3479: add link to article * BAEL-3485: add article link * SCALA-38: move to new package and add link back to article * SCALA-38: add imports back into unit test * BAEL-3908: add link back to article * BAEL-2893 BAEL-3927 add link back to article * BAEL-3569: update README --- spring-5-security-oauth/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-5-security-oauth/README.md b/spring-5-security-oauth/README.md index 43cab33598..35e64da639 100644 --- a/spring-5-security-oauth/README.md +++ b/spring-5-security-oauth/README.md @@ -7,3 +7,4 @@ This module contains articles about Spring 5 OAuth Security - [Spring Security 5 – OAuth2 Login](https://www.baeldung.com/spring-security-5-oauth2-login) - [Extracting Principal and Authorities using Spring Security OAuth](https://www.baeldung.com/spring-security-oauth-principal-authorities-extractor) - [Customizing Authorization and Token Requests with Spring Security 5.1 Client](https://www.baeldung.com/spring-security-custom-oauth-requests) +- [Social Login with Spring Security in a Jersey Application](https://www.baeldung.com/spring-security-social-login-jersey) From f1348339529b20f6d61b3cc9442db89faaafcee7 Mon Sep 17 00:00:00 2001 From: Umang Budhwar Date: Sat, 19 Sep 2020 21:49:13 +0530 Subject: [PATCH 095/260] Refactored code to use generic methods and use streams. (#10052) --- .../check/staticmethods/StaticUtility.java | 19 ++++++++++++ .../staticmethods/StaticUtilityUnitTest.java | 30 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/staticmethods/StaticUtility.java create mode 100644 core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/staticmethods/StaticUtilityUnitTest.java diff --git a/core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/staticmethods/StaticUtility.java b/core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/staticmethods/StaticUtility.java new file mode 100644 index 0000000000..5afb9b79c4 --- /dev/null +++ b/core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/staticmethods/StaticUtility.java @@ -0,0 +1,19 @@ +package com.baeldung.reflection.check.staticmethods; + +import java.time.LocalDate; +import java.time.LocalTime; + +public class StaticUtility { + + public static String getAuthorName() { + return "Umang Budhwar"; + } + + public static LocalDate getLocalDate() { + return LocalDate.now(); + } + + public static LocalTime getLocalTime() { + return LocalTime.now(); + } +} diff --git a/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/staticmethods/StaticUtilityUnitTest.java b/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/staticmethods/StaticUtilityUnitTest.java new file mode 100644 index 0000000000..a4540407d5 --- /dev/null +++ b/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/staticmethods/StaticUtilityUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.reflection.check.staticmethods; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class StaticUtilityUnitTest { + + @Test + void whenCheckStaticMethod_ThenSuccess() throws Exception { + Method method = StaticUtility.class.getMethod("getAuthorName", null); + Assertions.assertTrue(Modifier.isStatic(method.getModifiers())); + } + + @Test + void whenCheckAllStaticMethods_thenSuccess() { + List methodList = Arrays.asList(StaticUtility.class.getMethods()) + .stream() + .filter(method -> Modifier.isStatic(method.getModifiers())) + .collect(Collectors.toList()); + Assertions.assertEquals(3, methodList.size()); + } + +} From 3626b5c85857e735b1aa2dade5fd687eaf0ec3ef Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sun, 20 Sep 2020 01:20:58 +0530 Subject: [PATCH 096/260] BAEL-4404 | Added test class to verify the beahvior --- .../CharEncodingCheckControllerTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java diff --git a/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java b/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java new file mode 100644 index 0000000000..25f257eced --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java @@ -0,0 +1,34 @@ +package com.baeldung.charencoding.controller; + +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.junit.jupiter.api.Test; +import org.springframework.web.filter.CharacterEncodingFilter; + +class CharEncodingCheckControllerTest { + + @Test + void whenCharEncodingFilter_thenVerifyEncoding() throws ServletException, IOException { + HttpServletRequest request = mock(HttpServletRequest.class); + HttpServletResponse response = mock(HttpServletResponse.class); + FilterChain chain = mock(FilterChain.class); + + CharacterEncodingFilter filter = new CharacterEncodingFilter(); + filter.setEncoding("UTF-8"); + filter.setForceEncoding(true); + + filter.doFilter(request, response, chain); + + verify(request).setCharacterEncoding("UTF-8"); + verify(response).setCharacterEncoding("UTF-8"); + } + +} From cb8bae53a250fec6a431b75c73d49df41335d74b Mon Sep 17 00:00:00 2001 From: Ricardo Caldas Date: Sat, 19 Sep 2020 19:58:33 -0300 Subject: [PATCH 097/260] Add a new section in Lombok builder article - Minor Fixes --- .../lombok/builder/RequiredFieldAnnotation.java | 3 ++- ...est.java => RequiredFieldAnnotationUnitTest.java} | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) rename lombok/src/test/java/com/baeldung/lombok/builder/{RequiredFieldAnnotationTest.java => RequiredFieldAnnotationUnitTest.java} (58%) diff --git a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java index 8781101613..e2d171b1b0 100644 --- a/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java +++ b/lombok/src/main/java/com/baeldung/lombok/builder/RequiredFieldAnnotation.java @@ -8,7 +8,8 @@ import lombok.NonNull; @Getter public class RequiredFieldAnnotation { - @NonNull String name; + @NonNull + String name; String description; public static RequiredFieldAnnotationBuilder builder(String name) { diff --git a/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java b/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationUnitTest.java similarity index 58% rename from lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java rename to lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationUnitTest.java index 9d347327d4..ee5c3b19aa 100644 --- a/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationTest.java +++ b/lombok/src/test/java/com/baeldung/lombok/builder/RequiredFieldAnnotationUnitTest.java @@ -1,21 +1,21 @@ package com.baeldung.lombok.builder; +import org.junit.Before; import org.junit.Test; -import org.junit.jupiter.api.BeforeEach; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; -public class RequiredFieldAnnotationTest { +public class RequiredFieldAnnotationUnitTest { RequiredFieldAnnotation requiredFieldTest; - @BeforeEach - void setUp() { + @Before + public void setUp() { requiredFieldTest = RequiredFieldAnnotation.builder("NameField").description("Field Description").build(); } @Test public void givenBuilderWithRequiredParameter_thenParameterIsPresent() { - assertEquals(requiredFieldTest.getName(), "NameField"); + assertEquals("NameField", requiredFieldTest.getName()); } } \ No newline at end of file From c4d98a65967f8ada147e327116a177e2c86ac945 Mon Sep 17 00:00:00 2001 From: akeshri Date: Sun, 20 Sep 2020 15:25:29 +0530 Subject: [PATCH 098/260] changes --- .../collections/mapfirstpair/MapFirstPairUnitTest.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/mapfirstpair/MapFirstPairUnitTest.java b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/mapfirstpair/MapFirstPairUnitTest.java index b25e0932d8..8272e7323a 100644 --- a/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/mapfirstpair/MapFirstPairUnitTest.java +++ b/core-java-modules/core-java-collections-3/src/test/java/com/baeldung/collections/mapfirstpair/MapFirstPairUnitTest.java @@ -15,21 +15,24 @@ import org.junit.Test; public class MapFirstPairUnitTest { private Map.Entry getFirstPairUsingIterator(Map map) { - if (map == null || map.size() == 0) + if (map == null || map.size() == 0) { return null; + } Iterator> iterator = map.entrySet() .iterator(); - if (iterator.hasNext()) + if (iterator.hasNext()) { return iterator.next(); + } return null; } private Map.Entry getFirstPairUsingStream(Map map) { - if (map == null || map.size() == 0) + if (map == null || map.size() == 0) { return null; + } Set> entrySet = map.entrySet(); From 599a6c45fc064011d3ea3ff1b12118a8cad1a81a Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 20 Sep 2020 15:58:04 +0530 Subject: [PATCH 099/260] fixing build issue --- maven-modules/maven-plugins/custom-rule/pom.xml | 13 +++++++++++++ maven-modules/maven-plugins/pom.xml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/maven-modules/maven-plugins/custom-rule/pom.xml b/maven-modules/maven-plugins/custom-rule/pom.xml index 0fb551e71b..075a5c7943 100644 --- a/maven-modules/maven-plugins/custom-rule/pom.xml +++ b/maven-modules/maven-plugins/custom-rule/pom.xml @@ -51,4 +51,17 @@ 1.0-alpha-9 + + + + maven-verifier-plugin + ${maven.verifier.version} + + ../input-resources/verifications.xml + false + + + + + diff --git a/maven-modules/maven-plugins/pom.xml b/maven-modules/maven-plugins/pom.xml index 4877f00a92..9f28871ec0 100644 --- a/maven-modules/maven-plugins/pom.xml +++ b/maven-modules/maven-plugins/pom.xml @@ -15,7 +15,7 @@ - + custom-rule maven-enforcer From 4503d5c3f7eba623a416be58c523ed5f6bd972fa Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Sun, 20 Sep 2020 19:57:43 +0300 Subject: [PATCH 100/260] BAEL-4415 get a list of trusted certificates in Java --- .../certificates/CertificatesUnitTest.java | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java diff --git a/core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java b/core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java new file mode 100644 index 0000000000..a631df086b --- /dev/null +++ b/core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java @@ -0,0 +1,94 @@ +package certificates; + +import org.junit.jupiter.api.Test; + +import javax.net.ssl.TrustManager; +import javax.net.ssl.TrustManagerFactory; +import javax.net.ssl.X509TrustManager; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.Certificate; +import java.security.cert.CertificateException; +import java.security.cert.PKIXParameters; +import java.security.cert.TrustAnchor; +import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.Enumeration; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +public class CertificatesUnitTest { + + private static final String GODADDY_CA_ALIAS = "godaddyrootg2ca [jdk]"; + + @Test + public void whenLoadingCacertsKeyStore_thenCertificatesArePresent() throws Exception { + KeyStore keyStore = loadKeyStore(); + PKIXParameters params = new PKIXParameters(keyStore); + + Set trustAnchors = params.getTrustAnchors(); + List certificates = trustAnchors.stream() + .map(TrustAnchor::getTrustedCert) + .collect(Collectors.toList()); + + assertFalse(certificates.isEmpty()); + } + + @Test + public void whenLoadingDefaultKeyStore_thenCertificatesArePresent() throws Exception { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init((KeyStore)null); + + List trustManagers = Arrays.asList(trustManagerFactory.getTrustManagers()); + List certificates = trustManagers.stream() + .filter(X509TrustManager.class::isInstance) + .map(X509TrustManager.class::cast) + .map(trustManager -> Arrays.asList(trustManager.getAcceptedIssuers())) + .flatMap(Collection::stream) + .collect(Collectors.toList()); + + assertFalse(certificates.isEmpty()); + } + + @Test + public void whenLoadingKeyStore_thenGoDaddyCALabelIsPresent() throws Exception { + KeyStore keyStore = loadKeyStore(); + + Enumeration aliasEnumeration = keyStore.aliases(); + List aliases = Collections.list(aliasEnumeration); + + assertTrue(aliases.contains(GODADDY_CA_ALIAS)); + } + + @Test + public void whenLoadingKeyStore_thenGoDaddyCertificateIsPresent() throws Exception { + KeyStore keyStore = loadKeyStore(); + + Certificate goDaddyCertificate = keyStore.getCertificate(GODADDY_CA_ALIAS); + + assertNotNull(goDaddyCertificate); + } + + private KeyStore loadKeyStore() throws CertificateException, NoSuchAlgorithmException, IOException, KeyStoreException { + String relativeCacertsPath = "/lib/security/cacerts".replace("/", File.separator); + String filename = System.getProperty("java.home") + relativeCacertsPath; + FileInputStream is = new FileInputStream(filename); + + KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); + String password = "changeit"; + keystore.load(is, password.toCharArray()); + + return keystore; + } +} From 5d29ae5bbd34949076a332fae458199c995f8530 Mon Sep 17 00:00:00 2001 From: azhwani <> Date: Mon, 21 Sep 2020 11:16:03 +0100 Subject: [PATCH 101/260] first commit --- .../lastmodifiedfile/LastModifiedFileApp.java | 61 ++++++++++++++++ .../LastModifiedFileAppUnitTest.java | 72 +++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 core-java-modules/core-java-io-3/src/main/java/com/baeldung/lastmodifiedfile/LastModifiedFileApp.java create mode 100644 core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java diff --git a/core-java-modules/core-java-io-3/src/main/java/com/baeldung/lastmodifiedfile/LastModifiedFileApp.java b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/lastmodifiedfile/LastModifiedFileApp.java new file mode 100644 index 0000000000..d2aace184f --- /dev/null +++ b/core-java-modules/core-java-io-3/src/main/java/com/baeldung/lastmodifiedfile/LastModifiedFileApp.java @@ -0,0 +1,61 @@ +package com.baeldung.lastmodifiedfile; + +import java.io.File; +import java.io.FileFilter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Optional; + +import org.apache.commons.io.comparator.LastModifiedFileComparator; +import org.apache.commons.io.filefilter.FileFilterUtils; + +public class LastModifiedFileApp { + + public static File findUsingIOApi(String sdir) { + File dir = new File(sdir); + if (dir.isDirectory()) { + Optional opFile = Arrays.stream(dir.listFiles(File::isFile)) + .max((f1, f2) -> Long.compare(f1.lastModified(), f2.lastModified())); + + if (opFile.isPresent()) { + return opFile.get(); + } + } + + return null; + } + + public static Path findUsingNIOApi(String sdir) throws IOException { + Path dir = Paths.get(sdir); + if (Files.isDirectory(dir)) { + Optional opPath = Files.list(dir) + .filter(p -> !Files.isDirectory(p)) + .sorted((p1, p2) -> Long.valueOf(p2.toFile().lastModified()) + .compareTo(p1.toFile().lastModified())) + .findFirst(); + + if (opPath.isPresent()) { + return opPath.get(); + } + } + + return null; + } + + public static File findUsingCommonsIO(String sdir) { + File dir = new File(sdir); + if (dir.isDirectory()) { + File[] dirFiles = dir.listFiles((FileFilter) FileFilterUtils.fileFileFilter()); + if (dirFiles != null && dirFiles.length > 0) { + Arrays.sort(dirFiles, LastModifiedFileComparator.LASTMODIFIED_REVERSE); + return dirFiles[0]; + } + } + + return null; + } + +} diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java new file mode 100644 index 0000000000..4e1f7719a9 --- /dev/null +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java @@ -0,0 +1,72 @@ +package com.baeldung.lastmodifiedfile; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +public class LastModifiedFileAppUnitTest { + + private final static String SOURCEDIRECTORY = "src/test/resources/lastmodfiles"; + + @BeforeAll + public static void setUpFiles() throws IOException, InterruptedException { + File srcDir = new File(SOURCEDIRECTORY); + if (!srcDir.exists()) { + srcDir.mkdir(); + } + + FileUtils.cleanDirectory(srcDir); + + File file01 = new File(SOURCEDIRECTORY + "/file01.txt"); + file01.createNewFile(); + + Thread.sleep(2000); + + File file02 = new File(SOURCEDIRECTORY + "/file02.txt"); + file02.createNewFile(); + + Thread.sleep(2000); + + File file03 = new File(SOURCEDIRECTORY + "/file03.txt"); + file03.createNewFile(); + + Thread.sleep(2000); + + Files.write(Paths.get(SOURCEDIRECTORY + "/file02.txt"), "Hello File02".getBytes()); + + } + + @Test + public void givenDirectory_whenUsingIoApi_thenFindLastModfile() throws IOException { + File lastModFile = LastModifiedFileApp.findUsingIOApi(SOURCEDIRECTORY); + + assertThat(lastModFile).isNotNull(); + assertThat(lastModFile.getName()).isEqualTo("file02.txt"); + } + + @Test + public void givenDirectory_whenUsingNioApi_thenFindLastModfile() throws IOException { + Path lastModPath = LastModifiedFileApp.findUsingNIOApi(SOURCEDIRECTORY); + + assertThat(lastModPath).isNotNull(); + assertThat(lastModPath.toFile() + .getName()).isEqualTo("file02.txt"); + } + + @Test + public void givenDirectory_whenUsingApacheCommons_thenFindLastModfile() throws IOException { + File lastModFile = LastModifiedFileApp.findUsingCommonsIO(SOURCEDIRECTORY); + + assertThat(lastModFile).isNotNull(); + assertThat(lastModFile.getName()).isEqualTo("file02.txt"); + } + +} \ No newline at end of file From fd9e75c6e22bfb0666d3e1bf7dfdaf380f151d74 Mon Sep 17 00:00:00 2001 From: Reza Ebrahimpour Date: Mon, 21 Sep 2020 21:48:18 +0330 Subject: [PATCH 102/260] BAEL-4488 Fix indents --- .../com/baeldung/cipher/AvailableCiphersUnitTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java index 48aaa5fb67..fa38aca272 100644 --- a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java +++ b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/cipher/AvailableCiphersUnitTest.java @@ -25,10 +25,10 @@ public class AvailableCiphersUnitTest { @Test public void whenGetServicesWithFilter_thenGetAllCompatibleCipherAlgorithms() { List algorithms = Arrays.stream(Security.getProviders()) - .flatMap(provider -> provider.getServices().stream()) - .filter(service -> "Cipher".equals(service.getType())) - .map(Provider.Service::getAlgorithm) - .collect(Collectors.toList()); + .flatMap(provider -> provider.getServices().stream()) + .filter(service -> "Cipher".equals(service.getType())) + .map(Provider.Service::getAlgorithm) + .collect(Collectors.toList()); algorithms.forEach(logger::info); } From dda9d0fb67378372101a026ba2d0657044337d3a Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Mon, 21 Sep 2020 20:53:16 +0200 Subject: [PATCH 103/260] JAVA-2901: Fix failing int tests in spring-mvc-basics-4 --- .../src/main/java/com/baeldung/controller/config/WebConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-basics-4/src/main/java/com/baeldung/controller/config/WebConfig.java b/spring-mvc-basics-4/src/main/java/com/baeldung/controller/config/WebConfig.java index 6e79ac0aad..364f042ac7 100644 --- a/spring-mvc-basics-4/src/main/java/com/baeldung/controller/config/WebConfig.java +++ b/spring-mvc-basics-4/src/main/java/com/baeldung/controller/config/WebConfig.java @@ -11,7 +11,7 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration @EnableWebMvc -@ComponentScan(basePackages = { "com.baeldung.controller.controller", "com.baeldung.controller", "com.baeldung.controller.config" }) +@ComponentScan(basePackages = { "com.baeldung.controller", "com.baeldung.optionalpathvars" }) public class WebConfig implements WebMvcConfigurer { @Override public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) { From d51a8319c6f4946346666367ad6d5177114a7efb Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Mon, 21 Sep 2020 21:15:03 +0200 Subject: [PATCH 104/260] JAVA-2977: Get rid of the unused spring*boot* properties --- testing-modules/spring-testing-2/pom.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/testing-modules/spring-testing-2/pom.xml b/testing-modules/spring-testing-2/pom.xml index c7ca2804fb..807b84c676 100644 --- a/testing-modules/spring-testing-2/pom.xml +++ b/testing-modules/spring-testing-2/pom.xml @@ -27,6 +27,12 @@ spring-boot-starter-data-jpa + + com.h2database + h2 + ${h2.version} + + org.postgresql postgresql @@ -50,8 +56,6 @@ - 2.1.9.RELEASE - 2.1.9.RELEASE 1.12.2 \ No newline at end of file From 025791611ca8b731415629d18f2b21d539472a9f Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 21 Sep 2020 20:31:14 +0100 Subject: [PATCH 105/260] Added feedback from pull request. --- json/README.md | 1 - .../JsonOptimizationUnitTest.java | 64 +++++++++---------- 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/json/README.md b/json/README.md index cfee611f4a..0e50dcfddb 100644 --- a/json/README.md +++ b/json/README.md @@ -13,4 +13,3 @@ This module contains articles about JSON. - [Get a Value by Key in a JSONArray](https://www.baeldung.com/java-jsonarray-get-value-by-key) - [Iterating Over an Instance of org.json.JSONObject](https://www.baeldung.com/jsonobject-iteration) - [Escape JSON String in Java](https://www.baeldung.com/java-json-escaping) -- [Reducing JSON Data Size](https://www.baeldung.com/reducing-json-data-size) diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java index 5734518fad..7a56a68fe2 100644 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -22,11 +22,11 @@ import com.fasterxml.jackson.databind.ObjectWriter; import com.fasterxml.jackson.databind.module.SimpleModule; class JsonOptimizationUnitTest { - private static final String TEST_LABEL_DEFAULT_JSON = "Default JSON"; + private static final String TEST_LABEL_JACKSON_DEFAULT_OPTIONS = "Default JSON"; private static final String TEST_LABEL_DEFAULT_JSON_NO_NULL = "Default JSON without null"; - private static final String TEST_LABEL_SHORT_NAMES = "Shorter field names"; - private static final String TEST_LABEL_SHORT_NAMES_NO_NULL = "Shorter field names without null"; - private static final String TEST_LABEL_CUSTOM_SERIALIZER = "Custom serializer"; + private static final String TEST_LABEL_SHORTER_FIELD_NAMES = "Shorter field names"; + private static final String TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL = "Shorter field names without null"; + private static final String TEST_LABEL_SERIALIZING_TO_ARRAY = "Custom serializer"; private static final String TEST_LABEL_SLIM_CUSTOM_SERIALIZER = "Slim custom serializer"; private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter field names"; @@ -53,82 +53,80 @@ class JsonOptimizationUnitTest { } @Test - void testSetUp() { + void whenSetUp_ThenOneThousandCustomers() { assertEquals(1000, customers.length, "There should be a 1000 customers"); } @Test - void testDefaultJson() throws IOException { - printBanner(TEST_LABEL_DEFAULT_JSON); - byte[] plainJson = createPlainJson(TEST_LABEL_DEFAULT_JSON, customers); - compressJson(TEST_LABEL_DEFAULT_JSON, plainJson); + void whenJacksonDefaultOptions_thenValid() throws IOException { + printBanner(TEST_LABEL_JACKSON_DEFAULT_OPTIONS); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_JACKSON_DEFAULT_OPTIONS, customers); + compressJson(TEST_LABEL_JACKSON_DEFAULT_OPTIONS, plainJson); } @Test - void testDefaultNoNull() throws IOException { + void whenExcludingNull_thenValid() throws IOException { printBanner(TEST_LABEL_DEFAULT_JSON_NO_NULL); mapper.setSerializationInclusion(Include.NON_NULL); - byte[] plainJson = createPlainJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, customers); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_DEFAULT_JSON_NO_NULL, customers); compressJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, plainJson); } @Test - void testShortNames() throws IOException { - printBanner(TEST_LABEL_SHORT_NAMES); + void whenShorterFieldNames_thenValid() throws IOException { + printBanner(TEST_LABEL_SHORTER_FIELD_NAMES); CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); - byte[] shorterJson = createPlainJson(TEST_LABEL_SHORT_NAMES, shorterOnes); - compressJson(TEST_LABEL_SHORT_NAMES, shorterJson); + byte[] shorterJson = createJsonAndVerify(TEST_LABEL_SHORTER_FIELD_NAMES, shorterOnes); + compressJson(TEST_LABEL_SHORTER_FIELD_NAMES, shorterJson); } @Test - void testShortNamesNoNull() throws IOException { - printBanner(TEST_LABEL_SHORT_NAMES_NO_NULL); + void whenShorterFieldNamesAndExcludingNull_thenValid() throws IOException { + printBanner(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL); CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); mapper.setSerializationInclusion(Include.NON_NULL); - byte[] shorterJson = createPlainJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterOnes); - compressJson(TEST_LABEL_SHORT_NAMES_NO_NULL, shorterJson); + byte[] shorterJson = createJsonAndVerify(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL, shorterOnes); + compressJson(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL, shorterJson); } @Test - void testSlim() throws IOException { + void whenSlimCustomer_thenValid() throws IOException { printBanner(TEST_LABEL_SLIM_CUSTOMER); CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); - byte[] slimJson = createPlainJson(TEST_LABEL_SLIM_CUSTOMER, slimOnes); + byte[] slimJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOMER, slimOnes); compressJson(TEST_LABEL_SLIM_CUSTOMER, slimJson); } @Test - void testSlimShortNames() throws IOException { + void whenSlimCustomerAndShorterFieldNames_thenValid() throws IOException { printBanner(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES); CustomerSlimShortNames[] slimOnes = CustomerSlimShortNames.fromCustomers(customers); - byte[] slimJson = createPlainJson(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimOnes); + byte[] slimJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimOnes); compressJson(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimJson); } @Test - void testCustomSerializer() throws IOException { - printBanner(TEST_LABEL_CUSTOM_SERIALIZER); - + void whenSerializingToArray_thenValid() throws IOException { + printBanner(TEST_LABEL_SERIALIZING_TO_ARRAY); SimpleModule serializer = new SimpleModule("CustomDeSerializer", new Version(1, 0, 0, null, null, null)); serializer.addSerializer(Customer.class, new CustomerSerializer()); serializer.addDeserializer(Customer.class, new CustomerDeserializer()); mapper.registerModule(serializer); - byte[] plainJson = createPlainJson(TEST_LABEL_CUSTOM_SERIALIZER, customers); - compressJson(TEST_LABEL_CUSTOM_SERIALIZER, plainJson); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_SERIALIZING_TO_ARRAY, customers); + compressJson(TEST_LABEL_SERIALIZING_TO_ARRAY, plainJson); } @Test - void testSlimCustomSerializer() throws IOException { + void whenSerializingToArrayAndSlimCustomer_thenValid() throws IOException { printBanner(TEST_LABEL_SLIM_CUSTOM_SERIALIZER); - SimpleModule serializer = new SimpleModule("SlimCustomDeSerializer", new Version(1, 0, 0, null, null, null)); serializer.addSerializer(CustomerSlim.class, new CustomerSlimSerializer()); serializer.addDeserializer(CustomerSlim.class, new CustomerSlimDeserializer()); mapper.registerModule(serializer); CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); - byte[] plainJson = createPlainJson(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, slimOnes); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, slimOnes); compressJson(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, plainJson); } @@ -153,7 +151,7 @@ class JsonOptimizationUnitTest { assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); } - private byte[] createPlainJson(String label, Object[] customers) throws IOException { + private byte[] createJsonAndVerify(String label, Object[] customers) throws IOException { System.out.println(label + " sample: "); ObjectWriter prettyWritter = mapper.writerWithDefaultPrettyPrinter(); System.out.println(prettyWritter.writeValueAsString(customers[0])); @@ -174,7 +172,7 @@ class JsonOptimizationUnitTest { System.out.println(label + " file: " + tempFile.toString()); Object[] restoredOnes = mapper.readValue(feedback, customers.getClass()); - assertArrayEquals(TEST_LABEL_DEFAULT_JSON + ": restoring from JSON should work", customers, restoredOnes); + assertArrayEquals(TEST_LABEL_JACKSON_DEFAULT_OPTIONS + ": restoring from JSON should work", customers, restoredOnes); return feedback; } From 65833e0a6b058151c6d6e98159a0f8e9974b03e3 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 21 Sep 2020 20:38:46 +0100 Subject: [PATCH 106/260] Moved code from "json" module. --- json-2/pom.xml | 37 + .../baeldung/jsonoptimization/Customer.java | 123 ++ .../CustomerDeserializer.java | 49 + .../jsonoptimization/CustomerSerializer.java | 34 + .../jsonoptimization/CustomerShortNames.java | 155 +++ .../jsonoptimization/CustomerSlim.java | 73 ++ .../CustomerSlimDeserializer.java | 37 + .../CustomerSlimSerializer.java | 28 + .../CustomerSlimShortNames.java | 81 ++ .../JsonOptimizationUnitTest.java | 180 +++ .../json_optimization_mock_data.json | 1000 +++++++++++++++++ 11 files changed, 1797 insertions(+) create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java create mode 100644 json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java create mode 100644 json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java create mode 100644 json-2/src/test/resources/json_optimization_mock_data.json diff --git a/json-2/pom.xml b/json-2/pom.xml index f0215a375f..c5f11754f4 100644 --- a/json-2/pom.xml +++ b/json-2/pom.xml @@ -116,4 +116,41 @@ 1.9.2 3.9 + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + org.apache.maven.plugins + + + maven-pmd-plugin + + + [3.13.0,) + + + check + + + + + + + + + + + + + diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java b/json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java new file mode 100644 index 0000000000..85451731e9 --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/Customer.java @@ -0,0 +1,123 @@ +package com.baeldung.jsonoptimization; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.Objects; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class Customer { + + private long id; + private String firstName; + private String lastName; + private String street; + private String postalCode; + private String city; + private String state; + private String phoneNumber; + private String email; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + 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 String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public int hashCode() { + return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof Customer)) { + return false; + } + Customer other = (Customer) obj; + return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) + && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); + } + + @Override + public String toString() { + return "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + "]"; + } + + public static Customer[] fromMockFile() throws IOException { + ObjectMapper objectMapper = new ObjectMapper(); + InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); + Customer[] feedback = objectMapper.readValue(jsonFile, Customer[].class); + return feedback; + } +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java new file mode 100644 index 0000000000..16b66311ad --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java @@ -0,0 +1,49 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class CustomerDeserializer extends StdDeserializer { + private static final long serialVersionUID = 1L; + + public CustomerDeserializer() { + this(null); + } + + public CustomerDeserializer(Class t) { + super(t); + } + + @Override + public Customer deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { + Customer feedback = new Customer(); + ObjectCodec codec = parser.getCodec(); + JsonNode node = codec.readTree(parser); + + feedback.setId(node.get(0) + .asLong()); + feedback.setFirstName(node.get(1) + .asText()); + feedback.setLastName(node.get(2) + .asText()); + feedback.setStreet(node.get(3) + .asText()); + feedback.setPostalCode(node.get(4) + .asText()); + feedback.setCity(node.get(5) + .asText()); + feedback.setState(node.get(6) + .asText()); + JsonNode phoneNumber = node.get(7); + feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); + JsonNode email = node.get(8); + feedback.setEmail(email.isNull() ? null : email.asText()); + + return feedback; + } +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java new file mode 100644 index 0000000000..0f631ee85b --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java @@ -0,0 +1,34 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class CustomerSerializer extends StdSerializer { + private static final long serialVersionUID = 1L; + + public CustomerSerializer() { + this(null); + } + + public CustomerSerializer(Class t) { + super(t); + } + + @Override + public void serialize(Customer customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { + jsonGenerator.writeStartArray(); + jsonGenerator.writeNumber(customer.getId()); + jsonGenerator.writeString(customer.getFirstName()); + jsonGenerator.writeString(customer.getLastName()); + jsonGenerator.writeString(customer.getStreet()); + jsonGenerator.writeString(customer.getPostalCode()); + jsonGenerator.writeString(customer.getCity()); + jsonGenerator.writeString(customer.getState()); + jsonGenerator.writeString(customer.getPhoneNumber()); + jsonGenerator.writeString(customer.getEmail()); + jsonGenerator.writeEndArray(); + } +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java new file mode 100644 index 0000000000..b94fbb1033 --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java @@ -0,0 +1,155 @@ +package com.baeldung.jsonoptimization; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CustomerShortNames { + + @JsonProperty("i") + private long id; + + @JsonProperty("f") + private String firstName; + + @JsonProperty("l") + private String lastName; + + @JsonProperty("s") + private String street; + + @JsonProperty("p") + private String postalCode; + + @JsonProperty("c") + private String city; + + @JsonProperty("a") + private String state; + + @JsonProperty("o") + private String phoneNumber; + + @JsonProperty("e") + private String email; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + 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 String getStreet() { + return street; + } + + public void setStreet(String street) { + this.street = street; + } + + public String getPostalCode() { + return postalCode; + } + + public void setPostalCode(String postalCode) { + this.postalCode = postalCode; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getPhoneNumber() { + return phoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + this.phoneNumber = phoneNumber; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + @Override + public int hashCode() { + return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CustomerShortNames)) { + return false; + } + CustomerShortNames other = (CustomerShortNames) obj; + return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) + && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); + } + + @Override + public String toString() { + return "CustomerWithShorterAttributes [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + + "]"; + } + + public static CustomerShortNames[] fromCustomers(Customer[] customers) { + CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; + + for (int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerShortNames newOne = new CustomerShortNames(); + + newOne.setId(aCustomer.getId()); + newOne.setFirstName(aCustomer.getFirstName()); + newOne.setLastName(aCustomer.getLastName()); + newOne.setStreet(aCustomer.getStreet()); + newOne.setCity(aCustomer.getCity()); + newOne.setPostalCode(aCustomer.getPostalCode()); + newOne.setState(aCustomer.getState()); + newOne.setPhoneNumber(aCustomer.getPhoneNumber()); + newOne.setEmail(aCustomer.getEmail()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java new file mode 100644 index 0000000000..e2ef4664cf --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java @@ -0,0 +1,73 @@ +package com.baeldung.jsonoptimization; + +import java.util.Objects; + +public class CustomerSlim { + private long id; + private String name; + private String address; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public int hashCode() { + return Objects.hash(address, id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CustomerSlim)) { + return false; + } + CustomerSlim other = (CustomerSlim) obj; + return Objects.equals(address, other.address) && id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return "CustomerSlim [id=" + id + ", name=" + name + ", address=" + address + "]"; + } + + public static CustomerSlim[] fromCustomers(Customer[] customers) { + CustomerSlim[] feedback = new CustomerSlim[customers.length]; + + for (int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerSlim newOne = new CustomerSlim(); + + newOne.setId(aCustomer.getId()); + newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); + newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java new file mode 100644 index 0000000000..296ee6fdf6 --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java @@ -0,0 +1,37 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class CustomerSlimDeserializer extends StdDeserializer { + private static final long serialVersionUID = 1L; + + public CustomerSlimDeserializer() { + this(null); + } + + public CustomerSlimDeserializer(Class t) { + super(t); + } + + @Override + public CustomerSlim deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { + CustomerSlim feedback = new CustomerSlim(); + ObjectCodec codec = parser.getCodec(); + JsonNode node = codec.readTree(parser); + + feedback.setId(node.get(0) + .asLong()); + feedback.setName(node.get(1) + .asText()); + feedback.setAddress(node.get(2) + .asText()); + + return feedback; + } +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java new file mode 100644 index 0000000000..520c541da6 --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java @@ -0,0 +1,28 @@ +package com.baeldung.jsonoptimization; + +import java.io.IOException; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class CustomerSlimSerializer extends StdSerializer { + private static final long serialVersionUID = 1L; + + public CustomerSlimSerializer() { + this(null); + } + + public CustomerSlimSerializer(Class t) { + super(t); + } + + @Override + public void serialize(CustomerSlim customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { + jsonGenerator.writeStartArray(); + jsonGenerator.writeNumber(customer.getId()); + jsonGenerator.writeString(customer.getName()); + jsonGenerator.writeString(customer.getAddress()); + jsonGenerator.writeEndArray(); + } +} diff --git a/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java new file mode 100644 index 0000000000..bf00e847ac --- /dev/null +++ b/json-2/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java @@ -0,0 +1,81 @@ +package com.baeldung.jsonoptimization; + +import java.util.Objects; + +import com.fasterxml.jackson.annotation.JsonProperty; + +public class CustomerSlimShortNames { + + @JsonProperty("i") + private long id; + + @JsonProperty("n") + private String name; + + @JsonProperty("a") + private String address; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + @Override + public int hashCode() { + return Objects.hash(address, id, name); + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof CustomerSlimShortNames)) { + return false; + } + CustomerSlimShortNames other = (CustomerSlimShortNames) obj; + return Objects.equals(address, other.address) && id == other.id && Objects.equals(name, other.name); + } + + @Override + public String toString() { + return "CustomerSlim [id=" + id + ", name=" + name + ", address=" + address + "]"; + } + + public static CustomerSlimShortNames[] fromCustomers(Customer[] customers) { + CustomerSlimShortNames[] feedback = new CustomerSlimShortNames[customers.length]; + + for (int i = 0; i < customers.length; i++) { + Customer aCustomer = customers[i]; + CustomerSlimShortNames newOne = new CustomerSlimShortNames(); + + newOne.setId(aCustomer.getId()); + newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); + newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); + + feedback[i] = newOne; + } + + return feedback; + } + +} diff --git a/json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java new file mode 100644 index 0000000000..7a56a68fe2 --- /dev/null +++ b/json-2/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java @@ -0,0 +1,180 @@ +package com.baeldung.jsonoptimization; + +import static org.junit.Assert.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.text.DecimalFormat; +import java.util.zip.GZIPOutputStream; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.fasterxml.jackson.annotation.JsonInclude.Include; +import com.fasterxml.jackson.core.Version; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectWriter; +import com.fasterxml.jackson.databind.module.SimpleModule; + +class JsonOptimizationUnitTest { + private static final String TEST_LABEL_JACKSON_DEFAULT_OPTIONS = "Default JSON"; + private static final String TEST_LABEL_DEFAULT_JSON_NO_NULL = "Default JSON without null"; + private static final String TEST_LABEL_SHORTER_FIELD_NAMES = "Shorter field names"; + private static final String TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL = "Shorter field names without null"; + private static final String TEST_LABEL_SERIALIZING_TO_ARRAY = "Custom serializer"; + private static final String TEST_LABEL_SLIM_CUSTOM_SERIALIZER = "Slim custom serializer"; + private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; + private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter field names"; + private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###.0"); + private static DecimalFormat PERCENT_FORMATTER = new DecimalFormat("###.0"); + private static Customer[] customers; + private ObjectMapper mapper; + private static int defaultJsonLength; + + @BeforeAll + static void setUpOnce() throws Exception { + customers = Customer.fromMockFile(); + ObjectMapper oneTimeMapper = new ObjectMapper(); + byte[] feedback = oneTimeMapper.writeValueAsBytes(customers); + defaultJsonLength = feedback.length; + System.out.println(); + System.out.println("Default JSON length: " + defaultJsonLength); + System.out.println(); + } + + @BeforeEach + void setUp() { + mapper = new ObjectMapper(); + } + + @Test + void whenSetUp_ThenOneThousandCustomers() { + assertEquals(1000, customers.length, "There should be a 1000 customers"); + } + + @Test + void whenJacksonDefaultOptions_thenValid() throws IOException { + printBanner(TEST_LABEL_JACKSON_DEFAULT_OPTIONS); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_JACKSON_DEFAULT_OPTIONS, customers); + compressJson(TEST_LABEL_JACKSON_DEFAULT_OPTIONS, plainJson); + } + + @Test + void whenExcludingNull_thenValid() throws IOException { + printBanner(TEST_LABEL_DEFAULT_JSON_NO_NULL); + mapper.setSerializationInclusion(Include.NON_NULL); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_DEFAULT_JSON_NO_NULL, customers); + compressJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, plainJson); + } + + @Test + void whenShorterFieldNames_thenValid() throws IOException { + printBanner(TEST_LABEL_SHORTER_FIELD_NAMES); + CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); + byte[] shorterJson = createJsonAndVerify(TEST_LABEL_SHORTER_FIELD_NAMES, shorterOnes); + compressJson(TEST_LABEL_SHORTER_FIELD_NAMES, shorterJson); + } + + @Test + void whenShorterFieldNamesAndExcludingNull_thenValid() throws IOException { + printBanner(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL); + CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); + mapper.setSerializationInclusion(Include.NON_NULL); + byte[] shorterJson = createJsonAndVerify(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL, shorterOnes); + compressJson(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL, shorterJson); + } + + @Test + void whenSlimCustomer_thenValid() throws IOException { + printBanner(TEST_LABEL_SLIM_CUSTOMER); + CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); + byte[] slimJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOMER, slimOnes); + compressJson(TEST_LABEL_SLIM_CUSTOMER, slimJson); + } + + @Test + void whenSlimCustomerAndShorterFieldNames_thenValid() throws IOException { + printBanner(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES); + CustomerSlimShortNames[] slimOnes = CustomerSlimShortNames.fromCustomers(customers); + byte[] slimJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimOnes); + compressJson(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimJson); + } + + @Test + void whenSerializingToArray_thenValid() throws IOException { + printBanner(TEST_LABEL_SERIALIZING_TO_ARRAY); + SimpleModule serializer = new SimpleModule("CustomDeSerializer", new Version(1, 0, 0, null, null, null)); + serializer.addSerializer(Customer.class, new CustomerSerializer()); + serializer.addDeserializer(Customer.class, new CustomerDeserializer()); + mapper.registerModule(serializer); + + byte[] plainJson = createJsonAndVerify(TEST_LABEL_SERIALIZING_TO_ARRAY, customers); + compressJson(TEST_LABEL_SERIALIZING_TO_ARRAY, plainJson); + } + + @Test + void whenSerializingToArrayAndSlimCustomer_thenValid() throws IOException { + printBanner(TEST_LABEL_SLIM_CUSTOM_SERIALIZER); + SimpleModule serializer = new SimpleModule("SlimCustomDeSerializer", new Version(1, 0, 0, null, null, null)); + serializer.addSerializer(CustomerSlim.class, new CustomerSlimSerializer()); + serializer.addDeserializer(CustomerSlim.class, new CustomerSlimDeserializer()); + mapper.registerModule(serializer); + + CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); + byte[] plainJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, slimOnes); + compressJson(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, plainJson); + } + + private void printBanner(String name) { + System.out.println(); + System.out.println("************************************************"); + System.out.println("Testing " + name); + System.out.println(); + } + + void compressJson(String label, byte[] plainJson) throws IOException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + GZIPOutputStream gzipStream = new GZIPOutputStream(outputStream); + gzipStream.write(plainJson); + gzipStream.close(); + outputStream.close(); + byte[] gzippedJson = outputStream.toByteArray(); + double length = gzippedJson.length / 1024d; + double percent = gzippedJson.length * 100d / defaultJsonLength; + System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(length) + + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); + assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); + } + + private byte[] createJsonAndVerify(String label, Object[] customers) throws IOException { + System.out.println(label + " sample: "); + ObjectWriter prettyWritter = mapper.writerWithDefaultPrettyPrinter(); + System.out.println(prettyWritter.writeValueAsString(customers[0])); + + byte[] feedback = mapper.writeValueAsBytes(customers); + double length = feedback.length / 1024d; + double percent = feedback.length * 100d / defaultJsonLength; + System.out.println(label + " length: " + LENGTH_FORMATTER.format(length) + + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); + assertTrue(feedback.length > 1, label + " should be there"); + + String prefix = label.replaceAll(" ", "-") + .toLowerCase(); + File tempFile = File.createTempFile("jon-optimization-" + prefix, ".json"); + FileOutputStream fos = new FileOutputStream(tempFile); + fos.write(feedback); + fos.close(); + System.out.println(label + " file: " + tempFile.toString()); + + Object[] restoredOnes = mapper.readValue(feedback, customers.getClass()); + assertArrayEquals(TEST_LABEL_JACKSON_DEFAULT_OPTIONS + ": restoring from JSON should work", customers, restoredOnes); + + return feedback; + } + +} diff --git a/json-2/src/test/resources/json_optimization_mock_data.json b/json-2/src/test/resources/json_optimization_mock_data.json new file mode 100644 index 0000000000..e09517cf61 --- /dev/null +++ b/json-2/src/test/resources/json_optimization_mock_data.json @@ -0,0 +1,1000 @@ +[{"id":1,"firstName":"Horatius","lastName":"Strognell","street":"4848 New Castle Point","postalCode":"33432","city":"Boca Raton","state":"FL","phoneNumber":"561-824-9105","email":"hstrognell0@dailymail.co.uk"}, +{"id":2,"firstName":"Kerri","lastName":"Arend","street":"4 Welch Pass","postalCode":"60669","city":"Chicago","state":"IL","phoneNumber":"312-303-5993"}, +{"id":3,"firstName":"Silvano","lastName":"Bartholomaus","street":"2491 Arkansas Center","postalCode":"30195","city":"Duluth","state":"GA","email":"sbartholomaus2@prlog.org"}, +{"id":4,"firstName":"Venita","lastName":"Burgoine","street":"63894 Sage Park","postalCode":"67215","city":"Wichita","state":"KS","email":"vburgoine3@telegraph.co.uk"}, +{"id":5,"firstName":"Meghan","lastName":"Westover","street":"76 Pleasure Way","postalCode":"77388","city":"Spring","state":"TX","phoneNumber":"832-926-0689","email":"mwestover4@cnn.com"}, +{"id":6,"firstName":"Mia","lastName":"Baversor","street":"50 Sommers Road","postalCode":"43204","city":"Columbus","state":"OH","email":"mbaversor5@wsj.com"}, +{"id":7,"firstName":"Winna","lastName":"Buggy","street":"05 Jenna Street","postalCode":"68144","city":"Omaha","state":"NE","phoneNumber":"402-740-7818"}, +{"id":8,"firstName":"Antonin","lastName":"Autrie","street":"9 Fieldstone Terrace","postalCode":"85754","city":"Tucson","state":"AZ"}, +{"id":9,"firstName":"Maddi","lastName":"Ollerearnshaw","street":"061 Crowley Trail","postalCode":"48335","city":"Farmington","state":"MI","phoneNumber":"248-709-8128"}, +{"id":10,"firstName":"Fawnia","lastName":"Cristofaro","street":"92571 Kinsman Alley","postalCode":"77271","city":"Houston","state":"TX","email":"fcristofaro9@ox.ac.uk"}, +{"id":11,"firstName":"Zachariah","lastName":"Rouby","street":"2439 Hudson Circle","postalCode":"25313","city":"Charleston","state":"WV","phoneNumber":"304-587-5444"}, +{"id":12,"firstName":"Brier","lastName":"Benech","street":"3144 Sutteridge Place","postalCode":"20380","city":"Washington","state":"DC","phoneNumber":"202-740-8851","email":"bbenechb@zdnet.com"}, +{"id":13,"firstName":"Merry","lastName":"Leming","street":"419 Kropf Terrace","postalCode":"45440","city":"Dayton","state":"OH","email":"mlemingc@ow.ly"}, +{"id":14,"firstName":"Audrey","lastName":"Dilleston","street":"61 Melrose Trail","postalCode":"97306","city":"Salem","state":"OR","phoneNumber":"503-480-6254"}, +{"id":15,"firstName":"De witt","lastName":"Kedge","street":"819 Kingsford Point","postalCode":"84135","city":"Salt Lake City","state":"UT"}, +{"id":16,"firstName":"Charita","lastName":"de Clerc","street":"42 Loftsgordon Hill","postalCode":"28289","city":"Charlotte","state":"NC","phoneNumber":"704-532-8850","email":"cdeclercf@comsenz.com"}, +{"id":17,"firstName":"Edgard","lastName":"Bloore","street":"1659 Donald Trail","postalCode":"20051","city":"Washington","state":"DC"}, +{"id":18,"firstName":"Kristi","lastName":"Richichi","street":"11306 Longview Hill","postalCode":"75372","city":"Dallas","state":"TX","email":"krichichih@cloudflare.com"}, +{"id":19,"firstName":"Denna","lastName":"Cornford","street":"4 Gale Junction","postalCode":"10014","city":"New York City","state":"NY","phoneNumber":"646-273-3067","email":"dcornfordi@ebay.co.uk"}, +{"id":20,"firstName":"Randall","lastName":"McQuaid","street":"55712 Stone Corner Circle","postalCode":"10203","city":"New York City","state":"NY","email":"rmcquaidj@facebook.com"}, +{"id":21,"firstName":"Kirbie","lastName":"Walczak","street":"9 Coleman Road","postalCode":"99252","city":"Spokane","state":"WA","email":"kwalczakk@spotify.com"}, +{"id":22,"firstName":"Zedekiah","lastName":"Westby","street":"9 Victoria Road","postalCode":"22093","city":"Ashburn","state":"VA","phoneNumber":"571-642-0111","email":"zwestbyl@ox.ac.uk"}, +{"id":23,"firstName":"Corri","lastName":"Snar","street":"4 Service Terrace","postalCode":"68517","city":"Lincoln","state":"NE","email":"csnarm@tinyurl.com"}, +{"id":24,"firstName":"Manny","lastName":"Marchington","street":"942 Westend Center","postalCode":"22119","city":"Merrifield","state":"VA","email":"mmarchingtonn@opensource.org"}, +{"id":25,"firstName":"Ashla","lastName":"Grigoroni","street":"755 Lerdahl Parkway","postalCode":"55423","city":"Minneapolis","state":"MN","phoneNumber":"612-797-7928","email":"agrigoronio@cam.ac.uk"}, +{"id":26,"firstName":"Rita","lastName":"Sharratt","street":"710 Buena Vista Avenue","postalCode":"40576","city":"Lexington","state":"KY","phoneNumber":"859-727-0697"}, +{"id":27,"firstName":"Karrie","lastName":"Crathorne","street":"02 Loeprich Place","postalCode":"39505","city":"Gulfport","state":"MS"}, +{"id":28,"firstName":"Lothario","lastName":"Merck","street":"46 Golden Leaf Park","postalCode":"35205","city":"Birmingham","state":"AL"}, +{"id":29,"firstName":"Renault","lastName":"Banister","street":"7 Garrison Plaza","postalCode":"85072","city":"Phoenix","state":"AZ"}, +{"id":30,"firstName":"Wanda","lastName":"Burkart","street":"10 Mendota Place","postalCode":"48258","city":"Detroit","state":"MI","phoneNumber":"248-870-5185","email":"wburkartt@wikipedia.org"}, +{"id":31,"firstName":"Maggy","lastName":"Timby","street":"37 Crest Line Center","postalCode":"50305","city":"Des Moines","state":"IA","email":"mtimbyu@cnbc.com"}, +{"id":32,"firstName":"Chet","lastName":"Origan","street":"767 Bashford Lane","postalCode":"30919","city":"Augusta","state":"GA","email":"coriganv@behance.net"}, +{"id":33,"firstName":"Jammie","lastName":"Aslie","street":"7174 Hoffman Circle","postalCode":"23464","city":"Virginia Beach","state":"VA"}, +{"id":34,"firstName":"Dill","lastName":"Kingdon","street":"75 Corben Crossing","postalCode":"33013","city":"Hialeah","state":"FL","email":"dkingdonx@ibm.com"}, +{"id":35,"firstName":"Berenice","lastName":"Blodget","street":"8 Eliot Junction","postalCode":"93907","city":"Salinas","state":"CA","email":"bblodgety@blogs.com"}, +{"id":36,"firstName":"Kimberley","lastName":"Streatley","street":"56 Welch Center","postalCode":"77070","city":"Houston","state":"TX"}, +{"id":37,"firstName":"Warde","lastName":"Woodwind","street":"773 Gerald Park","postalCode":"35295","city":"Birmingham","state":"AL","email":"wwoodwind10@wsj.com"}, +{"id":38,"firstName":"Husain","lastName":"Christofe","street":"35118 Forest Dale Avenue","postalCode":"10175","city":"New York City","state":"NY","phoneNumber":"212-611-7995","email":"hchristofe11@seesaa.net"}, +{"id":39,"firstName":"Gertrud","lastName":"Defraine","street":"568 Walton Way","postalCode":"37405","city":"Chattanooga","state":"TN","phoneNumber":"423-125-5719","email":"gdefraine12@xrea.com"}, +{"id":40,"firstName":"Yulma","lastName":"Ramshay","street":"9976 Iowa Drive","postalCode":"87121","city":"Albuquerque","state":"NM","phoneNumber":"505-914-5281"}, +{"id":41,"firstName":"Bride","lastName":"Amsberger","street":"3 Service Lane","postalCode":"28272","city":"Charlotte","state":"NC","email":"bamsberger14@forbes.com"}, +{"id":42,"firstName":"Kaiser","lastName":"Froud","street":"7 Starling Lane","postalCode":"99507","city":"Anchorage","state":"AK","email":"kfroud15@cloudflare.com"}, +{"id":43,"firstName":"Leona","lastName":"Sciusscietto","street":"06392 East Lane","postalCode":"60193","city":"Schaumburg","state":"IL","phoneNumber":"630-981-3986","email":"lsciusscietto16@mit.edu"}, +{"id":44,"firstName":"Sibel","lastName":"Ripsher","street":"8672 Bayside Road","postalCode":"32511","city":"Pensacola","state":"FL","phoneNumber":"850-975-6365","email":"sripsher17@sitemeter.com"}, +{"id":45,"firstName":"Megen","lastName":"Dymond","street":"0547 Harper Place","postalCode":"28220","city":"Charlotte","state":"NC","phoneNumber":"704-632-5850"}, +{"id":46,"firstName":"Vitoria","lastName":"Niese","street":"365 Colorado Plaza","postalCode":"15279","city":"Pittsburgh","state":"PA","phoneNumber":"412-864-8563"}, +{"id":47,"firstName":"Cherianne","lastName":"Daveran","street":"5 Esch Parkway","postalCode":"36104","city":"Montgomery","state":"AL","email":"cdaveran1a@ft.com"}, +{"id":48,"firstName":"Harriott","lastName":"Mallam","street":"9 Monterey Place","postalCode":"20215","city":"Washington","state":"DC","phoneNumber":"202-727-0645"}, +{"id":49,"firstName":"Jozef","lastName":"Stranger","street":"07 Warner Drive","postalCode":"84199","city":"Salt Lake City","state":"UT","phoneNumber":"801-741-5946"}, +{"id":50,"firstName":"Teena","lastName":"Broggio","street":"287 Luster Park","postalCode":"78285","city":"San Antonio","state":"TX","phoneNumber":"210-482-0822","email":"tbroggio1d@craigslist.org"}, +{"id":51,"firstName":"Robin","lastName":"Membry","street":"0736 Forest Dale Crossing","postalCode":"45408","city":"Dayton","state":"OH","phoneNumber":"937-335-4964","email":"rmembry1e@toplist.cz"}, +{"id":52,"firstName":"Holly","lastName":"Lowcock","street":"819 Aberg Pass","postalCode":"28815","city":"Asheville","state":"NC","email":"hlowcock1f@bbc.co.uk"}, +{"id":53,"firstName":"Shandee","lastName":"Blowick","street":"81600 Moose Lane","postalCode":"46867","city":"Fort Wayne","state":"IN","phoneNumber":"260-904-5622"}, +{"id":54,"firstName":"Chaim","lastName":"Stilliard","street":"91 Spohn Court","postalCode":"28305","city":"Fayetteville","state":"NC","phoneNumber":"910-721-3938"}, +{"id":55,"firstName":"Maximilien","lastName":"Purkis","street":"66997 Algoma Park","postalCode":"10150","city":"New York City","state":"NY","phoneNumber":"212-824-3363","email":"mpurkis1i@unblog.fr"}, +{"id":56,"firstName":"Ferguson","lastName":"Whiles","street":"0550 Bowman Street","postalCode":"33142","city":"Miami","state":"FL","phoneNumber":"786-416-2947","email":"fwhiles1j@artisteer.com"}, +{"id":57,"firstName":"Elena","lastName":"Poyle","street":"54 Warner Court","postalCode":"28055","city":"Gastonia","state":"NC","email":"epoyle1k@tripod.com"}, +{"id":58,"firstName":"Carney","lastName":"Pengilly","street":"050 Welch Junction","postalCode":"76147","city":"Fort Worth","state":"TX","phoneNumber":"817-525-7801","email":"cpengilly1l@yellowpages.com"}, +{"id":59,"firstName":"Krispin","lastName":"Pouck","street":"03554 Twin Pines Point","postalCode":"55551","city":"Young America","state":"MN","email":"kpouck1m@nymag.com"}, +{"id":60,"firstName":"Kylie","lastName":"Osmar","street":"7 Milwaukee Plaza","postalCode":"45228","city":"Cincinnati","state":"OH","phoneNumber":"513-940-5020","email":"kosmar1n@storify.com"}, +{"id":61,"firstName":"Trudi","lastName":"Standrin","street":"526 Onsgard Park","postalCode":"12237","city":"Albany","state":"NY","email":"tstandrin1o@sfgate.com"}, +{"id":62,"firstName":"Frank","lastName":"Belt","street":"52 Stang Lane","postalCode":"27455","city":"Greensboro","state":"NC"}, +{"id":63,"firstName":"Nerita","lastName":"Daulton","street":"03 Sutherland Court","postalCode":"55417","city":"Minneapolis","state":"MN","phoneNumber":"651-796-2028"}, +{"id":64,"firstName":"Urbanus","lastName":"Camm","street":"6802 Weeping Birch Circle","postalCode":"92115","city":"San Diego","state":"CA","email":"ucamm1r@ucoz.com"}, +{"id":65,"firstName":"Perry","lastName":"Struther","street":"63916 Corry Alley","postalCode":"28805","city":"Asheville","state":"NC","phoneNumber":"828-821-0824","email":"pstruther1s@nih.gov"}, +{"id":66,"firstName":"Zorina","lastName":"Uc","street":"99 Merry Circle","postalCode":"37250","city":"Nashville","state":"TN","phoneNumber":"615-364-4726","email":"zuc1t@cbc.ca"}, +{"id":67,"firstName":"Ajay","lastName":"Rediers","street":"6872 Armistice Lane","postalCode":"92812","city":"Anaheim","state":"CA","phoneNumber":"714-845-0143"}, +{"id":68,"firstName":"Brendis","lastName":"Goor","street":"94 Mccormick Place","postalCode":"77346","city":"Humble","state":"TX","phoneNumber":"713-910-5956"}, +{"id":69,"firstName":"Barbey","lastName":"Konneke","street":"75613 Miller Trail","postalCode":"30328","city":"Atlanta","state":"GA","phoneNumber":"770-208-1453"}, +{"id":70,"firstName":"Adlai","lastName":"Colly","street":"4446 Loftsgordon Place","postalCode":"40576","city":"Lexington","state":"KY","email":"acolly1x@phpbb.com"}, +{"id":71,"firstName":"Libby","lastName":"Wherton","street":"9313 Buell Road","postalCode":"70116","city":"New Orleans","state":"LA","email":"lwherton1y@flickr.com"}, +{"id":72,"firstName":"Niko","lastName":"Stockell","street":"61 Havey Park","postalCode":"10034","city":"New York City","state":"NY","phoneNumber":"646-814-6395","email":"nstockell1z@xrea.com"}, +{"id":73,"firstName":"Phillip","lastName":"Dadley","street":"14534 Victoria Street","postalCode":"33906","city":"Fort Myers","state":"FL","email":"pdadley20@studiopress.com"}, +{"id":74,"firstName":"Leann","lastName":"Hebburn","street":"9 Center Place","postalCode":"84140","city":"Salt Lake City","state":"UT","email":"lhebburn21@1688.com"}, +{"id":75,"firstName":"Raynor","lastName":"Gernier","street":"5923 Gale Plaza","postalCode":"79118","city":"Amarillo","state":"TX"}, +{"id":76,"firstName":"Elmore","lastName":"Frankton","street":"770 Wayridge Crossing","postalCode":"14619","city":"Rochester","state":"NY"}, +{"id":77,"firstName":"Teresina","lastName":"Rives","street":"51261 Sycamore Terrace","postalCode":"63180","city":"Saint Louis","state":"MO","email":"trives24@cbsnews.com"}, +{"id":78,"firstName":"Pancho","lastName":"Thebeaud","street":"72 Pierstorff Way","postalCode":"33705","city":"Saint Petersburg","state":"FL","phoneNumber":"813-335-3556"}, +{"id":79,"firstName":"Deanne","lastName":"Crighton","street":"95 Duke Plaza","postalCode":"71151","city":"Shreveport","state":"LA","phoneNumber":"318-218-7196","email":"dcrighton26@sphinn.com"}, +{"id":80,"firstName":"Brucie","lastName":"Bury","street":"8948 Knutson Lane","postalCode":"93740","city":"Fresno","state":"CA","email":"bbury27@twitter.com"}, +{"id":81,"firstName":"Joleen","lastName":"Flack","street":"8007 Morningstar Street","postalCode":"33283","city":"Miami","state":"FL","phoneNumber":"305-459-0365"}, +{"id":82,"firstName":"Antonino","lastName":"Matelyunas","street":"2585 Gale Road","postalCode":"20591","city":"Washington","state":"DC","phoneNumber":"202-780-3589"}, +{"id":83,"firstName":"Vinnie","lastName":"Syne","street":"6 Fallview Pass","postalCode":"20231","city":"Washington","state":"DC","phoneNumber":"202-648-5977","email":"vsyne2a@etsy.com"}, +{"id":84,"firstName":"Sig","lastName":"Guillotin","street":"6 Buell Lane","postalCode":"46015","city":"Anderson","state":"IN","phoneNumber":"765-948-7663","email":"sguillotin2b@cisco.com"}, +{"id":85,"firstName":"Gabriel","lastName":"Vasyukhichev","street":"25801 Grasskamp Junction","postalCode":"45408","city":"Dayton","state":"OH","email":"gvasyukhichev2c@mac.com"}, +{"id":86,"firstName":"Casie","lastName":"Burgill","street":"0 Dapin Alley","postalCode":"37410","city":"Chattanooga","state":"TN"}, +{"id":87,"firstName":"Kristan","lastName":"Chalice","street":"5118 Calypso Junction","postalCode":"78721","city":"Austin","state":"TX","phoneNumber":"512-831-2347"}, +{"id":88,"firstName":"Brear","lastName":"Pruckner","street":"2 Corscot Street","postalCode":"53790","city":"Madison","state":"WI"}, +{"id":89,"firstName":"Estella","lastName":"Orpyne","street":"293 Hansons Plaza","postalCode":"55579","city":"Maple Plain","state":"MN","phoneNumber":"952-666-6951","email":"eorpyne2g@examiner.com"}, +{"id":90,"firstName":"Conroy","lastName":"de Banke","street":"40636 Farmco Park","postalCode":"30316","city":"Atlanta","state":"GA","phoneNumber":"404-199-0073","email":"cdebanke2h@prweb.com"}, +{"id":91,"firstName":"Elmira","lastName":"Bracken","street":"10 Macpherson Place","postalCode":"85099","city":"Phoenix","state":"AZ","phoneNumber":"602-991-7768","email":"ebracken2i@sourceforge.net"}, +{"id":92,"firstName":"Carlota","lastName":"Vasilechko","street":"33 American Ash Point","postalCode":"75507","city":"Texarkana","state":"TX","phoneNumber":"903-312-0610","email":"cvasilechko2j@nba.com"}, +{"id":93,"firstName":"Jamesy","lastName":"Valentelli","street":"59634 Charing Cross Trail","postalCode":"31416","city":"Savannah","state":"GA","phoneNumber":"912-657-6729","email":"jvalentelli2k@nifty.com"}, +{"id":94,"firstName":"Hildagarde","lastName":"Sandels","street":"1 Lotheville Lane","postalCode":"32277","city":"Jacksonville","state":"FL","phoneNumber":"904-981-2753","email":"hsandels2l@a8.net"}, +{"id":95,"firstName":"Kip","lastName":"Cranidge","street":"2 South Road","postalCode":"19160","city":"Philadelphia","state":"PA"}, +{"id":96,"firstName":"Tobit","lastName":"Jarrette","street":"777 Mallard Trail","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-706-1988"}, +{"id":97,"firstName":"Tibold","lastName":"Michie","street":"87796 Nevada Junction","postalCode":"22093","city":"Ashburn","state":"VA","phoneNumber":"571-188-4893","email":"tmichie2o@mapy.cz"}, +{"id":98,"firstName":"Maximo","lastName":"Ifill","street":"8307 Tony Point","postalCode":"22225","city":"Arlington","state":"VA","phoneNumber":"571-404-1412"}, +{"id":99,"firstName":"Patti","lastName":"Autry","street":"901 Iowa Crossing","postalCode":"55551","city":"Young America","state":"MN","phoneNumber":"952-772-9107","email":"pautry2q@scientificamerican.com"}, +{"id":100,"firstName":"Cathe","lastName":"Jost","street":"4400 Menomonie Road","postalCode":"21211","city":"Baltimore","state":"MD","phoneNumber":"410-800-4683","email":"cjost2r@tuttocitta.it"}, +{"id":101,"firstName":"Byron","lastName":"Maddams","street":"10729 Oak Trail","postalCode":"78255","city":"San Antonio","state":"TX","phoneNumber":"830-263-4129"}, +{"id":102,"firstName":"Sosanna","lastName":"Paley","street":"82207 Park Meadow Court","postalCode":"77010","city":"Houston","state":"TX","phoneNumber":"832-740-8766","email":"spaley2t@salon.com"}, +{"id":103,"firstName":"Elysia","lastName":"Skerratt","street":"88708 Cambridge Drive","postalCode":"31217","city":"Macon","state":"GA","phoneNumber":"478-265-6579","email":"eskerratt2u@japanpost.jp"}, +{"id":104,"firstName":"Nealson","lastName":"Sieur","street":"1286 Elmside Plaza","postalCode":"20904","city":"Silver Spring","state":"MD"}, +{"id":105,"firstName":"Yasmeen","lastName":"Bazire","street":"91904 Elmside Point","postalCode":"73167","city":"Oklahoma City","state":"OK"}, +{"id":106,"firstName":"Mandy","lastName":"Ewart","street":"91 Norway Maple Street","postalCode":"21239","city":"Baltimore","state":"MD","email":"mewart2x@weebly.com"}, +{"id":107,"firstName":"Chlo","lastName":"Keedy","street":"560 Oak Valley Avenue","postalCode":"20420","city":"Washington","state":"DC"}, +{"id":108,"firstName":"Benedicta","lastName":"Dinneen","street":"9 Cottonwood Circle","postalCode":"60686","city":"Chicago","state":"IL","email":"bdinneen2z@nydailynews.com"}, +{"id":109,"firstName":"Nanon","lastName":"Corsar","street":"40001 Barby Drive","postalCode":"95818","city":"Sacramento","state":"CA","email":"ncorsar30@house.gov"}, +{"id":110,"firstName":"Babette","lastName":"Scarsbrick","street":"96095 Loomis Terrace","postalCode":"94622","city":"Oakland","state":"CA","email":"bscarsbrick31@smugmug.com"}, +{"id":111,"firstName":"Cornall","lastName":"Christauffour","street":"9 Springview Alley","postalCode":"84170","city":"Salt Lake City","state":"UT","phoneNumber":"801-935-1246","email":"cchristauffour32@booking.com"}, +{"id":112,"firstName":"Micki","lastName":"Labell","street":"77729 Heath Place","postalCode":"25336","city":"Charleston","state":"WV"}, +{"id":113,"firstName":"Marissa","lastName":"Bricksey","street":"1 Jackson Pass","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"917-552-4280"}, +{"id":114,"firstName":"Alex","lastName":"Lyptrade","street":"74 Bunting Circle","postalCode":"40591","city":"Lexington","state":"KY","phoneNumber":"859-177-0753"}, +{"id":115,"firstName":"Tove","lastName":"Bielfeldt","street":"95 Mallard Hill","postalCode":"70894","city":"Baton Rouge","state":"LA","email":"tbielfeldt36@goo.gl"}, +{"id":116,"firstName":"Rodrigo","lastName":"Chestle","street":"53625 1st Junction","postalCode":"43635","city":"Toledo","state":"OH","phoneNumber":"419-928-0953","email":"rchestle37@princeton.edu"}, +{"id":117,"firstName":"Ulrike","lastName":"Kendle","street":"0 Cardinal Alley","postalCode":"80925","city":"Colorado Springs","state":"CO","phoneNumber":"719-796-1992","email":"ukendle38@naver.com"}, +{"id":118,"firstName":"Sandor","lastName":"Warwick","street":"8 Spaight Crossing","postalCode":"92030","city":"Escondido","state":"CA","email":"swarwick39@about.com"}, +{"id":119,"firstName":"Selina","lastName":"Slowcock","street":"7 7th Circle","postalCode":"50335","city":"Des Moines","state":"IA","phoneNumber":"515-865-9809"}, +{"id":120,"firstName":"Maxine","lastName":"Placstone","street":"42056 Sycamore Plaza","postalCode":"20244","city":"Washington","state":"DC"}, +{"id":121,"firstName":"Ardine","lastName":"Reven","street":"10634 Nancy Way","postalCode":"10175","city":"New York City","state":"NY","email":"areven3c@diigo.com"}, +{"id":122,"firstName":"Dilan","lastName":"Widdows","street":"37 Park Meadow Way","postalCode":"68144","city":"Omaha","state":"NE","phoneNumber":"402-383-9020"}, +{"id":123,"firstName":"Kevina","lastName":"Praten","street":"8531 Elmside Point","postalCode":"27610","city":"Raleigh","state":"NC","email":"kpraten3e@craigslist.org"}, +{"id":124,"firstName":"Sherman","lastName":"Jurczak","street":"8281 Acker Alley","postalCode":"07522","city":"Paterson","state":"NJ","email":"sjurczak3f@github.com"}, +{"id":125,"firstName":"Beckie","lastName":"Disney","street":"3 Butterfield Drive","postalCode":"49518","city":"Grand Rapids","state":"MI","phoneNumber":"616-493-1284","email":"bdisney3g@china.com.cn"}, +{"id":126,"firstName":"Blaine","lastName":"Leak","street":"369 Norway Maple Lane","postalCode":"03804","city":"Portsmouth","state":"NH","email":"bleak3h@lulu.com"}, +{"id":127,"firstName":"Dare","lastName":"Marney","street":"50 Lake View Alley","postalCode":"06505","city":"New Haven","state":"CT","phoneNumber":"203-876-6938","email":"dmarney3i@delicious.com"}, +{"id":128,"firstName":"Darby","lastName":"Sackler","street":"841 Ridgeview Trail","postalCode":"80279","city":"Denver","state":"CO"}, +{"id":129,"firstName":"Aurilia","lastName":"Seabrocke","street":"670 Schmedeman Road","postalCode":"11254","city":"Brooklyn","state":"NY","email":"aseabrocke3k@engadget.com"}, +{"id":130,"firstName":"Griz","lastName":"Riccioppo","street":"2204 Moland Circle","postalCode":"45218","city":"Cincinnati","state":"OH","email":"griccioppo3l@cisco.com"}, +{"id":131,"firstName":"Zahara","lastName":"Quinion","street":"4979 Mallory Circle","postalCode":"24515","city":"Lynchburg","state":"VA","email":"zquinion3m@sfgate.com"}, +{"id":132,"firstName":"Holly-anne","lastName":"Fontel","street":"60752 Hallows Circle","postalCode":"76705","city":"Waco","state":"TX","phoneNumber":"254-822-2565","email":"hfontel3n@exblog.jp"}, +{"id":133,"firstName":"Johannes","lastName":"Lemonby","street":"3 Grover Terrace","postalCode":"25709","city":"Huntington","state":"WV","phoneNumber":"304-342-4911","email":"jlemonby3o@woothemes.com"}, +{"id":134,"firstName":"Melvin","lastName":"Kain","street":"16 Pond Junction","postalCode":"85215","city":"Mesa","state":"AZ","phoneNumber":"602-146-3701"}, +{"id":135,"firstName":"Letta","lastName":"Smelley","street":"537 Helena Circle","postalCode":"22119","city":"Merrifield","state":"VA","phoneNumber":"571-472-5640"}, +{"id":136,"firstName":"Clerc","lastName":"Mc Ilwrick","street":"7050 Northfield Street","postalCode":"90050","city":"Los Angeles","state":"CA","email":"cmcilwrick3r@abc.net.au"}, +{"id":137,"firstName":"Abba","lastName":"Sutherns","street":"8087 Monterey Lane","postalCode":"83757","city":"Boise","state":"ID","phoneNumber":"208-110-3153","email":"asutherns3s@dropbox.com"}, +{"id":138,"firstName":"Karola","lastName":"Symper","street":"4596 Clyde Gallagher Road","postalCode":"28815","city":"Asheville","state":"NC","email":"ksymper3t@parallels.com"}, +{"id":139,"firstName":"Jessamyn","lastName":"Deacock","street":"19557 Bobwhite Way","postalCode":"19725","city":"Newark","state":"DE","phoneNumber":"302-174-2938"}, +{"id":140,"firstName":"Iggy","lastName":"Impey","street":"8 Brown Place","postalCode":"27499","city":"Greensboro","state":"NC"}, +{"id":141,"firstName":"Kary","lastName":"Mably","street":"75 Porter Avenue","postalCode":"70174","city":"New Orleans","state":"LA","email":"kmably3w@miibeian.gov.cn"}, +{"id":142,"firstName":"Ciel","lastName":"Tidbold","street":"54 Mitchell Lane","postalCode":"90055","city":"Los Angeles","state":"CA"}, +{"id":143,"firstName":"Dyana","lastName":"Orcott","street":"2 Kinsman Street","postalCode":"90005","city":"Los Angeles","state":"CA","phoneNumber":"310-366-6987"}, +{"id":144,"firstName":"Damien","lastName":"Haking","street":"2 Elmside Point","postalCode":"62705","city":"Springfield","state":"IL","email":"dhaking3z@drupal.org"}, +{"id":145,"firstName":"Ricardo","lastName":"Bille","street":"3 Mesta Hill","postalCode":"98411","city":"Tacoma","state":"WA","email":"rbille40@ebay.co.uk"}, +{"id":146,"firstName":"Carlene","lastName":"Roget","street":"8 Granby Avenue","postalCode":"35225","city":"Birmingham","state":"AL","phoneNumber":"205-762-4907","email":"croget41@statcounter.com"}, +{"id":147,"firstName":"Sharlene","lastName":"Antusch","street":"02445 Stang Parkway","postalCode":"55480","city":"Minneapolis","state":"MN","email":"santusch42@mtv.com"}, +{"id":148,"firstName":"Goober","lastName":"Danielczyk","street":"474 Union Court","postalCode":"70505","city":"Lafayette","state":"LA","phoneNumber":"337-779-0312","email":"gdanielczyk43@dion.ne.jp"}, +{"id":149,"firstName":"Janette","lastName":"Mauro","street":"1231 Commercial Crossing","postalCode":"97201","city":"Portland","state":"OR","phoneNumber":"971-423-7259"}, +{"id":150,"firstName":"Melinda","lastName":"Shitliffe","street":"244 Derek Drive","postalCode":"23208","city":"Richmond","state":"VA","phoneNumber":"804-864-5845"}, +{"id":151,"firstName":"Constance","lastName":"Fardon","street":"3 Lien Point","postalCode":"89105","city":"Las Vegas","state":"NV"}, +{"id":152,"firstName":"Tedd","lastName":"Storey","street":"2551 Luster Point","postalCode":"19151","city":"Philadelphia","state":"PA","phoneNumber":"215-622-9273","email":"tstorey47@google.com.au"}, +{"id":153,"firstName":"Brigitte","lastName":"Slograve","street":"8130 Waubesa Hill","postalCode":"11499","city":"Jamaica","state":"NY","email":"bslograve48@yandex.ru"}, +{"id":154,"firstName":"Ralph","lastName":"Comberbeach","street":"88140 Anderson Avenue","postalCode":"90076","city":"Los Angeles","state":"CA"}, +{"id":155,"firstName":"Deloria","lastName":"Thomazet","street":"666 Center Crossing","postalCode":"38119","city":"Memphis","state":"TN","phoneNumber":"615-840-7916"}, +{"id":156,"firstName":"Fidel","lastName":"MacClay","street":"01 Fairfield Point","postalCode":"24034","city":"Roanoke","state":"VA","email":"fmacclay4b@sitemeter.com"}, +{"id":157,"firstName":"Amalee","lastName":"Menzies","street":"6 Judy Drive","postalCode":"84605","city":"Provo","state":"UT"}, +{"id":158,"firstName":"Ansel","lastName":"Jory","street":"3 Nobel Park","postalCode":"32505","city":"Pensacola","state":"FL","phoneNumber":"850-394-8201"}, +{"id":159,"firstName":"Teodor","lastName":"Longhorn","street":"563 Sutherland Avenue","postalCode":"98008","city":"Bellevue","state":"WA"}, +{"id":160,"firstName":"Margarita","lastName":"Rewcassell","street":"64711 Beilfuss Point","postalCode":"79764","city":"Odessa","state":"TX","phoneNumber":"432-413-2196"}, +{"id":161,"firstName":"Tarra","lastName":"Albro","street":"2 Graceland Way","postalCode":"78405","city":"Corpus Christi","state":"TX"}, +{"id":162,"firstName":"Whitaker","lastName":"Brizell","street":"6 Luster Place","postalCode":"33694","city":"Tampa","state":"FL","email":"wbrizell4h@naver.com"}, +{"id":163,"firstName":"Gauthier","lastName":"Getsham","street":"0820 Duke Plaza","postalCode":"28263","city":"Charlotte","state":"NC","phoneNumber":"704-510-2908"}, +{"id":164,"firstName":"Thane","lastName":"Discombe","street":"56809 Aberg Street","postalCode":"63167","city":"Saint Louis","state":"MO"}, +{"id":165,"firstName":"Felicia","lastName":"Barthrup","street":"904 Stuart Junction","postalCode":"32220","city":"Jacksonville","state":"FL"}, +{"id":166,"firstName":"Emeline","lastName":"Jobes","street":"2670 Prairieview Plaza","postalCode":"10120","city":"New York City","state":"NY","email":"ejobes4l@newyorker.com"}, +{"id":167,"firstName":"Felicle","lastName":"Bowie","street":"9715 Lighthouse Bay Parkway","postalCode":"11210","city":"Brooklyn","state":"NY","email":"fbowie4m@auda.org.au"}, +{"id":168,"firstName":"Clare","lastName":"Miskelly","street":"8 Towne Trail","postalCode":"44555","city":"Youngstown","state":"OH"}, +{"id":169,"firstName":"Mort","lastName":"Danat","street":"6833 Shoshone Lane","postalCode":"12255","city":"Albany","state":"NY","phoneNumber":"518-967-9791","email":"mdanat4o@privacy.gov.au"}, +{"id":170,"firstName":"Ailey","lastName":"Scatchar","street":"3 Northfield Point","postalCode":"76505","city":"Temple","state":"TX"}, +{"id":171,"firstName":"Kevina","lastName":"Darwent","street":"8165 Reinke Alley","postalCode":"94132","city":"San Francisco","state":"CA","email":"kdarwent4q@artisteer.com"}, +{"id":172,"firstName":"My","lastName":"Buston","street":"715 Saint Paul Center","postalCode":"31416","city":"Savannah","state":"GA","phoneNumber":"912-281-8654"}, +{"id":173,"firstName":"Emera","lastName":"Lingner","street":"943 Eastlawn Hill","postalCode":"90605","city":"Whittier","state":"CA"}, +{"id":174,"firstName":"Drucie","lastName":"Byer","street":"988 4th Court","postalCode":"06816","city":"Danbury","state":"CT","email":"dbyer4t@xinhuanet.com"}, +{"id":175,"firstName":"Modestine","lastName":"Madeley","street":"1 Delaware Terrace","postalCode":"80126","city":"Littleton","state":"CO"}, +{"id":176,"firstName":"Selie","lastName":"O'Mohun","street":"42 Monument Trail","postalCode":"55590","city":"Monticello","state":"MN","phoneNumber":"763-384-5166"}, +{"id":177,"firstName":"Shayla","lastName":"Pesselt","street":"7 Pawling Center","postalCode":"20099","city":"Washington","state":"DC","phoneNumber":"202-816-7300","email":"spesselt4w@posterous.com"}, +{"id":178,"firstName":"Raeann","lastName":"Layland","street":"06548 Longview Alley","postalCode":"77005","city":"Houston","state":"TX","phoneNumber":"214-899-1257","email":"rlayland4x@pcworld.com"}, +{"id":179,"firstName":"Dael","lastName":"Christaeas","street":"375 Northfield Street","postalCode":"23509","city":"Norfolk","state":"VA","phoneNumber":"757-391-2798","email":"dchristaeas4y@sciencedaily.com"}, +{"id":180,"firstName":"Nicolas","lastName":"Baxill","street":"9 Autumn Leaf Terrace","postalCode":"77005","city":"Houston","state":"TX","email":"nbaxill4z@edublogs.org"}, +{"id":181,"firstName":"Onida","lastName":"Pengilly","street":"61 Commercial Junction","postalCode":"24029","city":"Roanoke","state":"VA","email":"opengilly50@slideshare.net"}, +{"id":182,"firstName":"Muffin","lastName":"Thrasher","street":"1 Morning Hill","postalCode":"64082","city":"Lees Summit","state":"MO"}, +{"id":183,"firstName":"Ignaz","lastName":"McLugish","street":"3936 Columbus Point","postalCode":"35263","city":"Birmingham","state":"AL"}, +{"id":184,"firstName":"Guillaume","lastName":"Gillings","street":"75541 Sheridan Center","postalCode":"68510","city":"Lincoln","state":"NE","email":"ggillings53@unblog.fr"}, +{"id":185,"firstName":"Kalli","lastName":"Branche","street":"33740 Manitowish Court","postalCode":"96805","city":"Honolulu","state":"HI"}, +{"id":186,"firstName":"Winthrop","lastName":"Barszczewski","street":"9 Luster Terrace","postalCode":"60158","city":"Carol Stream","state":"IL","phoneNumber":"309-633-3125","email":"wbarszczewski55@eventbrite.com"}, +{"id":187,"firstName":"Renaud","lastName":"Nitto","street":"1 Crownhardt Place","postalCode":"10310","city":"Staten Island","state":"NY","phoneNumber":"914-568-4524","email":"rnitto56@typepad.com"}, +{"id":188,"firstName":"Pollyanna","lastName":"Wherrett","street":"31380 Upham Street","postalCode":"76134","city":"Fort Worth","state":"TX","phoneNumber":"817-198-3301","email":"pwherrett57@bluehost.com"}, +{"id":189,"firstName":"Lilly","lastName":"Gatchell","street":"7 Elka Road","postalCode":"94064","city":"Redwood City","state":"CA","email":"lgatchell58@patch.com"}, +{"id":190,"firstName":"Leopold","lastName":"Leavey","street":"9 Darwin Crossing","postalCode":"20268","city":"Washington","state":"DC","phoneNumber":"202-964-5932","email":"lleavey59@aol.com"}, +{"id":191,"firstName":"Byram","lastName":"Stuckes","street":"782 Northport Alley","postalCode":"55436","city":"Minneapolis","state":"MN"}, +{"id":192,"firstName":"Cull","lastName":"Whiterod","street":"2586 Banding Terrace","postalCode":"80249","city":"Denver","state":"CO","email":"cwhiterod5b@skype.com"}, +{"id":193,"firstName":"Gretel","lastName":"Tacey","street":"6382 Fremont Avenue","postalCode":"25305","city":"Charleston","state":"WV"}, +{"id":194,"firstName":"Tudor","lastName":"Piff","street":"0 Monterey Circle","postalCode":"00214","city":"Portsmouth","state":"NH","email":"tpiff5d@eepurl.com"}, +{"id":195,"firstName":"Julienne","lastName":"Adshed","street":"91839 Lawn Avenue","postalCode":"92519","city":"Riverside","state":"CA"}, +{"id":196,"firstName":"Arnold","lastName":"Fearns","street":"7 West Trail","postalCode":"35242","city":"Birmingham","state":"AL","email":"afearns5f@bravesites.com"}, +{"id":197,"firstName":"Dunc","lastName":"Khoter","street":"048 Clove Lane","postalCode":"89505","city":"Reno","state":"NV","phoneNumber":"775-120-9532","email":"dkhoter5g@bbb.org"}, +{"id":198,"firstName":"Stevana","lastName":"Lush","street":"6 Dovetail Plaza","postalCode":"79945","city":"El Paso","state":"TX","email":"slush5h@economist.com"}, +{"id":199,"firstName":"Iggy","lastName":"Verryan","street":"5 Sommers Road","postalCode":"34114","city":"Naples","state":"FL","phoneNumber":"239-205-8767"}, +{"id":200,"firstName":"Breena","lastName":"Rubbert","street":"5 Kensington Crossing","postalCode":"90510","city":"Torrance","state":"CA","email":"brubbert5j@phpbb.com"}, +{"id":201,"firstName":"Jervis","lastName":"Doree","street":"2947 Center Plaza","postalCode":"70160","city":"New Orleans","state":"LA","phoneNumber":"504-278-7497","email":"jdoree5k@shutterfly.com"}, +{"id":202,"firstName":"Odelia","lastName":"Lidierth","street":"36699 Aberg Park","postalCode":"62764","city":"Springfield","state":"IL"}, +{"id":203,"firstName":"Ree","lastName":"Lammerding","street":"3542 Lerdahl Court","postalCode":"88558","city":"El Paso","state":"TX","phoneNumber":"915-384-9334","email":"rlammerding5m@msu.edu"}, +{"id":204,"firstName":"Davy","lastName":"Orniz","street":"49 Graedel Parkway","postalCode":"48295","city":"Detroit","state":"MI","email":"dorniz5n@examiner.com"}, +{"id":205,"firstName":"Syd","lastName":"Buckoke","street":"70 Pepper Wood Alley","postalCode":"74156","city":"Tulsa","state":"OK","phoneNumber":"918-604-5799"}, +{"id":206,"firstName":"Ginger","lastName":"Calkin","street":"7 Thompson Trail","postalCode":"71115","city":"Shreveport","state":"LA","phoneNumber":"318-650-6046"}, +{"id":207,"firstName":"Anissa","lastName":"Ivashinnikov","street":"61905 Chive Circle","postalCode":"40745","city":"London","state":"KY","email":"aivashinnikov5q@google.cn"}, +{"id":208,"firstName":"Vikky","lastName":"Kesley","street":"1 Grayhawk Street","postalCode":"06538","city":"New Haven","state":"CT","phoneNumber":"203-944-7163"}, +{"id":209,"firstName":"Alisha","lastName":"Lampke","street":"26940 Kensington Park","postalCode":"55446","city":"Minneapolis","state":"MN","phoneNumber":"612-814-9814","email":"alampke5s@apple.com"}, +{"id":210,"firstName":"Davidde","lastName":"Phlipon","street":"2044 Ruskin Road","postalCode":"07188","city":"Newark","state":"NJ","email":"dphlipon5t@shareasale.com"}, +{"id":211,"firstName":"Joly","lastName":"Crottagh","street":"532 Dawn Plaza","postalCode":"85083","city":"Phoenix","state":"AZ","phoneNumber":"602-533-4064"}, +{"id":212,"firstName":"Aggie","lastName":"Niesing","street":"3 Tony Drive","postalCode":"57110","city":"Sioux Falls","state":"SD","email":"aniesing5v@pbs.org"}, +{"id":213,"firstName":"Daron","lastName":"Baudassi","street":"2411 Melvin Court","postalCode":"40581","city":"Lexington","state":"KY","phoneNumber":"859-754-2542","email":"dbaudassi5w@joomla.org"}, +{"id":214,"firstName":"Thadeus","lastName":"Kleiser","street":"1394 Warner Street","postalCode":"87592","city":"Santa Fe","state":"NM","email":"tkleiser5x@bloomberg.com"}, +{"id":215,"firstName":"Terri","lastName":"Perrat","street":"0080 Upham Plaza","postalCode":"52245","city":"Iowa City","state":"IA"}, +{"id":216,"firstName":"Marlena","lastName":"Gatchell","street":"60888 Annamark Street","postalCode":"90060","city":"Los Angeles","state":"CA","phoneNumber":"323-121-6985","email":"mgatchell5z@ibm.com"}, +{"id":217,"firstName":"Locke","lastName":"Orcott","street":"459 Warner Lane","postalCode":"45020","city":"Hamilton","state":"OH","phoneNumber":"937-115-3187"}, +{"id":218,"firstName":"Wilmer","lastName":"Bewick","street":"0 Ohio Center","postalCode":"98166","city":"Seattle","state":"WA","phoneNumber":"253-805-8855","email":"wbewick61@seesaa.net"}, +{"id":219,"firstName":"Marena","lastName":"MacShirrie","street":"607 Badeau Circle","postalCode":"98008","city":"Bellevue","state":"WA","email":"mmacshirrie62@wikia.com"}, +{"id":220,"firstName":"Nathanial","lastName":"Sexty","street":"43 Basil Place","postalCode":"85020","city":"Phoenix","state":"AZ"}, +{"id":221,"firstName":"Wadsworth","lastName":"Iacovuzzi","street":"9610 Donald Crossing","postalCode":"88530","city":"El Paso","state":"TX","phoneNumber":"915-889-7936","email":"wiacovuzzi64@prnewswire.com"}, +{"id":222,"firstName":"Sutton","lastName":"Stych","street":"9 Brentwood Terrace","postalCode":"20546","city":"Washington","state":"DC","phoneNumber":"202-538-6355","email":"sstych65@wikimedia.org"}, +{"id":223,"firstName":"Gaspar","lastName":"Wabey","street":"3061 Bluejay Terrace","postalCode":"10110","city":"New York City","state":"NY","phoneNumber":"917-939-0802","email":"gwabey66@technorati.com"}, +{"id":224,"firstName":"Herminia","lastName":"Guyot","street":"91 Express Drive","postalCode":"85715","city":"Tucson","state":"AZ","phoneNumber":"520-777-1670","email":"hguyot67@admin.ch"}, +{"id":225,"firstName":"Udale","lastName":"Beurich","street":"675 Karstens Crossing","postalCode":"46852","city":"Fort Wayne","state":"IN","phoneNumber":"260-580-8627","email":"ubeurich68@bigcartel.com"}, +{"id":226,"firstName":"Kerrie","lastName":"Girauld","street":"56132 Charing Cross Court","postalCode":"71137","city":"Shreveport","state":"LA","email":"kgirauld69@nationalgeographic.com"}, +{"id":227,"firstName":"Irvin","lastName":"Nix","street":"0676 Aberg Terrace","postalCode":"97075","city":"Beaverton","state":"OR","email":"inix6a@xing.com"}, +{"id":228,"firstName":"Corene","lastName":"Spencock","street":"90 Meadow Ridge Drive","postalCode":"73173","city":"Oklahoma City","state":"OK","phoneNumber":"405-577-1312","email":"cspencock6b@shinystat.com"}, +{"id":229,"firstName":"Christos","lastName":"McIlreavy","street":"673 Jana Trail","postalCode":"23471","city":"Virginia Beach","state":"VA","email":"cmcilreavy6c@mayoclinic.com"}, +{"id":230,"firstName":"Bennett","lastName":"Melding","street":"4 Cardinal Lane","postalCode":"55448","city":"Minneapolis","state":"MN","email":"bmelding6d@t-online.de"}, +{"id":231,"firstName":"Winny","lastName":"de Leon","street":"941 Scoville Place","postalCode":"94611","city":"Oakland","state":"CA","phoneNumber":"510-230-4168","email":"wdeleon6e@dell.com"}, +{"id":232,"firstName":"Nike","lastName":"Iacobassi","street":"956 Service Junction","postalCode":"71914","city":"Hot Springs National Park","state":"AR","phoneNumber":"501-266-4142"}, +{"id":233,"firstName":"Gillan","lastName":"Baumann","street":"11 8th Alley","postalCode":"31190","city":"Atlanta","state":"GA","phoneNumber":"404-703-5154","email":"gbaumann6g@edublogs.org"}, +{"id":234,"firstName":"Brandtr","lastName":"Gadman","street":"5 Marquette Hill","postalCode":"32511","city":"Pensacola","state":"FL","phoneNumber":"850-834-0058","email":"bgadman6h@marriott.com"}, +{"id":235,"firstName":"Kenn","lastName":"Cage","street":"3759 Spohn Point","postalCode":"94126","city":"San Francisco","state":"CA","email":"kcage6i@earthlink.net"}, +{"id":236,"firstName":"Butch","lastName":"Causby","street":"02 Basil Crossing","postalCode":"10110","city":"New York City","state":"NY","phoneNumber":"212-190-1702","email":"bcausby6j@scribd.com"}, +{"id":237,"firstName":"Haleigh","lastName":"Parsonson","street":"8 Ruskin Trail","postalCode":"87201","city":"Albuquerque","state":"NM","phoneNumber":"505-987-1352"}, +{"id":238,"firstName":"Bartel","lastName":"Ruppeli","street":"7538 Red Cloud Center","postalCode":"37410","city":"Chattanooga","state":"TN","phoneNumber":"423-804-1016","email":"bruppeli6l@etsy.com"}, +{"id":239,"firstName":"Gretchen","lastName":"Le feaver","street":"7 Orin Way","postalCode":"98042","city":"Kent","state":"WA","phoneNumber":"253-205-3092","email":"glefeaver6m@mayoclinic.com"}, +{"id":240,"firstName":"Trumaine","lastName":"Dearden","street":"1 Vernon Trail","postalCode":"06127","city":"West Hartford","state":"CT","phoneNumber":"860-939-3865","email":"tdearden6n@goo.gl"}, +{"id":241,"firstName":"Aggie","lastName":"Dubs","street":"3601 Walton Trail","postalCode":"62764","city":"Springfield","state":"IL","phoneNumber":"217-834-6059","email":"adubs6o@cbsnews.com"}, +{"id":242,"firstName":"Shelly","lastName":"Skechley","street":"16 Morning Lane","postalCode":"60567","city":"Naperville","state":"IL","email":"sskechley6p@technorati.com"}, +{"id":243,"firstName":"Karin","lastName":"Fausch","street":"7532 Eggendart Way","postalCode":"19810","city":"Wilmington","state":"DE","phoneNumber":"302-548-2991"}, +{"id":244,"firstName":"Sal","lastName":"Harrow","street":"2632 Lien Way","postalCode":"33982","city":"Punta Gorda","state":"FL","phoneNumber":"941-904-5187","email":"sharrow6r@joomla.org"}, +{"id":245,"firstName":"Albie","lastName":"Strelitzki","street":"8436 Eggendart Terrace","postalCode":"49505","city":"Grand Rapids","state":"MI","email":"astrelitzki6s@google.com.br"}, +{"id":246,"firstName":"Augy","lastName":"Usherwood","street":"9078 Clemons Street","postalCode":"80915","city":"Colorado Springs","state":"CO","email":"ausherwood6t@wikimedia.org"}, +{"id":247,"firstName":"Solomon","lastName":"D'eathe","street":"778 Rockefeller Parkway","postalCode":"84199","city":"Salt Lake City","state":"UT"}, +{"id":248,"firstName":"Talya","lastName":"Joseff","street":"14 Graedel Court","postalCode":"99220","city":"Spokane","state":"WA","email":"tjoseff6v@amazon.de"}, +{"id":249,"firstName":"Anatol","lastName":"Self","street":"2 Stoughton Junction","postalCode":"85255","city":"Scottsdale","state":"AZ"}, +{"id":250,"firstName":"Elinore","lastName":"Bruhnke","street":"3 Bashford Alley","postalCode":"17105","city":"Harrisburg","state":"PA","email":"ebruhnke6x@usnews.com"}, +{"id":251,"firstName":"Stanfield","lastName":"Jagiello","street":"0804 Amoth Road","postalCode":"20067","city":"Washington","state":"DC"}, +{"id":252,"firstName":"Isak","lastName":"Venour","street":"04 Orin Court","postalCode":"78210","city":"San Antonio","state":"TX","email":"ivenour6z@springer.com"}, +{"id":253,"firstName":"Abigale","lastName":"Woolgar","street":"74 Porter Terrace","postalCode":"62705","city":"Springfield","state":"IL"}, +{"id":254,"firstName":"Phylys","lastName":"Casperri","street":"07 Delaware Street","postalCode":"33069","city":"Pompano Beach","state":"FL","phoneNumber":"954-224-4577"}, +{"id":255,"firstName":"Melania","lastName":"Fee","street":"194 Luster Point","postalCode":"70154","city":"New Orleans","state":"LA","phoneNumber":"504-168-6959","email":"mfee72@comsenz.com"}, +{"id":256,"firstName":"Joli","lastName":"Colquite","street":"9 Bayside Court","postalCode":"27425","city":"Greensboro","state":"NC","email":"jcolquite73@comcast.net"}, +{"id":257,"firstName":"Rahel","lastName":"Late","street":"2 Meadow Ridge Alley","postalCode":"32204","city":"Jacksonville","state":"FL"}, +{"id":258,"firstName":"Carny","lastName":"Fewell","street":"21826 Cardinal Pass","postalCode":"98140","city":"Seattle","state":"WA"}, +{"id":259,"firstName":"Lesly","lastName":"Vanyatin","street":"7730 South Court","postalCode":"25356","city":"Charleston","state":"WV","email":"lvanyatin76@histats.com"}, +{"id":260,"firstName":"Fianna","lastName":"Thomason","street":"2576 Holmberg Trail","postalCode":"27710","city":"Durham","state":"NC"}, +{"id":261,"firstName":"Bobinette","lastName":"Gowdridge","street":"6780 Superior Place","postalCode":"37605","city":"Johnson City","state":"TN","phoneNumber":"423-490-4990","email":"bgowdridge78@icio.us"}, +{"id":262,"firstName":"Karmen","lastName":"Megson","street":"34 Messerschmidt Point","postalCode":"97229","city":"Portland","state":"OR","email":"kmegson79@apache.org"}, +{"id":263,"firstName":"Thaddeus","lastName":"Padilla","street":"42 Corben Road","postalCode":"90010","city":"Los Angeles","state":"CA","phoneNumber":"213-659-3136","email":"tpadilla7a@hud.gov"}, +{"id":264,"firstName":"Hanna","lastName":"Baswall","street":"9 Old Shore Lane","postalCode":"53710","city":"Madison","state":"WI","email":"hbaswall7b@ezinearticles.com"}, +{"id":265,"firstName":"Tania","lastName":"McMorland","street":"4333 Commercial Point","postalCode":"45408","city":"Dayton","state":"OH"}, +{"id":266,"firstName":"Gifford","lastName":"Arne","street":"0 Drewry Point","postalCode":"24048","city":"Roanoke","state":"VA","email":"garne7d@samsung.com"}, +{"id":267,"firstName":"Tomasina","lastName":"Linch","street":"64992 Maple Wood Point","postalCode":"98447","city":"Tacoma","state":"WA","email":"tlinch7e@theglobeandmail.com"}, +{"id":268,"firstName":"Merrick","lastName":"Garvan","street":"7220 Melody Trail","postalCode":"90005","city":"Los Angeles","state":"CA","email":"mgarvan7f@mozilla.org"}, +{"id":269,"firstName":"Carmita","lastName":"Sailes","street":"3 Bay Lane","postalCode":"55428","city":"Minneapolis","state":"MN","email":"csailes7g@devhub.com"}, +{"id":270,"firstName":"Lesly","lastName":"Eslemont","street":"93302 Mcbride Terrace","postalCode":"19810","city":"Wilmington","state":"DE","email":"leslemont7h@wunderground.com"}, +{"id":271,"firstName":"Adelaida","lastName":"Keggins","street":"4 Birchwood Pass","postalCode":"97405","city":"Eugene","state":"OR","phoneNumber":"541-387-1319"}, +{"id":272,"firstName":"Peadar","lastName":"Forte","street":"1 Montana Center","postalCode":"32505","city":"Pensacola","state":"FL","email":"pforte7j@xing.com"}, +{"id":273,"firstName":"Godfrey","lastName":"Swatland","street":"477 Maple Wood Road","postalCode":"93034","city":"Oxnard","state":"CA","phoneNumber":"805-267-0614","email":"gswatland7k@photobucket.com"}, +{"id":274,"firstName":"Marten","lastName":"Jelleman","street":"57 Pennsylvania Plaza","postalCode":"20057","city":"Washington","state":"DC","email":"mjelleman7l@phoca.cz"}, +{"id":275,"firstName":"Sharity","lastName":"Keady","street":"753 Sauthoff Place","postalCode":"77505","city":"Pasadena","state":"TX"}, +{"id":276,"firstName":"Gabbie","lastName":"Pally","street":"45 Fallview Park","postalCode":"97255","city":"Portland","state":"OR","phoneNumber":"971-412-2293","email":"gpally7n@dyndns.org"}, +{"id":277,"firstName":"Betsy","lastName":"Rhelton","street":"9 Jackson Road","postalCode":"85040","city":"Phoenix","state":"AZ"}, +{"id":278,"firstName":"Patty","lastName":"Schooling","street":"4 Moulton Point","postalCode":"25705","city":"Huntington","state":"WV","phoneNumber":"304-908-8211","email":"pschooling7p@parallels.com"}, +{"id":279,"firstName":"Katlin","lastName":"O'Hallagan","street":"8418 Petterle Plaza","postalCode":"60636","city":"Chicago","state":"IL","email":"kohallagan7q@hao123.com"}, +{"id":280,"firstName":"Anne","lastName":"Wealleans","street":"3 Sachtjen Court","postalCode":"48609","city":"Saginaw","state":"MI"}, +{"id":281,"firstName":"Flory","lastName":"Pley","street":"6322 Golf View Court","postalCode":"19104","city":"Philadelphia","state":"PA"}, +{"id":282,"firstName":"Maryellen","lastName":"Baszkiewicz","street":"54165 Hanson Trail","postalCode":"93726","city":"Fresno","state":"CA","phoneNumber":"209-198-4916","email":"mbaszkiewicz7t@google.com.br"}, +{"id":283,"firstName":"Moyna","lastName":"Caddens","street":"17 Melrose Lane","postalCode":"11236","city":"Brooklyn","state":"NY","phoneNumber":"917-518-3987","email":"mcaddens7u@amazon.co.uk"}, +{"id":284,"firstName":"Lawton","lastName":"Ramiro","street":"2 Muir Park","postalCode":"48092","city":"Warren","state":"MI","phoneNumber":"810-472-5208","email":"lramiro7v@senate.gov"}, +{"id":285,"firstName":"Agnella","lastName":"Phelip","street":"24566 Colorado Pass","postalCode":"84145","city":"Salt Lake City","state":"UT","phoneNumber":"801-709-8696","email":"aphelip7w@woothemes.com"}, +{"id":286,"firstName":"Tracee","lastName":"Tighe","street":"41013 Cascade Lane","postalCode":"02142","city":"Cambridge","state":"MA"}, +{"id":287,"firstName":"Shelden","lastName":"Sowrey","street":"87 Glacier Hill Court","postalCode":"55557","city":"Young America","state":"MN","email":"ssowrey7y@sfgate.com"}, +{"id":288,"firstName":"Letizia","lastName":"Sallery","street":"65052 Shasta Court","postalCode":"44905","city":"Mansfield","state":"OH","phoneNumber":"419-752-9141"}, +{"id":289,"firstName":"Hilly","lastName":"Oyley","street":"7 Waywood Trail","postalCode":"30323","city":"Atlanta","state":"GA","email":"hoyley80@upenn.edu"}, +{"id":290,"firstName":"Sabra","lastName":"Grigoryev","street":"856 Michigan Trail","postalCode":"33705","city":"Saint Petersburg","state":"FL"}, +{"id":291,"firstName":"Nathanil","lastName":"Bodham","street":"536 Ridgeview Way","postalCode":"79984","city":"El Paso","state":"TX","email":"nbodham82@wikimedia.org"}, +{"id":292,"firstName":"Niven","lastName":"Hartzenberg","street":"5 Carpenter Hill","postalCode":"73167","city":"Oklahoma City","state":"OK","email":"nhartzenberg83@bandcamp.com"}, +{"id":293,"firstName":"Rachael","lastName":"Birdsall","street":"61484 Mendota Point","postalCode":"90410","city":"Santa Monica","state":"CA","email":"rbirdsall84@gmpg.org"}, +{"id":294,"firstName":"Gypsy","lastName":"Rallin","street":"4 Spohn Drive","postalCode":"77346","city":"Humble","state":"TX","phoneNumber":"713-508-2912","email":"grallin85@privacy.gov.au"}, +{"id":295,"firstName":"Skye","lastName":"Arsey","street":"49126 Maryland Lane","postalCode":"02119","city":"Boston","state":"MA"}, +{"id":296,"firstName":"Karalee","lastName":"Biddiss","street":"0327 Coleman Lane","postalCode":"10203","city":"New York City","state":"NY","email":"kbiddiss87@studiopress.com"}, +{"id":297,"firstName":"Russ","lastName":"O' Mahony","street":"7831 Caliangt Avenue","postalCode":"37665","city":"Kingsport","state":"TN","phoneNumber":"423-292-1177","email":"romahony88@umich.edu"}, +{"id":298,"firstName":"Gerianne","lastName":"Morfey","street":"1 Jay Hill","postalCode":"97229","city":"Portland","state":"OR","email":"gmorfey89@techcrunch.com"}, +{"id":299,"firstName":"Griz","lastName":"Vellacott","street":"44 Parkside Court","postalCode":"64149","city":"Kansas City","state":"MO","phoneNumber":"816-120-1692"}, +{"id":300,"firstName":"Parker","lastName":"Mantz","street":"3 Arkansas Lane","postalCode":"90005","city":"Los Angeles","state":"CA","email":"pmantz8b@va.gov"}, +{"id":301,"firstName":"Drugi","lastName":"Acaster","street":"426 Hagan Park","postalCode":"20599","city":"Washington","state":"DC","email":"dacaster8c@ihg.com"}, +{"id":302,"firstName":"Peder","lastName":"Monget","street":"9 Wayridge Parkway","postalCode":"92862","city":"Orange","state":"CA","phoneNumber":"714-532-0867","email":"pmonget8d@biblegateway.com"}, +{"id":303,"firstName":"Zilvia","lastName":"Grocutt","street":"1 Stuart Circle","postalCode":"34642","city":"Seminole","state":"FL"}, +{"id":304,"firstName":"Clyve","lastName":"Gunby","street":"75 Dunning Junction","postalCode":"79977","city":"El Paso","state":"TX","email":"cgunby8f@microsoft.com"}, +{"id":305,"firstName":"Zacharias","lastName":"Tomasini","street":"48488 Thackeray Way","postalCode":"40210","city":"Louisville","state":"KY","email":"ztomasini8g@harvard.edu"}, +{"id":306,"firstName":"Ferdinand","lastName":"McGuinley","street":"30366 Kipling Drive","postalCode":"23208","city":"Richmond","state":"VA","email":"fmcguinley8h@archive.org"}, +{"id":307,"firstName":"Ebonee","lastName":"Brumfitt","street":"18765 Division Terrace","postalCode":"30033","city":"Decatur","state":"GA","phoneNumber":"404-684-8364","email":"ebrumfitt8i@sourceforge.net"}, +{"id":308,"firstName":"Christy","lastName":"Cuniam","street":"6 Homewood Road","postalCode":"78744","city":"Austin","state":"TX","phoneNumber":"361-677-9833","email":"ccuniam8j@51.la"}, +{"id":309,"firstName":"Emelen","lastName":"Casin","street":"91 Thompson Plaza","postalCode":"33954","city":"Port Charlotte","state":"FL","email":"ecasin8k@webnode.com"}, +{"id":310,"firstName":"Babara","lastName":"Robberecht","street":"603 Oak Terrace","postalCode":"37450","city":"Chattanooga","state":"TN","email":"brobberecht8l@cargocollective.com"}, +{"id":311,"firstName":"Cesar","lastName":"Whitecross","street":"024 Oxford Junction","postalCode":"20226","city":"Washington","state":"DC","phoneNumber":"202-772-2936"}, +{"id":312,"firstName":"Frieda","lastName":"Sliman","street":"4 Beilfuss Hill","postalCode":"23324","city":"Chesapeake","state":"VA","email":"fsliman8n@bigcartel.com"}, +{"id":313,"firstName":"Dylan","lastName":"Paige","street":"26 Gina Parkway","postalCode":"55448","city":"Minneapolis","state":"MN","email":"dpaige8o@trellian.com"}, +{"id":314,"firstName":"Waring","lastName":"Labon","street":"2843 Spenser Center","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-274-0766","email":"wlabon8p@ucla.edu"}, +{"id":315,"firstName":"Conny","lastName":"Duinkerk","street":"65 Lunder Circle","postalCode":"45426","city":"Dayton","state":"OH","email":"cduinkerk8q@economist.com"}, +{"id":316,"firstName":"Nessie","lastName":"Stucksbury","street":"91449 Browning Drive","postalCode":"25705","city":"Huntington","state":"WV","phoneNumber":"304-182-0766"}, +{"id":317,"firstName":"Corrine","lastName":"Kohlert","street":"00706 Carioca Plaza","postalCode":"45223","city":"Cincinnati","state":"OH","email":"ckohlert8s@wunderground.com"}, +{"id":318,"firstName":"Horatio","lastName":"Greengrass","street":"0 Cascade Park","postalCode":"79905","city":"El Paso","state":"TX","email":"hgreengrass8t@ameblo.jp"}, +{"id":319,"firstName":"Jana","lastName":"McLae","street":"919 Esch Place","postalCode":"55428","city":"Minneapolis","state":"MN","email":"jmclae8u@nytimes.com"}, +{"id":320,"firstName":"Maressa","lastName":"Rehor","street":"55 Talisman Junction","postalCode":"90505","city":"Torrance","state":"CA","email":"mrehor8v@vinaora.com"}, +{"id":321,"firstName":"Filide","lastName":"Riehm","street":"0 Karstens Lane","postalCode":"95054","city":"Santa Clara","state":"CA"}, +{"id":322,"firstName":"Bunnie","lastName":"Mumbey","street":"9369 Bayside Circle","postalCode":"46216","city":"Indianapolis","state":"IN","email":"bmumbey8x@scribd.com"}, +{"id":323,"firstName":"Maxi","lastName":"Jentgens","street":"2970 Rowland Circle","postalCode":"84189","city":"Salt Lake City","state":"UT","phoneNumber":"801-423-8854","email":"mjentgens8y@ihg.com"}, +{"id":324,"firstName":"Florri","lastName":"Okenden","street":"2180 Cody Point","postalCode":"70187","city":"New Orleans","state":"LA","phoneNumber":"504-913-1989","email":"fokenden8z@networksolutions.com"}, +{"id":325,"firstName":"Imogen","lastName":"Grisard","street":"8 Westerfield Avenue","postalCode":"92668","city":"Orange","state":"CA","email":"igrisard90@tamu.edu"}, +{"id":326,"firstName":"Edwina","lastName":"Montes","street":"92 Carpenter Avenue","postalCode":"97216","city":"Portland","state":"OR","phoneNumber":"503-544-7296","email":"emontes91@reference.com"}, +{"id":327,"firstName":"Renelle","lastName":"MacCambridge","street":"77 Talmadge Circle","postalCode":"08638","city":"Trenton","state":"NJ","phoneNumber":"609-150-9438","email":"rmaccambridge92@springer.com"}, +{"id":328,"firstName":"Sterne","lastName":"Taberner","street":"642 6th Terrace","postalCode":"10120","city":"New York City","state":"NY","email":"staberner93@miibeian.gov.cn"}, +{"id":329,"firstName":"Garvy","lastName":"Pankethman","street":"8618 Kennedy Terrace","postalCode":"79405","city":"Lubbock","state":"TX","phoneNumber":"806-470-8784","email":"gpankethman94@free.fr"}, +{"id":330,"firstName":"Nathanil","lastName":"Holston","street":"27247 Eliot Avenue","postalCode":"31190","city":"Atlanta","state":"GA","email":"nholston95@drupal.org"}, +{"id":331,"firstName":"Caresse","lastName":"Kilty","street":"514 Manufacturers Pass","postalCode":"76205","city":"Denton","state":"TX","email":"ckilty96@umich.edu"}, +{"id":332,"firstName":"Arlinda","lastName":"Brenstuhl","street":"2 Sunnyside Avenue","postalCode":"55470","city":"Minneapolis","state":"MN","email":"abrenstuhl97@wisc.edu"}, +{"id":333,"firstName":"Darcy","lastName":"Dunne","street":"3 Badeau Park","postalCode":"91328","city":"Northridge","state":"CA"}, +{"id":334,"firstName":"Malva","lastName":"Grew","street":"2242 Huxley Hill","postalCode":"68510","city":"Lincoln","state":"NE","email":"mgrew99@com.com"}, +{"id":335,"firstName":"Sukey","lastName":"Winspur","street":"475 Melvin Way","postalCode":"68524","city":"Lincoln","state":"NE","phoneNumber":"402-816-9401"}, +{"id":336,"firstName":"Beth","lastName":"O'Dougherty","street":"450 Eastlawn Park","postalCode":"93591","city":"Palmdale","state":"CA","phoneNumber":"661-845-8781"}, +{"id":337,"firstName":"Cortney","lastName":"Meers","street":"9 Chive Drive","postalCode":"93762","city":"Fresno","state":"CA","email":"cmeers9c@diigo.com"}, +{"id":338,"firstName":"Geralda","lastName":"Brocket","street":"0686 La Follette Avenue","postalCode":"80126","city":"Littleton","state":"CO","phoneNumber":"720-641-1371","email":"gbrocket9d@youku.com"}, +{"id":339,"firstName":"Lishe","lastName":"Maliphant","street":"5 Erie Plaza","postalCode":"63169","city":"Saint Louis","state":"MO","email":"lmaliphant9e@sfgate.com"}, +{"id":340,"firstName":"Brod","lastName":"Dobrovsky","street":"9 Gateway Park","postalCode":"79405","city":"Lubbock","state":"TX"}, +{"id":341,"firstName":"Philippe","lastName":"Argile","street":"4 Red Cloud Plaza","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-633-5495"}, +{"id":342,"firstName":"Sadye","lastName":"Sally","street":"07 Mendota Terrace","postalCode":"75507","city":"Texarkana","state":"TX","email":"ssally9h@e-recht24.de"}, +{"id":343,"firstName":"Napoleon","lastName":"Piggott","street":"3968 Roxbury Point","postalCode":"35905","city":"Gadsden","state":"AL","email":"npiggott9i@cnbc.com"}, +{"id":344,"firstName":"Jere","lastName":"Larn","street":"5086 Dahle Crossing","postalCode":"39534","city":"Biloxi","state":"MS","email":"jlarn9j@twitter.com"}, +{"id":345,"firstName":"Bevon","lastName":"Stidson","street":"7 Armistice Court","postalCode":"23436","city":"Suffolk","state":"VA","email":"bstidson9k@alexa.com"}, +{"id":346,"firstName":"Drugi","lastName":"Ewbach","street":"6032 5th Avenue","postalCode":"02208","city":"Boston","state":"MA","email":"dewbach9l@techcrunch.com"}, +{"id":347,"firstName":"Milka","lastName":"Caizley","street":"7 Anderson Junction","postalCode":"37228","city":"Nashville","state":"TN","phoneNumber":"615-305-6985","email":"mcaizley9m@cyberchimps.com"}, +{"id":348,"firstName":"Wilton","lastName":"Biagi","street":"80833 6th Crossing","postalCode":"40215","city":"Louisville","state":"KY","email":"wbiagi9n@vinaora.com"}, +{"id":349,"firstName":"Dilly","lastName":"Spradbrow","street":"5 Harbort Street","postalCode":"45419","city":"Dayton","state":"OH","email":"dspradbrow9o@marketwatch.com"}, +{"id":350,"firstName":"Gan","lastName":"Gookey","street":"8387 Bultman Terrace","postalCode":"75241","city":"Dallas","state":"TX"}, +{"id":351,"firstName":"Nanon","lastName":"Mulrenan","street":"47257 Reindahl Drive","postalCode":"22119","city":"Merrifield","state":"VA","phoneNumber":"571-637-8154","email":"nmulrenan9q@godaddy.com"}, +{"id":352,"firstName":"Frederique","lastName":"Watkiss","street":"61 Heath Pass","postalCode":"70124","city":"New Orleans","state":"LA","phoneNumber":"504-891-7051"}, +{"id":353,"firstName":"Sinclare","lastName":"MacCurlye","street":"514 Meadow Ridge Place","postalCode":"97240","city":"Portland","state":"OR","phoneNumber":"971-190-5174","email":"smaccurlye9s@google.ru"}, +{"id":354,"firstName":"Jessie","lastName":"Newlands","street":"80509 Northland Pass","postalCode":"33111","city":"Miami","state":"FL","phoneNumber":"786-557-9193"}, +{"id":355,"firstName":"Jamaal","lastName":"Molder","street":"90 Mcbride Trail","postalCode":"78764","city":"Austin","state":"TX","phoneNumber":"512-320-8728"}, +{"id":356,"firstName":"Benni","lastName":"Sherel","street":"7 Springs Road","postalCode":"15235","city":"Pittsburgh","state":"PA","email":"bsherel9v@hostgator.com"}, +{"id":357,"firstName":"Dene","lastName":"Brigge","street":"8560 Sutteridge Parkway","postalCode":"32412","city":"Panama City","state":"FL"}, +{"id":358,"firstName":"Timoteo","lastName":"Iban","street":"52858 Oak Valley Hill","postalCode":"93750","city":"Fresno","state":"CA","email":"tiban9x@europa.eu"}, +{"id":359,"firstName":"Dar","lastName":"Quillinane","street":"2 Carberry Junction","postalCode":"66276","city":"Shawnee Mission","state":"KS","phoneNumber":"913-977-7562","email":"dquillinane9y@msn.com"}, +{"id":360,"firstName":"Claudian","lastName":"Tinson","street":"445 Novick Avenue","postalCode":"79968","city":"El Paso","state":"TX","email":"ctinson9z@google.cn"}, +{"id":361,"firstName":"Clarice","lastName":"Deneve","street":"94 Meadow Ridge Road","postalCode":"37131","city":"Murfreesboro","state":"TN","phoneNumber":"615-780-7667"}, +{"id":362,"firstName":"Hilary","lastName":"Bithell","street":"20 Russell Trail","postalCode":"81010","city":"Pueblo","state":"CO","email":"hbithella1@list-manage.com"}, +{"id":363,"firstName":"Mathew","lastName":"Scrivin","street":"4 Elgar Point","postalCode":"90081","city":"Los Angeles","state":"CA","phoneNumber":"213-898-6650","email":"mscrivina2@about.me"}, +{"id":364,"firstName":"Idell","lastName":"Rambadt","street":"6 Cherokee Hill","postalCode":"90840","city":"Long Beach","state":"CA","email":"irambadta3@ustream.tv"}, +{"id":365,"firstName":"Nealon","lastName":"Schoolfield","street":"1 Northland Point","postalCode":"74133","city":"Tulsa","state":"OK"}, +{"id":366,"firstName":"Gregorius","lastName":"Bartot","street":"24636 Eagle Crest Crossing","postalCode":"32215","city":"Jacksonville","state":"FL","email":"gbartota5@blogger.com"}, +{"id":367,"firstName":"Inessa","lastName":"Hullin","street":"559 Bartillon Trail","postalCode":"33142","city":"Miami","state":"FL","phoneNumber":"305-381-6621","email":"ihullina6@pcworld.com"}, +{"id":368,"firstName":"Andie","lastName":"Bampford","street":"5204 Meadow Valley Street","postalCode":"92825","city":"Anaheim","state":"CA","email":"abampforda7@sun.com"}, +{"id":369,"firstName":"Duane","lastName":"MacShirrie","street":"5077 Kings Parkway","postalCode":"92725","city":"Santa Ana","state":"CA","email":"dmacshirriea8@rambler.ru"}, +{"id":370,"firstName":"Sydel","lastName":"Deerr","street":"1 Commercial Road","postalCode":"30356","city":"Atlanta","state":"GA","phoneNumber":"404-209-0194","email":"sdeerra9@phpbb.com"}, +{"id":371,"firstName":"Mel","lastName":"Miles","street":"28164 Melody Plaza","postalCode":"90847","city":"Long Beach","state":"CA","phoneNumber":"562-932-1172"}, +{"id":372,"firstName":"Jone","lastName":"Drinkel","street":"946 Reindahl Point","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-547-0653"}, +{"id":373,"firstName":"Marcellus","lastName":"MacGilmartin","street":"10568 Westerfield Way","postalCode":"32868","city":"Orlando","state":"FL","phoneNumber":"407-874-6188","email":"mmacgilmartinac@fotki.com"}, +{"id":374,"firstName":"Bret","lastName":"Hardan","street":"9 Hayes Crossing","postalCode":"32309","city":"Tallahassee","state":"FL","email":"bhardanad@mit.edu"}, +{"id":375,"firstName":"Heddie","lastName":"Cesaric","street":"502 Cody Crossing","postalCode":"95397","city":"Modesto","state":"CA"}, +{"id":376,"firstName":"Tansy","lastName":"Maeer","street":"526 Messerschmidt Court","postalCode":"94089","city":"Sunnyvale","state":"CA","email":"tmaeeraf@arizona.edu"}, +{"id":377,"firstName":"Waverly","lastName":"West-Frimley","street":"02 Quincy Trail","postalCode":"20575","city":"Washington","state":"DC","phoneNumber":"202-493-3304","email":"wwestfrimleyag@ft.com"}, +{"id":378,"firstName":"Dido","lastName":"de Clercq","street":"7 Norway Maple Center","postalCode":"84125","city":"Salt Lake City","state":"UT","email":"ddeclercqah@trellian.com"}, +{"id":379,"firstName":"Vic","lastName":"Samuels","street":"2 Kipling Drive","postalCode":"31190","city":"Atlanta","state":"GA","email":"vsamuelsai@goo.gl"}, +{"id":380,"firstName":"Jeno","lastName":"Freiburger","street":"431 Golden Leaf Parkway","postalCode":"32610","city":"Gainesville","state":"FL","email":"jfreiburgeraj@theguardian.com"}, +{"id":381,"firstName":"Christine","lastName":"Basketter","street":"4 Lotheville Terrace","postalCode":"39305","city":"Meridian","state":"MS","phoneNumber":"601-702-1546"}, +{"id":382,"firstName":"Karry","lastName":"Corsan","street":"09189 Lakeland Point","postalCode":"27409","city":"Greensboro","state":"NC","phoneNumber":"336-445-0006","email":"kcorsanal@usgs.gov"}, +{"id":383,"firstName":"Barri","lastName":"Brinsden","street":"53 Shelley Drive","postalCode":"35225","city":"Birmingham","state":"AL","email":"bbrinsdenam@1und1.de"}, +{"id":384,"firstName":"Hyacintha","lastName":"Boddam","street":"45 Sugar Circle","postalCode":"10160","city":"New York City","state":"NY","phoneNumber":"212-794-6062"}, +{"id":385,"firstName":"Brande","lastName":"Remnant","street":"283 Stone Corner Road","postalCode":"31904","city":"Columbus","state":"GA","phoneNumber":"706-211-4851","email":"bremnantao@people.com.cn"}, +{"id":386,"firstName":"Tally","lastName":"Bygraves","street":"54833 Northport Pass","postalCode":"85072","city":"Phoenix","state":"AZ","email":"tbygravesap@jigsy.com"}, +{"id":387,"firstName":"Garfield","lastName":"Pressnell","street":"63077 Hudson Court","postalCode":"30061","city":"Marietta","state":"GA","email":"gpressnellaq@archive.org"}, +{"id":388,"firstName":"Romonda","lastName":"Stiggles","street":"17 Russell Parkway","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-600-9676"}, +{"id":389,"firstName":"Dedie","lastName":"Ralling","street":"8 Judy Plaza","postalCode":"94137","city":"San Francisco","state":"CA","email":"drallingas@wikia.com"}, +{"id":390,"firstName":"Maddi","lastName":"Cornau","street":"5 Oriole Way","postalCode":"92105","city":"San Diego","state":"CA","phoneNumber":"619-388-6359","email":"mcornauat@adobe.com"}, +{"id":391,"firstName":"Zeke","lastName":"Jennery","street":"65332 Sommers Avenue","postalCode":"48206","city":"Detroit","state":"MI","email":"zjenneryau@elegantthemes.com"}, +{"id":392,"firstName":"Danya","lastName":"Fairlaw","street":"343 Logan Alley","postalCode":"33111","city":"Miami","state":"FL","email":"dfairlawav@irs.gov"}, +{"id":393,"firstName":"Rabi","lastName":"Petheridge","street":"7 Monica Alley","postalCode":"64054","city":"Independence","state":"MO","phoneNumber":"816-501-9452"}, +{"id":394,"firstName":"Ebba","lastName":"Skellen","street":"2655 Iowa Terrace","postalCode":"63150","city":"Saint Louis","state":"MO","phoneNumber":"314-695-7831","email":"eskellenax@nbcnews.com"}, +{"id":395,"firstName":"Marie-ann","lastName":"Glaysher","street":"4 Lakewood Hill","postalCode":"12247","city":"Albany","state":"NY","phoneNumber":"518-634-2425"}, +{"id":396,"firstName":"Arne","lastName":"Quincey","street":"162 Redwing Way","postalCode":"83711","city":"Boise","state":"ID"}, +{"id":397,"firstName":"Clarita","lastName":"Okroy","street":"05 Delaware Way","postalCode":"45218","city":"Cincinnati","state":"OH","email":"cokroyb0@stumbleupon.com"}, +{"id":398,"firstName":"Renault","lastName":"Weighell","street":"498 Dovetail Place","postalCode":"79710","city":"Midland","state":"TX","phoneNumber":"432-955-1408"}, +{"id":399,"firstName":"Roderich","lastName":"Mankor","street":"07 Dayton Way","postalCode":"92160","city":"San Diego","state":"CA"}, +{"id":400,"firstName":"Arv","lastName":"Sunnex","street":"89 Ronald Regan Terrace","postalCode":"91109","city":"Pasadena","state":"CA","email":"asunnexb3@vkontakte.ru"}, +{"id":401,"firstName":"Sonia","lastName":"Cowperthwaite","street":"77 Dennis Point","postalCode":"16550","city":"Erie","state":"PA"}, +{"id":402,"firstName":"Buddie","lastName":"Goscomb","street":"85675 Eastlawn Pass","postalCode":"20535","city":"Washington","state":"DC"}, +{"id":403,"firstName":"Brandi","lastName":"Swaine","street":"39961 Del Mar Lane","postalCode":"39705","city":"Columbus","state":"MS","phoneNumber":"662-306-2164","email":"bswaineb6@miibeian.gov.cn"}, +{"id":404,"firstName":"Jenny","lastName":"Cabbell","street":"743 Fordem Center","postalCode":"78285","city":"San Antonio","state":"TX","phoneNumber":"210-491-9874","email":"jcabbellb7@techcrunch.com"}, +{"id":405,"firstName":"Vincent","lastName":"People","street":"83 Tennessee Way","postalCode":"77293","city":"Houston","state":"TX","phoneNumber":"281-261-1928","email":"vpeopleb8@github.io"}, +{"id":406,"firstName":"Reinald","lastName":"Roles","street":"2 Division Road","postalCode":"53785","city":"Madison","state":"WI","phoneNumber":"608-568-7958","email":"rrolesb9@google.fr"}, +{"id":407,"firstName":"Kale","lastName":"Wanek","street":"7 Crescent Oaks Terrace","postalCode":"46852","city":"Fort Wayne","state":"IN","phoneNumber":"260-844-9669","email":"kwanekba@scribd.com"}, +{"id":408,"firstName":"Charisse","lastName":"Perse","street":"94449 Gateway Street","postalCode":"91117","city":"Pasadena","state":"CA","email":"cpersebb@ycombinator.com"}, +{"id":409,"firstName":"Konstantin","lastName":"Aslum","street":"08 Kings Trail","postalCode":"80328","city":"Boulder","state":"CO","email":"kaslumbc@opera.com"}, +{"id":410,"firstName":"Tyson","lastName":"O'Hartigan","street":"75122 Crowley Place","postalCode":"95173","city":"San Jose","state":"CA","phoneNumber":"408-879-0901","email":"tohartiganbd@devhub.com"}, +{"id":411,"firstName":"Fallon","lastName":"Haysman","street":"477 High Crossing Place","postalCode":"23293","city":"Richmond","state":"VA"}, +{"id":412,"firstName":"Svend","lastName":"Scarlet","street":"2856 Merrick Circle","postalCode":"90087","city":"Los Angeles","state":"CA","email":"sscarletbf@clickbank.net"}, +{"id":413,"firstName":"Gabey","lastName":"Colter","street":"7 2nd Alley","postalCode":"90610","city":"Whittier","state":"CA"}, +{"id":414,"firstName":"Hart","lastName":"Densell","street":"2687 Elka Alley","postalCode":"99599","city":"Anchorage","state":"AK","phoneNumber":"907-286-6079"}, +{"id":415,"firstName":"Claresta","lastName":"Folger","street":"5 Amoth Alley","postalCode":"27116","city":"Winston Salem","state":"NC"}, +{"id":416,"firstName":"Rica","lastName":"Lightowlers","street":"54303 Mayer Drive","postalCode":"61825","city":"Champaign","state":"IL","email":"rlightowlersbj@so-net.ne.jp"}, +{"id":417,"firstName":"Paula","lastName":"Treadaway","street":"8 Anniversary Road","postalCode":"20456","city":"Washington","state":"DC"}, +{"id":418,"firstName":"Francoise","lastName":"Gooderick","street":"13 Knutson Lane","postalCode":"33325","city":"Fort Lauderdale","state":"FL","email":"fgooderickbl@dedecms.com"}, +{"id":419,"firstName":"Ferdy","lastName":"Nannizzi","street":"578 Esker Trail","postalCode":"25321","city":"Charleston","state":"WV","email":"fnannizzibm@rambler.ru"}, +{"id":420,"firstName":"Dody","lastName":"Gettone","street":"9 Veith Court","postalCode":"62711","city":"Springfield","state":"IL"}, +{"id":421,"firstName":"Ronna","lastName":"Godleman","street":"6 Jenna Trail","postalCode":"22301","city":"Alexandria","state":"VA","email":"rgodlemanbo@hexun.com"}, +{"id":422,"firstName":"Adey","lastName":"Waith","street":"2 Mayer Avenue","postalCode":"12325","city":"Schenectady","state":"NY"}, +{"id":423,"firstName":"Stanislaw","lastName":"Garahan","street":"660 Merry Avenue","postalCode":"62723","city":"Springfield","state":"IL","phoneNumber":"217-587-6734"}, +{"id":424,"firstName":"Westley","lastName":"Knowles","street":"67430 Lakeland Circle","postalCode":"53263","city":"Milwaukee","state":"WI","email":"wknowlesbr@msu.edu"}, +{"id":425,"firstName":"Dion","lastName":"Jamson","street":"696 Birchwood Circle","postalCode":"80015","city":"Aurora","state":"CO","phoneNumber":"720-486-4494"}, +{"id":426,"firstName":"Glynis","lastName":"Bourhill","street":"091 Harper Park","postalCode":"40250","city":"Louisville","state":"KY"}, +{"id":427,"firstName":"Massimo","lastName":"Briand","street":"37 Northview Junction","postalCode":"75507","city":"Texarkana","state":"TX","email":"mbriandbu@etsy.com"}, +{"id":428,"firstName":"Tremayne","lastName":"Cadore","street":"6721 Anthes Point","postalCode":"94605","city":"Oakland","state":"CA","email":"tcadorebv@mozilla.com"}, +{"id":429,"firstName":"Lea","lastName":"Wildman","street":"52 Dixon Point","postalCode":"50310","city":"Des Moines","state":"IA","phoneNumber":"515-536-2096"}, +{"id":430,"firstName":"Ambur","lastName":"Oxlade","street":"356 Porter Center","postalCode":"44485","city":"Warren","state":"OH"}, +{"id":431,"firstName":"Jyoti","lastName":"Gillet","street":"13 Del Mar Parkway","postalCode":"81505","city":"Grand Junction","state":"CO","phoneNumber":"970-598-0357"}, +{"id":432,"firstName":"Sascha","lastName":"Stanyan","street":"77289 Blue Bill Park Alley","postalCode":"06120","city":"Hartford","state":"CT","email":"sstanyanbz@geocities.jp"}, +{"id":433,"firstName":"Spenser","lastName":"Harry","street":"2021 Oak Place","postalCode":"32835","city":"Orlando","state":"FL","email":"sharryc0@privacy.gov.au"}, +{"id":434,"firstName":"Clim","lastName":"Penrose","street":"8 Warrior Road","postalCode":"15255","city":"Pittsburgh","state":"PA","email":"cpenrosec1@blogtalkradio.com"}, +{"id":435,"firstName":"Jewell","lastName":"McKinnon","street":"4 Delladonna Street","postalCode":"36114","city":"Montgomery","state":"AL","email":"jmckinnonc2@tinypic.com"}, +{"id":436,"firstName":"Estrellita","lastName":"Amburgy","street":"5538 Tennessee Plaza","postalCode":"17121","city":"Harrisburg","state":"PA","phoneNumber":"717-274-8930","email":"eamburgyc3@forbes.com"}, +{"id":437,"firstName":"Sarah","lastName":"Fears","street":"61 Springs Park","postalCode":"93034","city":"Oxnard","state":"CA","email":"sfearsc4@wisc.edu"}, +{"id":438,"firstName":"Nixie","lastName":"Peddie","street":"7 Armistice Way","postalCode":"10155","city":"New York City","state":"NY","email":"npeddiec5@free.fr"}, +{"id":439,"firstName":"Ardisj","lastName":"Rohmer","street":"726 Crowley Point","postalCode":"93399","city":"Bakersfield","state":"CA","email":"arohmerc6@google.nl"}, +{"id":440,"firstName":"Wallie","lastName":"Johanssen","street":"9555 Jana Park","postalCode":"28410","city":"Wilmington","state":"NC","phoneNumber":"910-160-4520","email":"wjohanssenc7@boston.com"}, +{"id":441,"firstName":"Allan","lastName":"Jodlkowski","street":"31585 Kedzie Park","postalCode":"89150","city":"Las Vegas","state":"NV","phoneNumber":"702-782-3289","email":"ajodlkowskic8@sogou.com"}, +{"id":442,"firstName":"Harris","lastName":"Cadden","street":"96829 Fieldstone Park","postalCode":"16565","city":"Erie","state":"PA","phoneNumber":"814-745-1099"}, +{"id":443,"firstName":"Nigel","lastName":"Girardengo","street":"24703 Red Cloud Road","postalCode":"90310","city":"Inglewood","state":"CA","email":"ngirardengoca@ow.ly"}, +{"id":444,"firstName":"Aila","lastName":"Tinniswood","street":"62812 Stephen Parkway","postalCode":"13205","city":"Syracuse","state":"NY","phoneNumber":"315-847-2259","email":"atinniswoodcb@google.com.br"}, +{"id":445,"firstName":"Genni","lastName":"Geockle","street":"81 Bobwhite Plaza","postalCode":"93721","city":"Fresno","state":"CA","email":"ggeocklecc@furl.net"}, +{"id":446,"firstName":"Madison","lastName":"Brikner","street":"166 Coolidge Trail","postalCode":"07208","city":"Elizabeth","state":"NJ","email":"mbriknercd@myspace.com"}, +{"id":447,"firstName":"Akim","lastName":"Gotthard.sf","street":"0017 Heffernan Parkway","postalCode":"71914","city":"Hot Springs National Park","state":"AR","email":"agotthardsfce@google.com.au"}, +{"id":448,"firstName":"Andria","lastName":"Cardello","street":"1089 Stang Road","postalCode":"96835","city":"Honolulu","state":"HI","phoneNumber":"808-372-6528"}, +{"id":449,"firstName":"Laureen","lastName":"Crawshaw","street":"13 Manitowish Avenue","postalCode":"23504","city":"Norfolk","state":"VA","phoneNumber":"757-220-4043"}, +{"id":450,"firstName":"Henderson","lastName":"Parmley","street":"3408 Superior Street","postalCode":"28410","city":"Wilmington","state":"NC","email":"hparmleych@diigo.com"}, +{"id":451,"firstName":"Henri","lastName":"Arnley","street":"54 Knutson Park","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"718-365-7389"}, +{"id":452,"firstName":"Phil","lastName":"Trunkfield","street":"07 Arizona Way","postalCode":"85030","city":"Phoenix","state":"AZ","email":"ptrunkfieldcj@cisco.com"}, +{"id":453,"firstName":"Chery","lastName":"Nangle","street":"03 Merrick Way","postalCode":"88569","city":"El Paso","state":"TX","phoneNumber":"915-959-5535","email":"cnangleck@tumblr.com"}, +{"id":454,"firstName":"Leora","lastName":"Fields","street":"0260 Eastlawn Lane","postalCode":"85311","city":"Glendale","state":"AZ","email":"lfieldscl@nyu.edu"}, +{"id":455,"firstName":"Ronnica","lastName":"Pocknoll","street":"786 Hovde Plaza","postalCode":"78410","city":"Corpus Christi","state":"TX","email":"rpocknollcm@unesco.org"}, +{"id":456,"firstName":"Valida","lastName":"Romayn","street":"1108 Hudson Drive","postalCode":"34615","city":"Clearwater","state":"FL","email":"vromayncn@usatoday.com"}, +{"id":457,"firstName":"Randee","lastName":"Strowther","street":"441 Cordelia Point","postalCode":"27710","city":"Durham","state":"NC","phoneNumber":"919-463-1516","email":"rstrowtherco@trellian.com"}, +{"id":458,"firstName":"Ansell","lastName":"Blacklock","street":"9393 Kedzie Point","postalCode":"75358","city":"Dallas","state":"TX","phoneNumber":"214-949-3912"}, +{"id":459,"firstName":"Bailie","lastName":"Wing","street":"79459 Buhler Way","postalCode":"15279","city":"Pittsburgh","state":"PA","phoneNumber":"412-431-5446"}, +{"id":460,"firstName":"Leesa","lastName":"Wellbeloved","street":"4553 Dakota Circle","postalCode":"40215","city":"Louisville","state":"KY","phoneNumber":"502-145-8496","email":"lwellbelovedcr@go.com"}, +{"id":461,"firstName":"Sarge","lastName":"Tocknell","street":"9884 North Alley","postalCode":"80249","city":"Denver","state":"CO","phoneNumber":"303-603-8315","email":"stocknellcs@artisteer.com"}, +{"id":462,"firstName":"Loralyn","lastName":"Grimolbie","street":"3620 Clyde Gallagher Junction","postalCode":"91103","city":"Pasadena","state":"CA","email":"lgrimolbiect@purevolume.com"}, +{"id":463,"firstName":"Ki","lastName":"Youdell","street":"3 Gina Center","postalCode":"81005","city":"Pueblo","state":"CO"}, +{"id":464,"firstName":"Katerine","lastName":"Herreros","street":"70 Westend Place","postalCode":"57105","city":"Sioux Falls","state":"SD"}, +{"id":465,"firstName":"Frasquito","lastName":"Nockolds","street":"21 Dwight Park","postalCode":"11236","city":"Brooklyn","state":"NY","phoneNumber":"917-761-0549"}, +{"id":466,"firstName":"Krystalle","lastName":"Brierly","street":"7797 Forest Dale Lane","postalCode":"90410","city":"Santa Monica","state":"CA","email":"kbrierlycx@simplemachines.org"}, +{"id":467,"firstName":"Tobin","lastName":"Guillford","street":"501 Messerschmidt Alley","postalCode":"98195","city":"Seattle","state":"WA","phoneNumber":"206-862-7413","email":"tguillfordcy@fastcompany.com"}, +{"id":468,"firstName":"Lorita","lastName":"Sikorski","street":"83 Corscot Junction","postalCode":"44905","city":"Mansfield","state":"OH","phoneNumber":"419-278-2324","email":"lsikorskicz@intel.com"}, +{"id":469,"firstName":"Hermon","lastName":"Chomley","street":"696 Talisman Lane","postalCode":"35290","city":"Birmingham","state":"AL"}, +{"id":470,"firstName":"Karolina","lastName":"Andrault","street":"49738 Maple Wood Place","postalCode":"99709","city":"Fairbanks","state":"AK","phoneNumber":"907-337-1698","email":"kandraultd1@bloglines.com"}, +{"id":471,"firstName":"Lev","lastName":"Pankhurst.","street":"442 Pennsylvania Crossing","postalCode":"23605","city":"Newport News","state":"VA","phoneNumber":"757-832-3631"}, +{"id":472,"firstName":"Bianca","lastName":"Garfath","street":"7 Forest Run Center","postalCode":"71914","city":"Hot Springs National Park","state":"AR","email":"bgarfathd3@youku.com"}, +{"id":473,"firstName":"Walden","lastName":"Van der Linde","street":"6 Namekagon Parkway","postalCode":"70187","city":"New Orleans","state":"LA","email":"wvanderlinded4@netscape.com"}, +{"id":474,"firstName":"Alexandra","lastName":"Vasyukhin","street":"471 School Alley","postalCode":"80910","city":"Colorado Springs","state":"CO","email":"avasyukhind5@samsung.com"}, +{"id":475,"firstName":"Perry","lastName":"Spere","street":"33 Autumn Leaf Street","postalCode":"79994","city":"El Paso","state":"TX","email":"pspered6@tamu.edu"}, +{"id":476,"firstName":"Cristobal","lastName":"Afonso","street":"5 Lake View Way","postalCode":"19136","city":"Philadelphia","state":"PA","email":"cafonsod7@themeforest.net"}, +{"id":477,"firstName":"Sebastien","lastName":"Annets","street":"4229 Bowman Trail","postalCode":"43699","city":"Toledo","state":"OH","phoneNumber":"419-981-8630","email":"sannetsd8@guardian.co.uk"}, +{"id":478,"firstName":"Prentice","lastName":"Desorts","street":"54 Mendota Drive","postalCode":"31196","city":"Atlanta","state":"GA","phoneNumber":"404-235-6736","email":"pdesortsd9@who.int"}, +{"id":479,"firstName":"Rubin","lastName":"Dunkerk","street":"035 Myrtle Park","postalCode":"94297","city":"Sacramento","state":"CA","phoneNumber":"916-658-2157","email":"rdunkerkda@columbia.edu"}, +{"id":480,"firstName":"Jesselyn","lastName":"Bidnall","street":"2353 Norway Maple Court","postalCode":"07522","city":"Paterson","state":"NJ","email":"jbidnalldb@4shared.com"}, +{"id":481,"firstName":"Arleta","lastName":"Massy","street":"2 Bluejay Lane","postalCode":"10310","city":"Staten Island","state":"NY"}, +{"id":482,"firstName":"Trescha","lastName":"Joncic","street":"052 Summit Way","postalCode":"13217","city":"Syracuse","state":"NY"}, +{"id":483,"firstName":"Joshuah","lastName":"Galbreth","street":"16 Elka Place","postalCode":"08922","city":"New Brunswick","state":"NJ","email":"jgalbrethde@rambler.ru"}, +{"id":484,"firstName":"Clywd","lastName":"Henlon","street":"26 Thackeray Pass","postalCode":"90040","city":"Los Angeles","state":"CA","email":"chenlondf@unesco.org"}, +{"id":485,"firstName":"Glenda","lastName":"Grayley","street":"6326 Ohio Plaza","postalCode":"91411","city":"Van Nuys","state":"CA"}, +{"id":486,"firstName":"Glynda","lastName":"Stokell","street":"6 Schmedeman Court","postalCode":"60641","city":"Chicago","state":"IL","email":"gstokelldh@ted.com"}, +{"id":487,"firstName":"Kath","lastName":"Harrap","street":"43769 Barby Plaza","postalCode":"32304","city":"Tallahassee","state":"FL","email":"kharrapdi@cargocollective.com"}, +{"id":488,"firstName":"Dickie","lastName":"Domotor","street":"2954 Toban Lane","postalCode":"98133","city":"Seattle","state":"WA","email":"ddomotordj@hhs.gov"}, +{"id":489,"firstName":"Ceciley","lastName":"Hitzke","street":"9102 Westport Pass","postalCode":"40618","city":"Frankfort","state":"KY","phoneNumber":"502-545-5506","email":"chitzkedk@newsvine.com"}, +{"id":490,"firstName":"Adler","lastName":"Webb-Bowen","street":"5 Hanover Street","postalCode":"32123","city":"Daytona Beach","state":"FL"}, +{"id":491,"firstName":"Fergus","lastName":"Domerq","street":"06 Hansons Road","postalCode":"58106","city":"Fargo","state":"ND","phoneNumber":"701-656-3778"}, +{"id":492,"firstName":"Kimbra","lastName":"Petherick","street":"867 Mayer Drive","postalCode":"39236","city":"Jackson","state":"MS"}, +{"id":493,"firstName":"Geneva","lastName":"Hobgen","street":"74 Vernon Parkway","postalCode":"53710","city":"Madison","state":"WI","email":"ghobgendo@google.de"}, +{"id":494,"firstName":"Jillane","lastName":"Skitral","street":"9747 Ruskin Point","postalCode":"22405","city":"Fredericksburg","state":"VA","email":"jskitraldp@mysql.com"}, +{"id":495,"firstName":"Carolin","lastName":"Pimblotte","street":"8 Union Way","postalCode":"75358","city":"Dallas","state":"TX","phoneNumber":"214-109-7114","email":"cpimblottedq@cargocollective.com"}, +{"id":496,"firstName":"Wandis","lastName":"Andreasson","street":"3 Nancy Parkway","postalCode":"70033","city":"Metairie","state":"LA","email":"wandreassondr@topsy.com"}, +{"id":497,"firstName":"Baily","lastName":"Dalliston","street":"602 Melrose Way","postalCode":"25331","city":"Charleston","state":"WV","email":"bdallistonds@storify.com"}, +{"id":498,"firstName":"Kissie","lastName":"Lammiman","street":"4 Memorial Terrace","postalCode":"06510","city":"New Haven","state":"CT","phoneNumber":"203-724-3731","email":"klammimandt@barnesandnoble.com"}, +{"id":499,"firstName":"Cloris","lastName":"Dorning","street":"4 Lien Road","postalCode":"37235","city":"Nashville","state":"TN","email":"cdorningdu@unesco.org"}, +{"id":500,"firstName":"Jemimah","lastName":"Juppe","street":"979 Tennessee Pass","postalCode":"85305","city":"Glendale","state":"AZ"}, +{"id":501,"firstName":"Fanchette","lastName":"Marlor","street":"90 Waywood Circle","postalCode":"44511","city":"Youngstown","state":"OH","email":"fmarlordw@is.gd"}, +{"id":502,"firstName":"Carmelle","lastName":"Stillmann","street":"9124 Sachtjen Way","postalCode":"74184","city":"Tulsa","state":"OK","email":"cstillmanndx@telegraph.co.uk"}, +{"id":503,"firstName":"Joelle","lastName":"Mumford","street":"5 Susan Point","postalCode":"28410","city":"Wilmington","state":"NC","email":"jmumforddy@yellowbook.com"}, +{"id":504,"firstName":"Vicky","lastName":"Danzelman","street":"472 Pond Junction","postalCode":"11220","city":"Brooklyn","state":"NY","email":"vdanzelmandz@stumbleupon.com"}, +{"id":505,"firstName":"Baudoin","lastName":"Grenshiels","street":"4703 Tony Circle","postalCode":"76198","city":"Fort Worth","state":"TX","email":"bgrenshielse0@devhub.com"}, +{"id":506,"firstName":"Rosetta","lastName":"Wennington","street":"3 Kensington Crossing","postalCode":"14619","city":"Rochester","state":"NY"}, +{"id":507,"firstName":"Eudora","lastName":"Murtell","street":"97 Mockingbird Circle","postalCode":"92867","city":"Orange","state":"CA","phoneNumber":"949-899-3967"}, +{"id":508,"firstName":"Sonnie","lastName":"Hawkin","street":"76669 Green Ridge Crossing","postalCode":"79491","city":"Lubbock","state":"TX","email":"shawkine3@wikia.com"}, +{"id":509,"firstName":"Ulysses","lastName":"Uman","street":"4 Fieldstone Circle","postalCode":"32128","city":"Daytona Beach","state":"FL","phoneNumber":"386-761-6071","email":"uumane4@multiply.com"}, +{"id":510,"firstName":"Alidia","lastName":"Kowalski","street":"3915 Harper Plaza","postalCode":"75221","city":"Dallas","state":"TX","email":"akowalskie5@simplemachines.org"}, +{"id":511,"firstName":"Willis","lastName":"Jeaneau","street":"8 Northport Center","postalCode":"37939","city":"Knoxville","state":"TN","phoneNumber":"865-336-2729","email":"wjeaneaue6@furl.net"}, +{"id":512,"firstName":"Clement","lastName":"Taudevin","street":"25062 Amoth Pass","postalCode":"31914","city":"Columbus","state":"GA","email":"ctaudevine7@mapquest.com"}, +{"id":513,"firstName":"Tally","lastName":"Arnatt","street":"5745 Nancy Terrace","postalCode":"95054","city":"Santa Clara","state":"CA","email":"tarnatte8@umich.edu"}, +{"id":514,"firstName":"Eldon","lastName":"Munnings","street":"17 Dayton Parkway","postalCode":"27690","city":"Raleigh","state":"NC","email":"emunningse9@gmpg.org"}, +{"id":515,"firstName":"Duffie","lastName":"Sibary","street":"840 Springview Avenue","postalCode":"48275","city":"Detroit","state":"MI","email":"dsibaryea@livejournal.com"}, +{"id":516,"firstName":"Winny","lastName":"Dobell","street":"0426 Lindbergh Street","postalCode":"81015","city":"Pueblo","state":"CO","phoneNumber":"719-882-3553","email":"wdobelleb@bizjournals.com"}, +{"id":517,"firstName":"Pancho","lastName":"Pointon","street":"79 Clyde Gallagher Park","postalCode":"97306","city":"Salem","state":"OR","phoneNumber":"503-151-2205"}, +{"id":518,"firstName":"Elston","lastName":"Warwicker","street":"96 Schmedeman Park","postalCode":"44705","city":"Canton","state":"OH","email":"ewarwickered@arstechnica.com"}, +{"id":519,"firstName":"Nicolle","lastName":"Shellcross","street":"23982 Cambridge Parkway","postalCode":"80940","city":"Colorado Springs","state":"CO","email":"nshellcrossee@hibu.com"}, +{"id":520,"firstName":"Bethanne","lastName":"Briggdale","street":"026 Portage Circle","postalCode":"43215","city":"Columbus","state":"OH","phoneNumber":"513-925-3139","email":"bbriggdaleef@flickr.com"}, +{"id":521,"firstName":"Elsey","lastName":"McCorry","street":"781 International Parkway","postalCode":"94286","city":"Sacramento","state":"CA","phoneNumber":"916-879-2104","email":"emccorryeg@sakura.ne.jp"}, +{"id":522,"firstName":"Abran","lastName":"Vasyuchov","street":"64 Grim Place","postalCode":"44177","city":"Cleveland","state":"OH"}, +{"id":523,"firstName":"Rhoda","lastName":"Grieveson","street":"50687 Towne Pass","postalCode":"11220","city":"Brooklyn","state":"NY","email":"rgrievesonei@mit.edu"}, +{"id":524,"firstName":"Florette","lastName":"Eke","street":"85057 Anzinger Lane","postalCode":"66225","city":"Shawnee Mission","state":"KS","phoneNumber":"913-299-0032","email":"fekeej@fema.gov"}, +{"id":525,"firstName":"Sheff","lastName":"Baigrie","street":"80366 Lawn Hill","postalCode":"02203","city":"Boston","state":"MA","phoneNumber":"617-556-4978","email":"sbaigrieek@aboutads.info"}, +{"id":526,"firstName":"Clarisse","lastName":"Hubbuck","street":"435 Truax Trail","postalCode":"02458","city":"Newton","state":"MA","phoneNumber":"781-641-2937"}, +{"id":527,"firstName":"Gilberte","lastName":"Yanele","street":"413 Glacier Hill Park","postalCode":"90610","city":"Whittier","state":"CA","phoneNumber":"562-451-1686","email":"gyaneleem@dot.gov"}, +{"id":528,"firstName":"Lefty","lastName":"Dufore","street":"957 Straubel Street","postalCode":"35220","city":"Birmingham","state":"AL","email":"lduforeen@slideshare.net"}, +{"id":529,"firstName":"Saul","lastName":"Shepperd","street":"44805 Sunnyside Place","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-904-7271"}, +{"id":530,"firstName":"Hadrian","lastName":"Cockhill","street":"479 Mayer Way","postalCode":"22119","city":"Merrifield","state":"VA","email":"hcockhillep@xrea.com"}, +{"id":531,"firstName":"Amalia","lastName":"Geare","street":"63075 Glendale Trail","postalCode":"90065","city":"Los Angeles","state":"CA","email":"ageareeq@vistaprint.com"}, +{"id":532,"firstName":"Adan","lastName":"Ibbeson","street":"5 Cambridge Lane","postalCode":"73142","city":"Oklahoma City","state":"OK"}, +{"id":533,"firstName":"Nicol","lastName":"Garbutt","street":"3 8th Street","postalCode":"50393","city":"Des Moines","state":"IA","phoneNumber":"515-946-8077"}, +{"id":534,"firstName":"Lilas","lastName":"Estcot","street":"1927 Mitchell Avenue","postalCode":"75185","city":"Mesquite","state":"TX","email":"lestcotet@ezinearticles.com"}, +{"id":535,"firstName":"Valina","lastName":"Dellenbrok","street":"1 Victoria Hill","postalCode":"45249","city":"Cincinnati","state":"OH","phoneNumber":"513-958-5055","email":"vdellenbrokeu@upenn.edu"}, +{"id":536,"firstName":"Gwen","lastName":"Harwell","street":"64275 Bartelt Terrace","postalCode":"93721","city":"Fresno","state":"CA"}, +{"id":537,"firstName":"Adriena","lastName":"Lochead","street":"0088 Hintze Point","postalCode":"43231","city":"Columbus","state":"OH","phoneNumber":"614-506-5616","email":"alocheadew@paypal.com"}, +{"id":538,"firstName":"Jacobo","lastName":"Jills","street":"809 Anderson Park","postalCode":"55557","city":"Young America","state":"MN","phoneNumber":"952-580-6574","email":"jjillsex@xing.com"}, +{"id":539,"firstName":"Saree","lastName":"Jeanequin","street":"0212 Clyde Gallagher Alley","postalCode":"32891","city":"Orlando","state":"FL","email":"sjeanequiney@who.int"}, +{"id":540,"firstName":"Kin","lastName":"Dewar","street":"3 Emmet Center","postalCode":"20244","city":"Washington","state":"DC","email":"kdewarez@discovery.com"}, +{"id":541,"firstName":"Kaleena","lastName":"Godfray","street":"4350 Eliot Parkway","postalCode":"76134","city":"Fort Worth","state":"TX","phoneNumber":"817-332-6412","email":"kgodfrayf0@webmd.com"}, +{"id":542,"firstName":"Wallace","lastName":"Poytres","street":"78157 Dovetail Crossing","postalCode":"14683","city":"Rochester","state":"NY","email":"wpoytresf1@springer.com"}, +{"id":543,"firstName":"Dur","lastName":"Burgise","street":"2 Weeping Birch Court","postalCode":"89130","city":"Las Vegas","state":"NV"}, +{"id":544,"firstName":"Sheridan","lastName":"Gardiner","street":"26 Gateway Crossing","postalCode":"64193","city":"Kansas City","state":"MO","phoneNumber":"816-647-4434","email":"sgardinerf3@jugem.jp"}, +{"id":545,"firstName":"Nickolaus","lastName":"Thomassen","street":"130 Anderson Drive","postalCode":"33330","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-339-0290"}, +{"id":546,"firstName":"Boris","lastName":"Cortez","street":"55 Center Court","postalCode":"10184","city":"New York City","state":"NY","phoneNumber":"212-549-8414","email":"bcortezf5@mail.ru"}, +{"id":547,"firstName":"Candra","lastName":"Codner","street":"24078 Superior Point","postalCode":"93715","city":"Fresno","state":"CA","phoneNumber":"209-495-8135"}, +{"id":548,"firstName":"Ashton","lastName":"Hugin","street":"33 Fuller Place","postalCode":"63143","city":"Saint Louis","state":"MO"}, +{"id":549,"firstName":"Miguelita","lastName":"Lanceley","street":"34877 Arizona Street","postalCode":"80045","city":"Aurora","state":"CO","email":"mlanceleyf8@trellian.com"}, +{"id":550,"firstName":"Law","lastName":"Skim","street":"1795 Farmco Street","postalCode":"28230","city":"Charlotte","state":"NC","email":"lskimf9@bravesites.com"}, +{"id":551,"firstName":"Carlita","lastName":"Kindall","street":"7 Scofield Road","postalCode":"93709","city":"Fresno","state":"CA","email":"ckindallfa@zimbio.com"}, +{"id":552,"firstName":"Mehetabel","lastName":"Stawell","street":"648 Upham Plaza","postalCode":"75277","city":"Dallas","state":"TX","phoneNumber":"214-597-5958","email":"mstawellfb@ehow.com"}, +{"id":553,"firstName":"Charlena","lastName":"MacAlpyne","street":"2 Village Terrace","postalCode":"33758","city":"Clearwater","state":"FL","phoneNumber":"813-452-9764","email":"cmacalpynefc@xinhuanet.com"}, +{"id":554,"firstName":"Gayel","lastName":"Litel","street":"34782 Birchwood Road","postalCode":"46406","city":"Gary","state":"IN","phoneNumber":"219-156-8377","email":"glitelfd@alibaba.com"}, +{"id":555,"firstName":"Prisca","lastName":"Kanzler","street":"67 Miller Terrace","postalCode":"08619","city":"Trenton","state":"NJ","phoneNumber":"609-352-4487"}, +{"id":556,"firstName":"Marlowe","lastName":"Idenden","street":"396 Beilfuss Park","postalCode":"74103","city":"Tulsa","state":"OK","phoneNumber":"918-254-3102"}, +{"id":557,"firstName":"Ashley","lastName":"Skule","street":"2327 Valley Edge Terrace","postalCode":"93794","city":"Fresno","state":"CA","phoneNumber":"559-558-9123"}, +{"id":558,"firstName":"Trista","lastName":"Naptine","street":"646 Dahle Court","postalCode":"06538","city":"New Haven","state":"CT","phoneNumber":"203-257-3017","email":"tnaptinefh@hugedomains.com"}, +{"id":559,"firstName":"Hasheem","lastName":"Ottery","street":"004 Clemons Street","postalCode":"28815","city":"Asheville","state":"NC","phoneNumber":"828-768-3824","email":"hotteryfi@gmpg.org"}, +{"id":560,"firstName":"Alisa","lastName":"Bernhardt","street":"49 Cody Center","postalCode":"84120","city":"Salt Lake City","state":"UT","phoneNumber":"801-808-4005","email":"abernhardtfj@census.gov"}, +{"id":561,"firstName":"Isadora","lastName":"Hatchett","street":"78644 Hoepker Junction","postalCode":"77015","city":"Houston","state":"TX","email":"ihatchettfk@spiegel.de"}, +{"id":562,"firstName":"Valdemar","lastName":"Stithe","street":"75 East Street","postalCode":"48206","city":"Detroit","state":"MI","email":"vstithefl@marriott.com"}, +{"id":563,"firstName":"Elden","lastName":"Rebert","street":"2 Florence Place","postalCode":"65110","city":"Jefferson City","state":"MO","phoneNumber":"573-753-8030"}, +{"id":564,"firstName":"Stormie","lastName":"Trewartha","street":"59 Shoshone Lane","postalCode":"19136","city":"Philadelphia","state":"PA","phoneNumber":"215-466-6832"}, +{"id":565,"firstName":"Bernhard","lastName":"Boulsher","street":"50888 Dwight Drive","postalCode":"02114","city":"Boston","state":"MA","email":"bboulsherfo@zdnet.com"}, +{"id":566,"firstName":"Twyla","lastName":"Yerrill","street":"526 Clove Terrace","postalCode":"40745","city":"London","state":"KY","email":"tyerrillfp@smugmug.com"}, +{"id":567,"firstName":"Sullivan","lastName":"Dudeney","street":"953 Swallow Crossing","postalCode":"19160","city":"Philadelphia","state":"PA","email":"sdudeneyfq@kickstarter.com"}, +{"id":568,"firstName":"Estell","lastName":"Kiggel","street":"8170 Rusk Alley","postalCode":"20442","city":"Washington","state":"DC","phoneNumber":"202-645-5828","email":"ekiggelfr@imgur.com"}, +{"id":569,"firstName":"Jonis","lastName":"Pymer","street":"21296 International Pass","postalCode":"77844","city":"College Station","state":"TX","email":"jpymerfs@nymag.com"}, +{"id":570,"firstName":"Linea","lastName":"Cranmor","street":"2541 Thackeray Hill","postalCode":"31210","city":"Macon","state":"GA"}, +{"id":571,"firstName":"Starlin","lastName":"Reven","street":"7692 Mifflin Hill","postalCode":"66611","city":"Topeka","state":"KS","email":"srevenfu@nba.com"}, +{"id":572,"firstName":"Augusta","lastName":"Heustice","street":"947 Ramsey Lane","postalCode":"10292","city":"New York City","state":"NY","phoneNumber":"212-194-3346","email":"aheusticefv@cloudflare.com"}, +{"id":573,"firstName":"Glen","lastName":"O'Mailey","street":"90 6th Court","postalCode":"33982","city":"Punta Gorda","state":"FL","phoneNumber":"941-381-2231"}, +{"id":574,"firstName":"Astrix","lastName":"Bister","street":"505 Artisan Crossing","postalCode":"23324","city":"Chesapeake","state":"VA","phoneNumber":"757-469-4444","email":"abisterfx@uol.com.br"}, +{"id":575,"firstName":"Shaw","lastName":"Lidbetter","street":"70 New Castle Trail","postalCode":"10474","city":"Bronx","state":"NY","phoneNumber":"917-917-9173"}, +{"id":576,"firstName":"Yovonnda","lastName":"Wych","street":"97472 Derek Drive","postalCode":"90410","city":"Santa Monica","state":"CA","email":"ywychfz@symantec.com"}, +{"id":577,"firstName":"Harcourt","lastName":"Faier","street":"056 Northridge Street","postalCode":"16510","city":"Erie","state":"PA","email":"hfaierg0@cloudflare.com"}, +{"id":578,"firstName":"Archibold","lastName":"Kos","street":"6 Forster Park","postalCode":"63104","city":"Saint Louis","state":"MO","phoneNumber":"314-967-5566","email":"akosg1@soup.io"}, +{"id":579,"firstName":"Nataniel","lastName":"Beldom","street":"1 Sullivan Street","postalCode":"02453","city":"Waltham","state":"MA","email":"nbeldomg2@alibaba.com"}, +{"id":580,"firstName":"Felisha","lastName":"Bamfield","street":"970 Washington Avenue","postalCode":"12305","city":"Schenectady","state":"NY","email":"fbamfieldg3@jimdo.com"}, +{"id":581,"firstName":"Colly","lastName":"Rugge","street":"8 Golf Course Avenue","postalCode":"55172","city":"Saint Paul","state":"MN","phoneNumber":"651-450-9347","email":"cruggeg4@tmall.com"}, +{"id":582,"firstName":"Patti","lastName":"Maddrell","street":"0483 Coolidge Drive","postalCode":"74193","city":"Tulsa","state":"OK"}, +{"id":583,"firstName":"Antin","lastName":"Gabbetis","street":"93510 Clemons Drive","postalCode":"68583","city":"Lincoln","state":"NE","email":"agabbetisg6@java.com"}, +{"id":584,"firstName":"Bree","lastName":"Million","street":"3 Columbus Avenue","postalCode":"61614","city":"Peoria","state":"IL","phoneNumber":"309-360-1909","email":"bmilliong7@gnu.org"}, +{"id":585,"firstName":"Taber","lastName":"Lorait","street":"4 Melrose Way","postalCode":"62764","city":"Springfield","state":"IL","phoneNumber":"217-436-2021","email":"tloraitg8@cargocollective.com"}, +{"id":586,"firstName":"Roley","lastName":"Di Carlo","street":"981 Bowman Center","postalCode":"87505","city":"Santa Fe","state":"NM"}, +{"id":587,"firstName":"Seline","lastName":"Oxenham","street":"65051 Forest Run Center","postalCode":"94064","city":"Redwood City","state":"CA","email":"soxenhamga@fastcompany.com"}, +{"id":588,"firstName":"Costa","lastName":"Tomblin","street":"7 Arapahoe Alley","postalCode":"33315","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-239-1335"}, +{"id":589,"firstName":"Opalina","lastName":"Cake","street":"88 Commercial Avenue","postalCode":"40215","city":"Louisville","state":"KY","email":"ocakegc@examiner.com"}, +{"id":590,"firstName":"Suzanne","lastName":"Giuroni","street":"73 Twin Pines Terrace","postalCode":"99260","city":"Spokane","state":"WA"}, +{"id":591,"firstName":"Faustine","lastName":"Croysdale","street":"01 Delladonna Point","postalCode":"48295","city":"Detroit","state":"MI"}, +{"id":592,"firstName":"Sheffie","lastName":"Aldine","street":"4 Hansons Junction","postalCode":"74108","city":"Tulsa","state":"OK"}, +{"id":593,"firstName":"Bret","lastName":"Birrane","street":"745 Mayer Junction","postalCode":"77030","city":"Houston","state":"TX","phoneNumber":"832-374-7571","email":"bbirranegg@opera.com"}, +{"id":594,"firstName":"Lennard","lastName":"Mowbury","street":"5 Dwight Road","postalCode":"94522","city":"Concord","state":"CA","email":"lmowburygh@1und1.de"}, +{"id":595,"firstName":"Albie","lastName":"Pert","street":"23705 Fieldstone Plaza","postalCode":"08922","city":"New Brunswick","state":"NJ","phoneNumber":"732-587-7312","email":"apertgi@netlog.com"}, +{"id":596,"firstName":"Stevie","lastName":"Pressnell","street":"0077 Ronald Regan Point","postalCode":"85020","city":"Phoenix","state":"AZ","phoneNumber":"623-991-0482","email":"spressnellgj@skype.com"}, +{"id":597,"firstName":"Eddy","lastName":"McIlreavy","street":"04 Luster Lane","postalCode":"94126","city":"San Francisco","state":"CA"}, +{"id":598,"firstName":"Webb","lastName":"Titterell","street":"94323 Kedzie Alley","postalCode":"91505","city":"Burbank","state":"CA","phoneNumber":"818-220-9105","email":"wtitterellgl@bandcamp.com"}, +{"id":599,"firstName":"Jeffrey","lastName":"Benito","street":"7487 Scott Lane","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"917-379-2592","email":"jbenitogm@deviantart.com"}, +{"id":600,"firstName":"Nollie","lastName":"Arsey","street":"7282 Summerview Plaza","postalCode":"55811","city":"Duluth","state":"MN","email":"narseygn@imageshack.us"}, +{"id":601,"firstName":"Petra","lastName":"Turpey","street":"43920 Evergreen Junction","postalCode":"77255","city":"Houston","state":"TX","phoneNumber":"713-446-0144"}, +{"id":602,"firstName":"Harwilll","lastName":"Lashbrook","street":"8063 Grasskamp Parkway","postalCode":"27621","city":"Raleigh","state":"NC","phoneNumber":"919-142-9887","email":"hlashbrookgp@seattletimes.com"}, +{"id":603,"firstName":"Tedman","lastName":"Steinor","street":"80230 Hanson Hill","postalCode":"47134","city":"Jeffersonville","state":"IN","email":"tsteinorgq@dmoz.org"}, +{"id":604,"firstName":"Georgette","lastName":"Tupper","street":"37 Lillian Avenue","postalCode":"33543","city":"Zephyrhills","state":"FL","phoneNumber":"813-743-2425","email":"gtuppergr@qq.com"}, +{"id":605,"firstName":"Torrance","lastName":"Welsh","street":"95802 Doe Crossing Crossing","postalCode":"13217","city":"Syracuse","state":"NY","phoneNumber":"315-145-4503","email":"twelshgs@imgur.com"}, +{"id":606,"firstName":"Silvie","lastName":"Souster","street":"52827 Fuller Place","postalCode":"99709","city":"Fairbanks","state":"AK"}, +{"id":607,"firstName":"Pauline","lastName":"Dulwitch","street":"8 Aberg Drive","postalCode":"17105","city":"Harrisburg","state":"PA","phoneNumber":"717-228-4960","email":"pdulwitchgu@aboutads.info"}, +{"id":608,"firstName":"Roberta","lastName":"Castanie","street":"182 Mosinee Avenue","postalCode":"75185","city":"Mesquite","state":"TX"}, +{"id":609,"firstName":"Percival","lastName":"Kristoffersen","street":"4 Del Mar Park","postalCode":"48335","city":"Farmington","state":"MI","phoneNumber":"248-438-1650","email":"pkristoffersengw@chron.com"}, +{"id":610,"firstName":"Caryl","lastName":"Boame","street":"094 Springview Avenue","postalCode":"78255","city":"San Antonio","state":"TX","email":"cboamegx@example.com"}, +{"id":611,"firstName":"Steve","lastName":"Simakov","street":"323 Brickson Park Trail","postalCode":"32244","city":"Jacksonville","state":"FL","phoneNumber":"904-468-9377","email":"ssimakovgy@angelfire.com"}, +{"id":612,"firstName":"Carl","lastName":"Tumayan","street":"93854 Clyde Gallagher Circle","postalCode":"98447","city":"Tacoma","state":"WA","email":"ctumayangz@1und1.de"}, +{"id":613,"firstName":"Gayle","lastName":"Blaker","street":"5930 Grasskamp Drive","postalCode":"12262","city":"Albany","state":"NY","email":"gblakerh0@spiegel.de"}, +{"id":614,"firstName":"Darrick","lastName":"Harefoot","street":"359 Waywood Trail","postalCode":"20189","city":"Dulles","state":"VA"}, +{"id":615,"firstName":"Sayer","lastName":"Eversfield","street":"86 Park Meadow Crossing","postalCode":"53263","city":"Milwaukee","state":"WI","email":"seversfieldh2@multiply.com"}, +{"id":616,"firstName":"Loralyn","lastName":"Poyner","street":"28530 Magdeline Crossing","postalCode":"84125","city":"Salt Lake City","state":"UT","phoneNumber":"801-363-2593"}, +{"id":617,"firstName":"Petrina","lastName":"Ridewood","street":"91782 Oriole Parkway","postalCode":"80235","city":"Denver","state":"CO","phoneNumber":"720-131-3660","email":"pridewoodh4@walmart.com"}, +{"id":618,"firstName":"Leroi","lastName":"Marde","street":"7992 Prairieview Junction","postalCode":"02142","city":"Cambridge","state":"MA","phoneNumber":"781-623-9420","email":"lmardeh5@oracle.com"}, +{"id":619,"firstName":"Brannon","lastName":"Janata","street":"79706 Wayridge Alley","postalCode":"24515","city":"Lynchburg","state":"VA","phoneNumber":"434-255-0721"}, +{"id":620,"firstName":"Berry","lastName":"Joska","street":"301 6th Alley","postalCode":"10150","city":"New York City","state":"NY","email":"bjoskah7@360.cn"}, +{"id":621,"firstName":"Blinnie","lastName":"Basten","street":"047 Canary Parkway","postalCode":"30343","city":"Atlanta","state":"GA","phoneNumber":"404-794-2760"}, +{"id":622,"firstName":"Inesita","lastName":"Abbitt","street":"8 Sachtjen Plaza","postalCode":"60681","city":"Chicago","state":"IL"}, +{"id":623,"firstName":"Nickie","lastName":"Ellicombe","street":"1067 Ridge Oak Terrace","postalCode":"38131","city":"Memphis","state":"TN","phoneNumber":"901-695-3826","email":"nellicombeha@imgur.com"}, +{"id":624,"firstName":"Barney","lastName":"Sheeres","street":"1 Rutledge Avenue","postalCode":"29208","city":"Columbia","state":"SC","phoneNumber":"803-166-1398"}, +{"id":625,"firstName":"Ogdan","lastName":"Lelievre","street":"27 Weeping Birch Plaza","postalCode":"27264","city":"High Point","state":"NC","phoneNumber":"336-416-3966","email":"olelievrehc@exblog.jp"}, +{"id":626,"firstName":"Zora","lastName":"Exter","street":"7 Ronald Regan Pass","postalCode":"33673","city":"Tampa","state":"FL"}, +{"id":627,"firstName":"Travus","lastName":"Jaulme","street":"3159 Montana Circle","postalCode":"79176","city":"Amarillo","state":"TX","phoneNumber":"806-894-9411"}, +{"id":628,"firstName":"Krishna","lastName":"Beckingham","street":"58 Fair Oaks Lane","postalCode":"30311","city":"Atlanta","state":"GA","email":"kbeckinghamhf@usnews.com"}, +{"id":629,"firstName":"Bartolomeo","lastName":"Bosanko","street":"753 Victoria Place","postalCode":"79699","city":"Abilene","state":"TX","phoneNumber":"325-223-9615","email":"bbosankohg@merriam-webster.com"}, +{"id":630,"firstName":"Umberto","lastName":"McGinly","street":"30 Upham Parkway","postalCode":"80945","city":"Colorado Springs","state":"CO","email":"umcginlyhh@cdc.gov"}, +{"id":631,"firstName":"Launce","lastName":"Fatkin","street":"03246 Esch Place","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-916-7032","email":"lfatkinhi@blogs.com"}, +{"id":632,"firstName":"Simone","lastName":"Soars","street":"9969 Forest Run Crossing","postalCode":"90101","city":"Los Angeles","state":"CA","phoneNumber":"213-282-8462"}, +{"id":633,"firstName":"Clerissa","lastName":"Leason","street":"59731 Mayfield Street","postalCode":"89510","city":"Reno","state":"NV"}, +{"id":634,"firstName":"Rutter","lastName":"Sultan","street":"697 Spenser Way","postalCode":"77245","city":"Houston","state":"TX"}, +{"id":635,"firstName":"Shannon","lastName":"De Carteret","street":"2 Grover Avenue","postalCode":"92717","city":"Irvine","state":"CA","phoneNumber":"714-410-2360","email":"sdecarterethm@simplemachines.org"}, +{"id":636,"firstName":"Sawyere","lastName":"Cardno","street":"428 Golf Course Drive","postalCode":"33111","city":"Miami","state":"FL"}, +{"id":637,"firstName":"Paulie","lastName":"Bucktharp","street":"5398 Sugar Park","postalCode":"10039","city":"New York City","state":"NY","phoneNumber":"646-197-4123","email":"pbucktharpho@businessweek.com"}, +{"id":638,"firstName":"Kippy","lastName":"Guisler","street":"2161 Claremont Trail","postalCode":"20546","city":"Washington","state":"DC","phoneNumber":"202-138-6171","email":"kguislerhp@ox.ac.uk"}, +{"id":639,"firstName":"Yoshiko","lastName":"Tolson","street":"2 Glendale Court","postalCode":"27415","city":"Greensboro","state":"NC","email":"ytolsonhq@example.com"}, +{"id":640,"firstName":"Page","lastName":"Chillingsworth","street":"8 Loomis Drive","postalCode":"55470","city":"Minneapolis","state":"MN","email":"pchillingsworthhr@wunderground.com"}, +{"id":641,"firstName":"Jillana","lastName":"O'Siaghail","street":"13517 Del Mar Road","postalCode":"29215","city":"Columbia","state":"SC","phoneNumber":"803-420-8597","email":"josiaghailhs@reuters.com"}, +{"id":642,"firstName":"Phedra","lastName":"Bagnold","street":"7059 Hallows Street","postalCode":"55470","city":"Minneapolis","state":"MN","email":"pbagnoldht@howstuffworks.com"}, +{"id":643,"firstName":"Bellina","lastName":"Gouldie","street":"7567 Bultman Way","postalCode":"88514","city":"El Paso","state":"TX","email":"bgouldiehu@salon.com"}, +{"id":644,"firstName":"Devi","lastName":"Bohden","street":"68833 Northview Hill","postalCode":"84115","city":"Salt Lake City","state":"UT"}, +{"id":645,"firstName":"Peggi","lastName":"Gobert","street":"667 Sauthoff Hill","postalCode":"44710","city":"Canton","state":"OH","email":"pgoberthw@mapy.cz"}, +{"id":646,"firstName":"Madelina","lastName":"Gurys","street":"70 Del Sol Trail","postalCode":"20420","city":"Washington","state":"DC","phoneNumber":"202-747-9276","email":"mguryshx@hibu.com"}, +{"id":647,"firstName":"Ikey","lastName":"Aubri","street":"76 Sutteridge Hill","postalCode":"36205","city":"Anniston","state":"AL","phoneNumber":"256-945-5095","email":"iaubrihy@mayoclinic.com"}, +{"id":648,"firstName":"Ginevra","lastName":"Duffitt","street":"25 Eagan Circle","postalCode":"31217","city":"Macon","state":"GA"}, +{"id":649,"firstName":"Cissiee","lastName":"Gozzard","street":"40240 Lillian Park","postalCode":"60609","city":"Chicago","state":"IL","email":"cgozzardi0@columbia.edu"}, +{"id":650,"firstName":"Sonny","lastName":"Jobern","street":"8 Green Trail","postalCode":"77065","city":"Houston","state":"TX","email":"sjoberni1@ucoz.com"}, +{"id":651,"firstName":"Mitch","lastName":"Guidera","street":"0 Dorton Junction","postalCode":"35210","city":"Birmingham","state":"AL","phoneNumber":"205-224-0177"}, +{"id":652,"firstName":"Dorey","lastName":"Marks","street":"81562 Maywood Crossing","postalCode":"71208","city":"Monroe","state":"LA","phoneNumber":"318-492-5487"}, +{"id":653,"firstName":"Pavla","lastName":"Conneely","street":"4007 Mifflin Lane","postalCode":"20456","city":"Washington","state":"DC"}, +{"id":654,"firstName":"Kym","lastName":"Gecks","street":"72638 Namekagon Plaza","postalCode":"61656","city":"Peoria","state":"IL","email":"kgecksi5@nature.com"}, +{"id":655,"firstName":"Prudence","lastName":"Peert","street":"91 Tomscot Parkway","postalCode":"32209","city":"Jacksonville","state":"FL","phoneNumber":"904-277-2945","email":"ppeerti6@usa.gov"}, +{"id":656,"firstName":"Elston","lastName":"Paolo","street":"4 Jenna Crossing","postalCode":"95155","city":"San Jose","state":"CA","email":"epaoloi7@umn.edu"}, +{"id":657,"firstName":"Indira","lastName":"Splaven","street":"8853 Vermont Drive","postalCode":"38188","city":"Memphis","state":"TN","phoneNumber":"901-706-3908","email":"isplaveni8@fda.gov"}, +{"id":658,"firstName":"Paul","lastName":"Mc Meekin","street":"56 Vidon Drive","postalCode":"08695","city":"Trenton","state":"NJ","phoneNumber":"609-361-1580"}, +{"id":659,"firstName":"Hadley","lastName":"Windmill","street":"31384 Evergreen Point","postalCode":"16550","city":"Erie","state":"PA","email":"hwindmillia@yale.edu"}, +{"id":660,"firstName":"Jay","lastName":"Yesichev","street":"675 Starling Pass","postalCode":"89150","city":"Las Vegas","state":"NV"}, +{"id":661,"firstName":"Ranna","lastName":"Dowtry","street":"303 Nevada Pass","postalCode":"48550","city":"Flint","state":"MI","phoneNumber":"810-164-4521","email":"rdowtryic@amazon.co.jp"}, +{"id":662,"firstName":"Annabel","lastName":"Pellamont","street":"277 Merrick Crossing","postalCode":"36605","city":"Mobile","state":"AL","phoneNumber":"251-595-3594","email":"apellamontid@reverbnation.com"}, +{"id":663,"firstName":"Kaitlynn","lastName":"Tracey","street":"612 Magdeline Road","postalCode":"97296","city":"Portland","state":"OR","email":"ktraceyie@ycombinator.com"}, +{"id":664,"firstName":"Matthiew","lastName":"Jills","street":"65 Walton Circle","postalCode":"93750","city":"Fresno","state":"CA","email":"mjillsif@addthis.com"}, +{"id":665,"firstName":"Bartlet","lastName":"Roe","street":"51573 Mandrake Park","postalCode":"02109","city":"Boston","state":"MA","phoneNumber":"617-460-5377","email":"broeig@nasa.gov"}, +{"id":666,"firstName":"Ban","lastName":"Knotton","street":"174 Westridge Parkway","postalCode":"32405","city":"Panama City","state":"FL","phoneNumber":"850-939-6502","email":"bknottonih@businesswire.com"}, +{"id":667,"firstName":"Cordelie","lastName":"O'Dee","street":"1733 Linden Avenue","postalCode":"80940","city":"Colorado Springs","state":"CO","phoneNumber":"719-966-3402","email":"codeeii@amazonaws.com"}, +{"id":668,"firstName":"Hardy","lastName":"Lob","street":"4 Bultman Road","postalCode":"75074","city":"Plano","state":"TX","email":"hlobij@dropbox.com"}, +{"id":669,"firstName":"Rosabelle","lastName":"Tonner","street":"1 Holy Cross Trail","postalCode":"36670","city":"Mobile","state":"AL","phoneNumber":"251-606-9437","email":"rtonnerik@google.ru"}, +{"id":670,"firstName":"Bernardina","lastName":"Mardy","street":"65 Myrtle Center","postalCode":"96845","city":"Honolulu","state":"HI","email":"bmardyil@wordpress.com"}, +{"id":671,"firstName":"Hynda","lastName":"Soldner","street":"88 Hazelcrest Drive","postalCode":"55470","city":"Minneapolis","state":"MN","email":"hsoldnerim@webeden.co.uk"}, +{"id":672,"firstName":"Quinn","lastName":"Templeton","street":"5 Village Way","postalCode":"19131","city":"Philadelphia","state":"PA","email":"qtempletonin@diigo.com"}, +{"id":673,"firstName":"Torrence","lastName":"Askwith","street":"1 Namekagon Point","postalCode":"31410","city":"Savannah","state":"GA","phoneNumber":"912-552-5239","email":"taskwithio@people.com.cn"}, +{"id":674,"firstName":"Bonnie","lastName":"Robilliard","street":"731 Johnson Lane","postalCode":"24515","city":"Lynchburg","state":"VA","phoneNumber":"434-382-5496"}, +{"id":675,"firstName":"Daphna","lastName":"D'Souza","street":"1549 Loftsgordon Center","postalCode":"91406","city":"Van Nuys","state":"CA","phoneNumber":"818-773-9088"}, +{"id":676,"firstName":"Palm","lastName":"Gandrich","street":"9 4th Pass","postalCode":"87121","city":"Albuquerque","state":"NM","phoneNumber":"505-815-5555"}, +{"id":677,"firstName":"Danie","lastName":"Gaydon","street":"382 Bayside Junction","postalCode":"55441","city":"Minneapolis","state":"MN","phoneNumber":"952-744-9400","email":"dgaydonis@seesaa.net"}, +{"id":678,"firstName":"Tabatha","lastName":"Caddock","street":"3858 Mccormick Road","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-996-7653","email":"tcaddockit@gizmodo.com"}, +{"id":679,"firstName":"Sergent","lastName":"Cade","street":"7 Riverside Crossing","postalCode":"13505","city":"Utica","state":"NY","email":"scadeiu@google.co.uk"}, +{"id":680,"firstName":"Shina","lastName":"Dumphry","street":"483 Del Mar Terrace","postalCode":"73109","city":"Oklahoma City","state":"OK","phoneNumber":"405-261-3364","email":"sdumphryiv@mediafire.com"}, +{"id":681,"firstName":"Aaron","lastName":"O'Neal","street":"669 Crowley Road","postalCode":"87140","city":"Albuquerque","state":"NM","phoneNumber":"505-451-6591","email":"aonealiw@npr.org"}, +{"id":682,"firstName":"Cynthea","lastName":"Wippermann","street":"109 Kinsman Parkway","postalCode":"06606","city":"Bridgeport","state":"CT","phoneNumber":"203-799-4552"}, +{"id":683,"firstName":"Stoddard","lastName":"Hullett","street":"06200 Mesta Park","postalCode":"78769","city":"Austin","state":"TX","phoneNumber":"512-190-7003"}, +{"id":684,"firstName":"Margit","lastName":"Comusso","street":"54 Springs Center","postalCode":"33737","city":"Saint Petersburg","state":"FL","phoneNumber":"727-144-3743","email":"mcomussoiz@drupal.org"}, +{"id":685,"firstName":"Dur","lastName":"Manns","street":"464 Park Meadow Road","postalCode":"90015","city":"Los Angeles","state":"CA","email":"dmannsj0@nymag.com"}, +{"id":686,"firstName":"Hollie","lastName":"Aldersey","street":"12195 Mallory Court","postalCode":"21405","city":"Annapolis","state":"MD","email":"halderseyj1@businessinsider.com"}, +{"id":687,"firstName":"Ralina","lastName":"Crepin","street":"13313 Clyde Gallagher Way","postalCode":"78285","city":"San Antonio","state":"TX"}, +{"id":688,"firstName":"Lyell","lastName":"Graveston","street":"20 Talisman Crossing","postalCode":"27157","city":"Winston Salem","state":"NC","phoneNumber":"336-638-3366","email":"lgravestonj3@webmd.com"}, +{"id":689,"firstName":"Anny","lastName":"Potell","street":"0 Ludington Circle","postalCode":"32803","city":"Orlando","state":"FL","email":"apotellj4@microsoft.com"}, +{"id":690,"firstName":"Harriot","lastName":"Klimpke","street":"8 Southridge Alley","postalCode":"22047","city":"Falls Church","state":"VA","phoneNumber":"571-470-2688","email":"hklimpkej5@slashdot.org"}, +{"id":691,"firstName":"Stacia","lastName":"Stainsby","street":"78 Mcbride Avenue","postalCode":"46862","city":"Fort Wayne","state":"IN"}, +{"id":692,"firstName":"Zacharia","lastName":"Willmont","street":"24 Everett Center","postalCode":"73135","city":"Oklahoma City","state":"OK","phoneNumber":"405-167-0584","email":"zwillmontj7@tuttocitta.it"}, +{"id":693,"firstName":"Dorelia","lastName":"Flexman","street":"0 Hauk Crossing","postalCode":"95298","city":"Stockton","state":"CA","phoneNumber":"209-759-3308"}, +{"id":694,"firstName":"Rubi","lastName":"Karran","street":"586 Eggendart Pass","postalCode":"64082","city":"Lees Summit","state":"MO","email":"rkarranj9@yahoo.com"}, +{"id":695,"firstName":"Edlin","lastName":"Davidsen","street":"5646 Arrowood Park","postalCode":"20591","city":"Washington","state":"DC","phoneNumber":"202-800-5817","email":"edavidsenja@purevolume.com"}, +{"id":696,"firstName":"Oralle","lastName":"Coneybeare","street":"0 Lakewood Parkway","postalCode":"08695","city":"Trenton","state":"NJ","email":"oconeybearejb@booking.com"}, +{"id":697,"firstName":"Scotti","lastName":"Cereceres","street":"2 Golf Hill","postalCode":"38119","city":"Memphis","state":"TN"}, +{"id":698,"firstName":"Hermione","lastName":"Mingotti","street":"14 Shoshone Alley","postalCode":"44511","city":"Youngstown","state":"OH","phoneNumber":"330-505-0585"}, +{"id":699,"firstName":"Janka","lastName":"Merredy","street":"877 Reinke Park","postalCode":"45233","city":"Cincinnati","state":"OH","email":"jmerredyje@furl.net"}, +{"id":700,"firstName":"Phillida","lastName":"Gannicleff","street":"48778 Sheridan Center","postalCode":"99210","city":"Spokane","state":"WA","email":"pgannicleffjf@github.io"}, +{"id":701,"firstName":"Bryn","lastName":"Shury","street":"82609 Surrey Road","postalCode":"78240","city":"San Antonio","state":"TX","phoneNumber":"210-361-9404","email":"bshuryjg@arstechnica.com"}, +{"id":702,"firstName":"Bobbe","lastName":"Yurocjhin","street":"54904 Southridge Parkway","postalCode":"33633","city":"Tampa","state":"FL","email":"byurocjhinjh@tumblr.com"}, +{"id":703,"firstName":"Noell","lastName":"Trewman","street":"63703 Fair Oaks Point","postalCode":"91520","city":"Burbank","state":"CA"}, +{"id":704,"firstName":"Adelind","lastName":"Marr","street":"68 Lotheville Park","postalCode":"02912","city":"Providence","state":"RI","email":"amarrjj@hexun.com"}, +{"id":705,"firstName":"Arabelle","lastName":"Oultram","street":"7927 Waxwing Place","postalCode":"77085","city":"Houston","state":"TX","email":"aoultramjk@diigo.com"}, +{"id":706,"firstName":"Derril","lastName":"Whylie","street":"1 Summerview Terrace","postalCode":"91606","city":"North Hollywood","state":"CA","phoneNumber":"323-244-3266","email":"dwhyliejl@auda.org.au"}, +{"id":707,"firstName":"Isadore","lastName":"Airth","street":"08897 Hauk Court","postalCode":"73104","city":"Oklahoma City","state":"OK","phoneNumber":"405-488-1807"}, +{"id":708,"firstName":"Barbara","lastName":"Feast","street":"420 Bayside Circle","postalCode":"63136","city":"Saint Louis","state":"MO","phoneNumber":"314-919-9094"}, +{"id":709,"firstName":"Engracia","lastName":"Laxtonne","street":"189 Oneill Center","postalCode":"22047","city":"Falls Church","state":"VA","email":"elaxtonnejo@addthis.com"}, +{"id":710,"firstName":"Dorice","lastName":"Dearle","street":"655 Union Way","postalCode":"47705","city":"Evansville","state":"IN","phoneNumber":"812-812-8795","email":"ddearlejp@mail.ru"}, +{"id":711,"firstName":"Crissie","lastName":"Leall","street":"1 1st Drive","postalCode":"36689","city":"Mobile","state":"AL","phoneNumber":"251-112-1542","email":"clealljq@nyu.edu"}, +{"id":712,"firstName":"Rica","lastName":"Wilshin","street":"0 Miller Way","postalCode":"79705","city":"Midland","state":"TX","phoneNumber":"432-935-1867"}, +{"id":713,"firstName":"Annie","lastName":"Thorns","street":"297 Thompson Park","postalCode":"32412","city":"Panama City","state":"FL","phoneNumber":"850-594-4049"}, +{"id":714,"firstName":"Lilah","lastName":"Beining","street":"1566 American Ash Avenue","postalCode":"25326","city":"Charleston","state":"WV","email":"lbeiningjt@mayoclinic.com"}, +{"id":715,"firstName":"Leeann","lastName":"Dorant","street":"5530 Mcguire Alley","postalCode":"93407","city":"San Luis Obispo","state":"CA","email":"ldorantju@homestead.com"}, +{"id":716,"firstName":"Elinor","lastName":"James","street":"2 Waxwing Terrace","postalCode":"88579","city":"El Paso","state":"TX","email":"ejamesjv@europa.eu"}, +{"id":717,"firstName":"Novelia","lastName":"Durman","street":"7 Hermina Junction","postalCode":"77050","city":"Houston","state":"TX","email":"ndurmanjw@fc2.com"}, +{"id":718,"firstName":"Sharai","lastName":"Pickervance","street":"739 Lien Junction","postalCode":"73167","city":"Oklahoma City","state":"OK","email":"spickervancejx@independent.co.uk"}, +{"id":719,"firstName":"Gilberte","lastName":"Stilling","street":"29950 Annamark Trail","postalCode":"89178","city":"Las Vegas","state":"NV","phoneNumber":"702-604-4240","email":"gstillingjy@feedburner.com"}, +{"id":720,"firstName":"Rosabelle","lastName":"Guinan","street":"13078 Sutherland Center","postalCode":"83757","city":"Boise","state":"ID","phoneNumber":"208-792-6705"}, +{"id":721,"firstName":"Karin","lastName":"Ackermann","street":"3 Susan Hill","postalCode":"48919","city":"Lansing","state":"MI","phoneNumber":"517-579-7811","email":"kackermannk0@csmonitor.com"}, +{"id":722,"firstName":"Reeta","lastName":"Attwell","street":"96 Alpine Junction","postalCode":"66622","city":"Topeka","state":"KS"}, +{"id":723,"firstName":"Dru","lastName":"Linck","street":"37 Wayridge Place","postalCode":"49505","city":"Grand Rapids","state":"MI","phoneNumber":"616-197-1837"}, +{"id":724,"firstName":"Frances","lastName":"Collingridge","street":"273 Ludington Crossing","postalCode":"77255","city":"Houston","state":"TX"}, +{"id":725,"firstName":"Wilmette","lastName":"Haimes","street":"8408 Shopko Circle","postalCode":"98907","city":"Yakima","state":"WA","phoneNumber":"509-821-5948"}, +{"id":726,"firstName":"Isahella","lastName":"Rubrow","street":"25 Melby Crossing","postalCode":"59105","city":"Billings","state":"MT","email":"irubrowk5@edublogs.org"}, +{"id":727,"firstName":"Walden","lastName":"Sappson","street":"1 3rd Hill","postalCode":"60435","city":"Joliet","state":"IL","email":"wsappsonk6@ameblo.jp"}, +{"id":728,"firstName":"Blondie","lastName":"Godehard.sf","street":"4606 Caliangt Circle","postalCode":"20709","city":"Laurel","state":"MD"}, +{"id":729,"firstName":"Dion","lastName":"Wingeatt","street":"098 Ridgeview Alley","postalCode":"78769","city":"Austin","state":"TX","phoneNumber":"512-948-4113","email":"dwingeattk8@clickbank.net"}, +{"id":730,"firstName":"Antoni","lastName":"Tibbles","street":"9 Muir Court","postalCode":"25313","city":"Charleston","state":"WV","phoneNumber":"304-298-6149","email":"atibblesk9@usa.gov"}, +{"id":731,"firstName":"Quinn","lastName":"McKevin","street":"063 Washington Parkway","postalCode":"55470","city":"Minneapolis","state":"MN","phoneNumber":"612-140-1997"}, +{"id":732,"firstName":"Rita","lastName":"Hallam","street":"4 Chive Court","postalCode":"85025","city":"Phoenix","state":"AZ","email":"rhallamkb@list-manage.com"}, +{"id":733,"firstName":"Cliff","lastName":"McCrum","street":"30841 Scoville Street","postalCode":"38150","city":"Memphis","state":"TN","phoneNumber":"901-983-7713","email":"cmccrumkc@yellowpages.com"}, +{"id":734,"firstName":"Allyson","lastName":"Petkov","street":"057 Grover Trail","postalCode":"55487","city":"Minneapolis","state":"MN","phoneNumber":"612-706-7185"}, +{"id":735,"firstName":"Tanney","lastName":"Cicccitti","street":"84959 Calypso Way","postalCode":"66629","city":"Topeka","state":"KS","phoneNumber":"785-516-0753","email":"tcicccittike@netscape.com"}, +{"id":736,"firstName":"Brendin","lastName":"Behnke","street":"3057 Browning Parkway","postalCode":"38181","city":"Memphis","state":"TN","email":"bbehnkekf@answers.com"}, +{"id":737,"firstName":"Sydelle","lastName":"Lestor","street":"6 Old Shore Way","postalCode":"73167","city":"Oklahoma City","state":"OK"}, +{"id":738,"firstName":"Nilson","lastName":"Nelthorp","street":"5 Gerald Trail","postalCode":"60567","city":"Naperville","state":"IL","phoneNumber":"630-718-5304","email":"nnelthorpkh@scribd.com"}, +{"id":739,"firstName":"Randy","lastName":"Boller","street":"64 Roth Junction","postalCode":"95354","city":"Modesto","state":"CA","phoneNumber":"209-795-8532","email":"rbollerki@nature.com"}, +{"id":740,"firstName":"Vicki","lastName":"De Vaan","street":"08 Mariners Cove Terrace","postalCode":"62776","city":"Springfield","state":"IL","email":"vdevaankj@disqus.com"}, +{"id":741,"firstName":"Romain","lastName":"Castri","street":"7 Atwood Road","postalCode":"02905","city":"Providence","state":"RI","phoneNumber":"401-865-9950","email":"rcastrikk@google.com.br"}, +{"id":742,"firstName":"Adlai","lastName":"Keppel","street":"6 Farragut Circle","postalCode":"76705","city":"Waco","state":"TX","phoneNumber":"254-852-6322"}, +{"id":743,"firstName":"Arlyne","lastName":"Whalley","street":"6 Esker Terrace","postalCode":"83727","city":"Boise","state":"ID","email":"awhalleykm@amazon.co.uk"}, +{"id":744,"firstName":"Alistair","lastName":"Jennins","street":"6 Loeprich Center","postalCode":"21684","city":"Ridgely","state":"MD","phoneNumber":"410-494-2201","email":"ajenninskn@sciencedaily.com"}, +{"id":745,"firstName":"Farr","lastName":"Steer","street":"8569 Eliot Lane","postalCode":"93381","city":"Bakersfield","state":"CA","phoneNumber":"661-416-1609","email":"fsteerko@usgs.gov"}, +{"id":746,"firstName":"Analise","lastName":"Balasini","street":"8901 Lyons Parkway","postalCode":"23242","city":"Richmond","state":"VA","email":"abalasinikp@imgur.com"}, +{"id":747,"firstName":"Gilbert","lastName":"Lockton","street":"3 Leroy Court","postalCode":"49018","city":"Battle Creek","state":"MI","email":"glocktonkq@google.nl"}, +{"id":748,"firstName":"Hamlen","lastName":"Massie","street":"469 Mallory Drive","postalCode":"77250","city":"Houston","state":"TX","email":"hmassiekr@admin.ch"}, +{"id":749,"firstName":"Ebony","lastName":"Loker","street":"21173 Raven Point","postalCode":"21265","city":"Baltimore","state":"MD"}, +{"id":750,"firstName":"Kristina","lastName":"Deeble","street":"479 Warner Park","postalCode":"92013","city":"Carlsbad","state":"CA","phoneNumber":"760-377-7198","email":"kdeeblekt@ezinearticles.com"}, +{"id":751,"firstName":"Jabez","lastName":"Mummery","street":"1 East Point","postalCode":"52809","city":"Davenport","state":"IA","email":"jmummeryku@sfgate.com"}, +{"id":752,"firstName":"Perrine","lastName":"Aldwinckle","street":"98 Montana Avenue","postalCode":"85030","city":"Phoenix","state":"AZ","phoneNumber":"602-224-2810","email":"paldwincklekv@eepurl.com"}, +{"id":753,"firstName":"Humfried","lastName":"Pendleton","street":"843 Swallow Park","postalCode":"89115","city":"Las Vegas","state":"NV","phoneNumber":"702-524-6047"}, +{"id":754,"firstName":"Dario","lastName":"Chesshire","street":"638 Westport Place","postalCode":"96845","city":"Honolulu","state":"HI","phoneNumber":"808-718-1386"}, +{"id":755,"firstName":"Cherianne","lastName":"Hearfield","street":"15 Quincy Street","postalCode":"14233","city":"Buffalo","state":"NY","email":"chearfieldky@technorati.com"}, +{"id":756,"firstName":"Jemima","lastName":"Oxnam","street":"22276 Maple Street","postalCode":"92165","city":"San Diego","state":"CA","email":"joxnamkz@addtoany.com"}, +{"id":757,"firstName":"Tedmund","lastName":"Chandler","street":"81 Katie Point","postalCode":"44310","city":"Akron","state":"OH","phoneNumber":"330-336-2279","email":"tchandlerl0@webeden.co.uk"}, +{"id":758,"firstName":"Tobie","lastName":"Risley","street":"82996 Reindahl Junction","postalCode":"17140","city":"Harrisburg","state":"PA","phoneNumber":"717-272-9110","email":"trisleyl1@youtu.be"}, +{"id":759,"firstName":"Tomi","lastName":"Crevagh","street":"91791 Buhler Park","postalCode":"33715","city":"Saint Petersburg","state":"FL"}, +{"id":760,"firstName":"Luce","lastName":"Gwatkin","street":"424 Lunder Crossing","postalCode":"31416","city":"Savannah","state":"GA"}, +{"id":761,"firstName":"Vinita","lastName":"Hannon","street":"90 Claremont Trail","postalCode":"39236","city":"Jackson","state":"MS"}, +{"id":762,"firstName":"Ruby","lastName":"O'Cosgra","street":"304 Dayton Avenue","postalCode":"07188","city":"Newark","state":"NJ"}, +{"id":763,"firstName":"Amandi","lastName":"Vasiltsov","street":"98188 Killdeer Alley","postalCode":"93399","city":"Bakersfield","state":"CA","email":"avasiltsovl6@smh.com.au"}, +{"id":764,"firstName":"Juliana","lastName":"Goldspink","street":"93 Maryland Terrace","postalCode":"06705","city":"Waterbury","state":"CT","email":"jgoldspinkl7@guardian.co.uk"}, +{"id":765,"firstName":"Giorgi","lastName":"Yakovl","street":"24240 Shasta Drive","postalCode":"46814","city":"Fort Wayne","state":"IN","phoneNumber":"260-754-5907"}, +{"id":766,"firstName":"Aleksandr","lastName":"Justun","street":"06 Fulton Terrace","postalCode":"85025","city":"Phoenix","state":"AZ"}, +{"id":767,"firstName":"Cornela","lastName":"Grindell","street":"1 Hazelcrest Lane","postalCode":"53285","city":"Milwaukee","state":"WI"}, +{"id":768,"firstName":"Liv","lastName":"Madrell","street":"623 Cordelia Terrace","postalCode":"17105","city":"Harrisburg","state":"PA","email":"lmadrelllb@1688.com"}, +{"id":769,"firstName":"Konstance","lastName":"Rosebotham","street":"8930 Utah Terrace","postalCode":"20029","city":"Washington","state":"DC","email":"krosebothamlc@studiopress.com"}, +{"id":770,"firstName":"Theo","lastName":"Scotland","street":"454 Hintze Park","postalCode":"45238","city":"Cincinnati","state":"OH"}, +{"id":771,"firstName":"Trefor","lastName":"Rein","street":"9 Redwing Plaza","postalCode":"22184","city":"Vienna","state":"VA","email":"treinle@barnesandnoble.com"}, +{"id":772,"firstName":"Angelina","lastName":"Bromehead","street":"62477 Walton Circle","postalCode":"14683","city":"Rochester","state":"NY","email":"abromeheadlf@php.net"}, +{"id":773,"firstName":"Thornie","lastName":"Ivanishin","street":"0 Sunbrook Court","postalCode":"34665","city":"Pinellas Park","state":"FL","email":"tivanishinlg@aol.com"}, +{"id":774,"firstName":"Dyana","lastName":"McNickle","street":"2696 Lakewood Gardens Pass","postalCode":"20456","city":"Washington","state":"DC","phoneNumber":"202-653-8740"}, +{"id":775,"firstName":"Humfried","lastName":"Suero","street":"643 Pearson Junction","postalCode":"28410","city":"Wilmington","state":"NC"}, +{"id":776,"firstName":"Jessamine","lastName":"Stockings","street":"739 Moose Street","postalCode":"94137","city":"San Francisco","state":"CA","phoneNumber":"415-641-0091","email":"jstockingslj@skype.com"}, +{"id":777,"firstName":"Laryssa","lastName":"Grahl","street":"0538 Bultman Point","postalCode":"81505","city":"Grand Junction","state":"CO"}, +{"id":778,"firstName":"Susan","lastName":"Stonnell","street":"7 Dennis Parkway","postalCode":"67215","city":"Wichita","state":"KS","phoneNumber":"316-966-3243","email":"sstonnellll@nps.gov"}, +{"id":779,"firstName":"Melinde","lastName":"Segoe","street":"9 Dottie Place","postalCode":"19125","city":"Philadelphia","state":"PA","phoneNumber":"215-119-3801"}, +{"id":780,"firstName":"Skip","lastName":"Sedgebeer","street":"1 Eliot Drive","postalCode":"20005","city":"Washington","state":"DC","email":"ssedgebeerln@blogtalkradio.com"}, +{"id":781,"firstName":"Annabel","lastName":"Schusterl","street":"6094 Talisman Lane","postalCode":"68510","city":"Lincoln","state":"NE","phoneNumber":"402-355-7934","email":"aschusterllo@cargocollective.com"}, +{"id":782,"firstName":"Emiline","lastName":"Whittlesey","street":"5 Claremont Lane","postalCode":"77040","city":"Houston","state":"TX","phoneNumber":"832-835-1321","email":"ewhittleseylp@geocities.com"}, +{"id":783,"firstName":"Frasquito","lastName":"Loukes","street":"47 Merchant Pass","postalCode":"27499","city":"Greensboro","state":"NC","phoneNumber":"336-265-5719","email":"floukeslq@google.it"}, +{"id":784,"firstName":"Jerald","lastName":"Fairholm","street":"5939 Mariners Cove Road","postalCode":"76598","city":"Gatesville","state":"TX","email":"jfairholmlr@smh.com.au"}, +{"id":785,"firstName":"Melisent","lastName":"Strange","street":"50 Glendale Trail","postalCode":"10606","city":"White Plains","state":"NY"}, +{"id":786,"firstName":"Aaron","lastName":"Mixter","street":"14347 Darwin Place","postalCode":"33124","city":"Miami","state":"FL","phoneNumber":"786-244-1856","email":"amixterlt@dmoz.org"}, +{"id":787,"firstName":"Margy","lastName":"Falla","street":"5 Caliangt Trail","postalCode":"40287","city":"Louisville","state":"KY","email":"mfallalu@booking.com"}, +{"id":788,"firstName":"Malinde","lastName":"Ashdown","street":"97234 Anniversary Hill","postalCode":"06152","city":"Hartford","state":"CT","phoneNumber":"860-140-7408","email":"mashdownlv@economist.com"}, +{"id":789,"firstName":"Carolynn","lastName":"Dulany","street":"33 Melby Road","postalCode":"74116","city":"Tulsa","state":"OK","phoneNumber":"918-140-7039","email":"cdulanylw@yelp.com"}, +{"id":790,"firstName":"Kissee","lastName":"Escale","street":"1470 Hanson Parkway","postalCode":"92812","city":"Anaheim","state":"CA","phoneNumber":"714-466-6376"}, +{"id":791,"firstName":"Rebeka","lastName":"Moralee","street":"898 Oak Street","postalCode":"34108","city":"Naples","state":"FL","email":"rmoraleely@shutterfly.com"}, +{"id":792,"firstName":"Cort","lastName":"Arter","street":"35039 Menomonie Way","postalCode":"50936","city":"Des Moines","state":"IA","email":"carterlz@surveymonkey.com"}, +{"id":793,"firstName":"Kirsteni","lastName":"Heady","street":"473 Lawn Street","postalCode":"32092","city":"Saint Augustine","state":"FL","phoneNumber":"904-424-3526","email":"kheadym0@usda.gov"}, +{"id":794,"firstName":"Ettie","lastName":"Overil","street":"1085 Waubesa Lane","postalCode":"18105","city":"Allentown","state":"PA"}, +{"id":795,"firstName":"Evey","lastName":"Tesimon","street":"9 Cordelia Place","postalCode":"55127","city":"Saint Paul","state":"MN"}, +{"id":796,"firstName":"Hersh","lastName":"Lebond","street":"5265 Bartelt Park","postalCode":"34282","city":"Bradenton","state":"FL","phoneNumber":"941-114-7090"}, +{"id":797,"firstName":"Hendrika","lastName":"Govan","street":"27747 La Follette Avenue","postalCode":"21229","city":"Baltimore","state":"MD","email":"hgovanm4@cam.ac.uk"}, +{"id":798,"firstName":"Renado","lastName":"Hambly","street":"5211 Schmedeman Drive","postalCode":"68105","city":"Omaha","state":"NE","phoneNumber":"402-183-0376","email":"rhamblym5@netlog.com"}, +{"id":799,"firstName":"Brewer","lastName":"Boyn","street":"3161 Novick Lane","postalCode":"77055","city":"Houston","state":"TX","email":"bboynm6@google.it"}, +{"id":800,"firstName":"Patrick","lastName":"Speck","street":"57052 Ronald Regan Way","postalCode":"30306","city":"Atlanta","state":"GA","phoneNumber":"770-764-6971","email":"pspeckm7@live.com"}, +{"id":801,"firstName":"Skipper","lastName":"Conybear","street":"75 Autumn Leaf Alley","postalCode":"79968","city":"El Paso","state":"TX","phoneNumber":"915-705-5594","email":"sconybearm8@jimdo.com"}, +{"id":802,"firstName":"Elmore","lastName":"Quilty","street":"027 Warbler Court","postalCode":"35210","city":"Birmingham","state":"AL","email":"equiltym9@ebay.co.uk"}, +{"id":803,"firstName":"Estella","lastName":"Jorck","street":"52695 Holy Cross Trail","postalCode":"47134","city":"Jeffersonville","state":"IN","email":"ejorckma@bluehost.com"}, +{"id":804,"firstName":"Scotti","lastName":"Goodale","street":"7551 Dottie Pass","postalCode":"77713","city":"Beaumont","state":"TX","email":"sgoodalemb@nba.com"}, +{"id":805,"firstName":"Catha","lastName":"Shekle","street":"38839 Derek Terrace","postalCode":"62718","city":"Springfield","state":"IL","email":"csheklemc@tmall.com"}, +{"id":806,"firstName":"Clemens","lastName":"Chuter","street":"015 Charing Cross Pass","postalCode":"30306","city":"Atlanta","state":"GA"}, +{"id":807,"firstName":"Kiley","lastName":"Vasiltsov","street":"8 Reindahl Hill","postalCode":"33432","city":"Boca Raton","state":"FL","email":"kvasiltsovme@google.nl"}, +{"id":808,"firstName":"Korrie","lastName":"McGauhy","street":"188 Golf Lane","postalCode":"89110","city":"Las Vegas","state":"NV","phoneNumber":"702-647-1620","email":"kmcgauhymf@goodreads.com"}, +{"id":809,"firstName":"Giustina","lastName":"Hentze","street":"62244 Roth Way","postalCode":"48604","city":"Saginaw","state":"MI","email":"ghentzemg@pcworld.com"}, +{"id":810,"firstName":"Emilia","lastName":"Virgoe","street":"13910 Alpine Lane","postalCode":"33994","city":"Fort Myers","state":"FL","phoneNumber":"239-993-2041","email":"evirgoemh@mediafire.com"}, +{"id":811,"firstName":"Gordan","lastName":"Trimming","street":"38168 Transport Avenue","postalCode":"38131","city":"Memphis","state":"TN","email":"gtrimmingmi@spiegel.de"}, +{"id":812,"firstName":"Tadeo","lastName":"Vannoort","street":"41476 Pond Alley","postalCode":"20851","city":"Rockville","state":"MD","phoneNumber":"240-432-6489","email":"tvannoortmj@privacy.gov.au"}, +{"id":813,"firstName":"Joseito","lastName":"Viant","street":"1390 Kropf Court","postalCode":"04109","city":"Portland","state":"ME"}, +{"id":814,"firstName":"Blake","lastName":"Tailby","street":"5 Bultman Terrace","postalCode":"31914","city":"Columbus","state":"GA"}, +{"id":815,"firstName":"Cynthie","lastName":"Victor","street":"64 Hoard Avenue","postalCode":"46221","city":"Indianapolis","state":"IN","phoneNumber":"317-836-2511","email":"cvictormm@bizjournals.com"}, +{"id":816,"firstName":"Kristoforo","lastName":"Luckman","street":"019 Ohio Avenue","postalCode":"58505","city":"Bismarck","state":"ND","phoneNumber":"701-921-3472"}, +{"id":817,"firstName":"Celinka","lastName":"Brakewell","street":"5702 Tennessee Pass","postalCode":"92612","city":"Irvine","state":"CA","phoneNumber":"714-584-5599","email":"cbrakewellmo@house.gov"}, +{"id":818,"firstName":"Analiese","lastName":"Debenham","street":"7 Straubel Pass","postalCode":"31704","city":"Albany","state":"GA","phoneNumber":"229-600-4384","email":"adebenhammp@dell.com"}, +{"id":819,"firstName":"Sebastiano","lastName":"Eskriett","street":"0 Northridge Pass","postalCode":"34114","city":"Naples","state":"FL","phoneNumber":"239-651-1326","email":"seskriettmq@berkeley.edu"}, +{"id":820,"firstName":"Jermaine","lastName":"Donisthorpe","street":"69319 Hollow Ridge Park","postalCode":"62794","city":"Springfield","state":"IL","phoneNumber":"217-510-3030","email":"jdonisthorpemr@istockphoto.com"}, +{"id":821,"firstName":"Tera","lastName":"Smalecombe","street":"646 Oakridge Avenue","postalCode":"43699","city":"Toledo","state":"OH","email":"tsmalecombems@tripod.com"}, +{"id":822,"firstName":"Issie","lastName":"Cohane","street":"79078 Fair Oaks Circle","postalCode":"40233","city":"Louisville","state":"KY","email":"icohanemt@wired.com"}, +{"id":823,"firstName":"Nanete","lastName":"Erb","street":"02 Truax Place","postalCode":"88563","city":"El Paso","state":"TX","phoneNumber":"915-234-2792"}, +{"id":824,"firstName":"Benetta","lastName":"Roger","street":"822 Fallview Alley","postalCode":"33625","city":"Tampa","state":"FL","phoneNumber":"813-715-8911","email":"brogermv@ca.gov"}, +{"id":825,"firstName":"Sascha","lastName":"Hillyatt","street":"06 Fisk Plaza","postalCode":"11407","city":"Jamaica","state":"NY"}, +{"id":826,"firstName":"Britt","lastName":"Gilderoy","street":"64312 Delaware Place","postalCode":"89135","city":"Las Vegas","state":"NV"}, +{"id":827,"firstName":"Sterne","lastName":"Frissell","street":"69121 Sycamore Way","postalCode":"06912","city":"Stamford","state":"CT"}, +{"id":828,"firstName":"Lonny","lastName":"Petersen","street":"6 Golf Course Crossing","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-245-3289","email":"lpetersenmz@msu.edu"}, +{"id":829,"firstName":"Maridel","lastName":"Clunie","street":"0312 Dryden Street","postalCode":"80328","city":"Boulder","state":"CO","phoneNumber":"303-848-1116","email":"mclunien0@china.com.cn"}, +{"id":830,"firstName":"Annabal","lastName":"Pruckner","street":"98481 Anhalt Pass","postalCode":"30340","city":"Atlanta","state":"GA","email":"aprucknern1@bandcamp.com"}, +{"id":831,"firstName":"Carin","lastName":"Ambrois","street":"7982 Vahlen Road","postalCode":"85010","city":"Phoenix","state":"AZ"}, +{"id":832,"firstName":"Consuela","lastName":"Grubey","street":"1 Lillian Circle","postalCode":"89714","city":"Carson City","state":"NV","email":"cgrubeyn3@google.pl"}, +{"id":833,"firstName":"Friedrick","lastName":"Ventom","street":"703 Almo Crossing","postalCode":"43215","city":"Columbus","state":"OH"}, +{"id":834,"firstName":"Shalom","lastName":"Rosten","street":"4460 Parkside Road","postalCode":"37215","city":"Nashville","state":"TN","email":"srostenn5@e-recht24.de"}, +{"id":835,"firstName":"Sofia","lastName":"Pottie","street":"89885 Golf Course Junction","postalCode":"27635","city":"Raleigh","state":"NC","email":"spottien6@weather.com"}, +{"id":836,"firstName":"Ed","lastName":"Cecely","street":"38576 Gina Trail","postalCode":"85305","city":"Glendale","state":"AZ","email":"ececelyn7@friendfeed.com"}, +{"id":837,"firstName":"Ruthann","lastName":"Bignold","street":"202 Monterey Alley","postalCode":"19104","city":"Philadelphia","state":"PA","phoneNumber":"610-892-3949"}, +{"id":838,"firstName":"Vonnie","lastName":"Leeming","street":"5 Farmco Center","postalCode":"18706","city":"Wilkes Barre","state":"PA"}, +{"id":839,"firstName":"Diandra","lastName":"Gredden","street":"68178 Parkside Hill","postalCode":"89120","city":"Las Vegas","state":"NV","phoneNumber":"702-952-4026"}, +{"id":840,"firstName":"Donny","lastName":"Bruckent","street":"6 Dapin Way","postalCode":"98127","city":"Seattle","state":"WA","email":"dbruckentnb@stumbleupon.com"}, +{"id":841,"firstName":"Mill","lastName":"Finlay","street":"9 Meadow Valley Terrace","postalCode":"94405","city":"San Mateo","state":"CA","email":"mfinlaync@hibu.com"}, +{"id":842,"firstName":"Garv","lastName":"Feldberger","street":"5916 Marquette Lane","postalCode":"98127","city":"Seattle","state":"WA"}, +{"id":843,"firstName":"Micheal","lastName":"Favela","street":"41587 Dunning Road","postalCode":"47712","city":"Evansville","state":"IN"}, +{"id":844,"firstName":"Shannon","lastName":"Alvaro","street":"86377 Becker Avenue","postalCode":"33315","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-661-6648","email":"salvaronf@usa.gov"}, +{"id":845,"firstName":"Corenda","lastName":"Aldcorn","street":"19 Bowman Court","postalCode":"67220","city":"Wichita","state":"KS","phoneNumber":"316-835-1638","email":"caldcornng@ebay.com"}, +{"id":846,"firstName":"Alvy","lastName":"Mahood","street":"0814 Spohn Hill","postalCode":"50347","city":"Des Moines","state":"IA","phoneNumber":"515-865-3669","email":"amahoodnh@toplist.cz"}, +{"id":847,"firstName":"Alexandr","lastName":"Stut","street":"8672 Anderson Court","postalCode":"78410","city":"Corpus Christi","state":"TX"}, +{"id":848,"firstName":"Gale","lastName":"Chaperling","street":"78873 Bellgrove Alley","postalCode":"10009","city":"New York City","state":"NY","phoneNumber":"212-978-6798","email":"gchaperlingnj@livejournal.com"}, +{"id":849,"firstName":"Eunice","lastName":"Dadson","street":"340 Dwight Hill","postalCode":"52809","city":"Davenport","state":"IA","phoneNumber":"563-787-9869","email":"edadsonnk@businessinsider.com"}, +{"id":850,"firstName":"Florentia","lastName":"Camin","street":"68733 Orin Point","postalCode":"46867","city":"Fort Wayne","state":"IN","phoneNumber":"260-920-3928","email":"fcaminnl@technorati.com"}, +{"id":851,"firstName":"Norina","lastName":"Vannacci","street":"585 Karstens Circle","postalCode":"45233","city":"Cincinnati","state":"OH"}, +{"id":852,"firstName":"Syd","lastName":"Gianolo","street":"99755 Arrowood Hill","postalCode":"33673","city":"Tampa","state":"FL","phoneNumber":"813-878-8150","email":"sgianolonn@uol.com.br"}, +{"id":853,"firstName":"Timofei","lastName":"Serle","street":"1081 Cascade Park","postalCode":"94257","city":"Sacramento","state":"CA","email":"tserleno@behance.net"}, +{"id":854,"firstName":"Moina","lastName":"Ciobutaro","street":"502 Stone Corner Circle","postalCode":"33018","city":"Hialeah","state":"FL","email":"mciobutaronp@ycombinator.com"}, +{"id":855,"firstName":"Nikolaos","lastName":"Gavaghan","street":"47136 Golf Junction","postalCode":"97255","city":"Portland","state":"OR"}, +{"id":856,"firstName":"Gallard","lastName":"Jenks","street":"2 Carioca Terrace","postalCode":"35263","city":"Birmingham","state":"AL","email":"gjenksnr@blogtalkradio.com"}, +{"id":857,"firstName":"Dare","lastName":"Nielson","street":"3 Carberry Hill","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-211-0944"}, +{"id":858,"firstName":"Cecilius","lastName":"Fasse","street":"1 Novick Street","postalCode":"68583","city":"Lincoln","state":"NE","phoneNumber":"402-342-4624","email":"cfassent@zimbio.com"}, +{"id":859,"firstName":"Kevon","lastName":"Doxsey","street":"152 Warrior Pass","postalCode":"91616","city":"North Hollywood","state":"CA","phoneNumber":"213-339-9582"}, +{"id":860,"firstName":"Matti","lastName":"Gras","street":"4567 Bunting Way","postalCode":"94544","city":"Hayward","state":"CA"}, +{"id":861,"firstName":"Nathan","lastName":"Longfut","street":"3178 Mockingbird Alley","postalCode":"97255","city":"Portland","state":"OR","phoneNumber":"971-206-3004"}, +{"id":862,"firstName":"Willetta","lastName":"Fitzpayn","street":"87 Alpine Drive","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-698-7578","email":"wfitzpaynnx@geocities.jp"}, +{"id":863,"firstName":"Emanuel","lastName":"Jikylls","street":"42 Heffernan Court","postalCode":"33884","city":"Winter Haven","state":"FL","email":"ejikyllsny@biglobe.ne.jp"}, +{"id":864,"firstName":"Lenard","lastName":"Nore","street":"7 Nevada Avenue","postalCode":"77343","city":"Huntsville","state":"TX","phoneNumber":"936-267-6742","email":"lnorenz@netscape.com"}, +{"id":865,"firstName":"Jeanine","lastName":"MacTurlough","street":"26343 Gale Crossing","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-865-6630","email":"jmacturlougho0@scientificamerican.com"}, +{"id":866,"firstName":"Jaquenetta","lastName":"Dorn","street":"3963 Novick Way","postalCode":"19495","city":"Valley Forge","state":"PA","email":"jdorno1@about.com"}, +{"id":867,"firstName":"Amity","lastName":"Titterrell","street":"3216 Lindbergh Court","postalCode":"90071","city":"Los Angeles","state":"CA","phoneNumber":"626-416-1494","email":"atitterrello2@psu.edu"}, +{"id":868,"firstName":"Rafaelia","lastName":"Melly","street":"6 Westridge Center","postalCode":"61825","city":"Champaign","state":"IL","email":"rmellyo3@ovh.net"}, +{"id":869,"firstName":"Cordi","lastName":"Martinovsky","street":"38 Forest Dale Terrace","postalCode":"50362","city":"Des Moines","state":"IA","email":"cmartinovskyo4@tuttocitta.it"}, +{"id":870,"firstName":"Humfrid","lastName":"Varne","street":"858 Farwell Street","postalCode":"06127","city":"West Hartford","state":"CT","email":"hvarneo5@yolasite.com"}, +{"id":871,"firstName":"Ford","lastName":"Pinchback","street":"363 Lien Pass","postalCode":"20599","city":"Washington","state":"DC","email":"fpinchbacko6@nytimes.com"}, +{"id":872,"firstName":"Maible","lastName":"Haresign","street":"809 Monica Point","postalCode":"28230","city":"Charlotte","state":"NC"}, +{"id":873,"firstName":"Rozamond","lastName":"Challis","street":"312 Mcbride Plaza","postalCode":"77266","city":"Houston","state":"TX","email":"rchalliso8@google.ca"}, +{"id":874,"firstName":"Myrah","lastName":"Menendez","street":"21 Garrison Plaza","postalCode":"23208","city":"Richmond","state":"VA","email":"mmenendezo9@msn.com"}, +{"id":875,"firstName":"Roberto","lastName":"Lamb","street":"3339 Cottonwood Pass","postalCode":"43699","city":"Toledo","state":"OH","phoneNumber":"419-633-9671"}, +{"id":876,"firstName":"Foster","lastName":"Delyth","street":"91500 Carpenter Point","postalCode":"79928","city":"El Paso","state":"TX","phoneNumber":"915-782-9005"}, +{"id":877,"firstName":"Nicholle","lastName":"Pickring","street":"8083 Talmadge Lane","postalCode":"14624","city":"Rochester","state":"NY","email":"npickringoc@tuttocitta.it"}, +{"id":878,"firstName":"Theodosia","lastName":"Bayliss","street":"6 Marcy Parkway","postalCode":"33954","city":"Port Charlotte","state":"FL"}, +{"id":879,"firstName":"Araldo","lastName":"Dowzell","street":"8376 Carpenter Court","postalCode":"71151","city":"Shreveport","state":"LA","email":"adowzelloe@army.mil"}, +{"id":880,"firstName":"Hugues","lastName":"McColgan","street":"990 Southridge Point","postalCode":"93591","city":"Palmdale","state":"CA","phoneNumber":"661-978-2646","email":"hmccolganof@netvibes.com"}, +{"id":881,"firstName":"Annissa","lastName":"Mordue","street":"62114 Ludington Lane","postalCode":"30911","city":"Augusta","state":"GA","phoneNumber":"706-152-3967","email":"amordueog@tripod.com"}, +{"id":882,"firstName":"Tierney","lastName":"Claughton","street":"3 Twin Pines Trail","postalCode":"88563","city":"El Paso","state":"TX","phoneNumber":"915-784-7980"}, +{"id":883,"firstName":"Rey","lastName":"Fleckno","street":"49 Oakridge Point","postalCode":"27605","city":"Raleigh","state":"NC"}, +{"id":884,"firstName":"Stacee","lastName":"Rewcastle","street":"19 Glendale Point","postalCode":"78278","city":"San Antonio","state":"TX","phoneNumber":"210-454-3087","email":"srewcastleoj@ustream.tv"}, +{"id":885,"firstName":"Delano","lastName":"Bragger","street":"0 Hoffman Center","postalCode":"47725","city":"Evansville","state":"IN","email":"dbraggerok@ifeng.com"}, +{"id":886,"firstName":"Redford","lastName":"Bare","street":"801 Garrison Court","postalCode":"08638","city":"Trenton","state":"NJ"}, +{"id":887,"firstName":"Grantham","lastName":"Arlidge","street":"69 Shelley Parkway","postalCode":"34210","city":"Bradenton","state":"FL","email":"garlidgeom@google.nl"}, +{"id":888,"firstName":"Debbie","lastName":"Tommaseo","street":"295 Crowley Alley","postalCode":"98516","city":"Olympia","state":"WA","email":"dtommaseoon@xrea.com"}, +{"id":889,"firstName":"Ragnar","lastName":"O' Byrne","street":"88163 Manitowish Terrace","postalCode":"20260","city":"Washington","state":"DC","phoneNumber":"202-982-3050","email":"robyrneoo@ft.com"}, +{"id":890,"firstName":"Leopold","lastName":"Woodington","street":"44 Vera Pass","postalCode":"24009","city":"Roanoke","state":"VA","email":"lwoodingtonop@engadget.com"}, +{"id":891,"firstName":"Farrah","lastName":"Conniam","street":"2078 Bunting Parkway","postalCode":"68134","city":"Omaha","state":"NE","email":"fconniamoq@github.com"}, +{"id":892,"firstName":"Augustus","lastName":"Morrish","street":"430 Sauthoff Plaza","postalCode":"27710","city":"Durham","state":"NC","phoneNumber":"919-266-8155","email":"amorrishor@naver.com"}, +{"id":893,"firstName":"Cassaundra","lastName":"Deaves","street":"32 Clarendon Way","postalCode":"40266","city":"Louisville","state":"KY","phoneNumber":"502-138-7158"}, +{"id":894,"firstName":"Glynn","lastName":"Shewan","street":"989 Susan Avenue","postalCode":"95194","city":"San Jose","state":"CA","email":"gshewanot@reuters.com"}, +{"id":895,"firstName":"Neils","lastName":"Niesing","street":"488 Jana Road","postalCode":"48232","city":"Detroit","state":"MI","email":"nniesingou@cafepress.com"}, +{"id":896,"firstName":"Alix","lastName":"Cleeton","street":"8 Merrick Crossing","postalCode":"18018","city":"Bethlehem","state":"PA","email":"acleetonov@ask.com"}, +{"id":897,"firstName":"Kyrstin","lastName":"Alejandro","street":"45487 Carey Way","postalCode":"37919","city":"Knoxville","state":"TN","email":"kalejandroow@scribd.com"}, +{"id":898,"firstName":"Waylin","lastName":"De Caroli","street":"9237 Ludington Plaza","postalCode":"77554","city":"Galveston","state":"TX","email":"wdecaroliox@washingtonpost.com"}, +{"id":899,"firstName":"Lian","lastName":"Brade","street":"704 Lotheville Drive","postalCode":"24014","city":"Roanoke","state":"VA","phoneNumber":"540-712-7147"}, +{"id":900,"firstName":"Griz","lastName":"Elgie","street":"435 Northridge Point","postalCode":"93399","city":"Bakersfield","state":"CA","email":"gelgieoz@hao123.com"}, +{"id":901,"firstName":"Georgeanna","lastName":"Gilberthorpe","street":"6 Tomscot Park","postalCode":"37931","city":"Knoxville","state":"TN","phoneNumber":"865-664-6191","email":"ggilberthorpep0@typepad.com"}, +{"id":902,"firstName":"Korrie","lastName":"Goldstraw","street":"00 Lindbergh Plaza","postalCode":"14225","city":"Buffalo","state":"NY","email":"kgoldstrawp1@yellowbook.com"}, +{"id":903,"firstName":"Hervey","lastName":"Wyse","street":"27 Buell Road","postalCode":"75044","city":"Garland","state":"TX","phoneNumber":"972-243-9031","email":"hwysep2@deliciousdays.com"}, +{"id":904,"firstName":"Georgeta","lastName":"Buckam","street":"0 Continental Hill","postalCode":"65810","city":"Springfield","state":"MO","phoneNumber":"417-682-2553","email":"gbuckamp3@java.com"}, +{"id":905,"firstName":"Hussein","lastName":"Jacson","street":"478 Vermont Court","postalCode":"95354","city":"Modesto","state":"CA","phoneNumber":"209-714-7362","email":"hjacsonp4@squarespace.com"}, +{"id":906,"firstName":"Chrysler","lastName":"Heddy","street":"913 Steensland Parkway","postalCode":"20709","city":"Laurel","state":"MD","phoneNumber":"410-691-9748"}, +{"id":907,"firstName":"Jourdan","lastName":"Frise","street":"35 Erie Point","postalCode":"94245","city":"Sacramento","state":"CA","email":"jfrisep6@eepurl.com"}, +{"id":908,"firstName":"Roxie","lastName":"Gimber","street":"9237 Vermont Pass","postalCode":"88553","city":"El Paso","state":"TX","email":"rgimberp7@mayoclinic.com"}, +{"id":909,"firstName":"Jenilee","lastName":"MacNab","street":"23 Union Alley","postalCode":"29579","city":"Myrtle Beach","state":"SC","email":"jmacnabp8@mit.edu"}, +{"id":910,"firstName":"Lola","lastName":"Bier","street":"371 Bartillon Avenue","postalCode":"71105","city":"Shreveport","state":"LA","phoneNumber":"318-818-1659","email":"lbierp9@goo.gl"}, +{"id":911,"firstName":"Fayina","lastName":"Brosel","street":"3255 Macpherson Pass","postalCode":"55166","city":"Saint Paul","state":"MN","email":"fbroselpa@rakuten.co.jp"}, +{"id":912,"firstName":"Ellerey","lastName":"Darell","street":"735 Leroy Road","postalCode":"07544","city":"Paterson","state":"NJ"}, +{"id":913,"firstName":"Lorianne","lastName":"McLanachan","street":"22 Alpine Point","postalCode":"77293","city":"Houston","state":"TX","email":"lmclanachanpc@dmoz.org"}, +{"id":914,"firstName":"Merrill","lastName":"Searson","street":"8447 Namekagon Hill","postalCode":"55114","city":"Saint Paul","state":"MN","phoneNumber":"651-567-8380","email":"msearsonpd@census.gov"}, +{"id":915,"firstName":"Nisse","lastName":"Larive","street":"976 Forest Dale Way","postalCode":"10004","city":"New York City","state":"NY","phoneNumber":"347-192-6897","email":"nlarivepe@drupal.org"}, +{"id":916,"firstName":"Cazzie","lastName":"Brenard","street":"647 Gulseth Plaza","postalCode":"02283","city":"Boston","state":"MA","phoneNumber":"781-248-3572","email":"cbrenardpf@uiuc.edu"}, +{"id":917,"firstName":"Gael","lastName":"Ramirez","street":"161 Basil Terrace","postalCode":"93786","city":"Fresno","state":"CA","phoneNumber":"559-692-2653","email":"gramirezpg@ucoz.ru"}, +{"id":918,"firstName":"Culver","lastName":"Le Brun","street":"73906 Muir Terrace","postalCode":"95973","city":"Chico","state":"CA","email":"clebrunph@jigsy.com"}, +{"id":919,"firstName":"Bordie","lastName":"Muskett","street":"27 Nobel Trail","postalCode":"20599","city":"Washington","state":"DC","phoneNumber":"202-872-5253"}, +{"id":920,"firstName":"Riccardo","lastName":"Miskin","street":"778 Eagan Place","postalCode":"55407","city":"Minneapolis","state":"MN","email":"rmiskinpj@slideshare.net"}, +{"id":921,"firstName":"Cristabel","lastName":"Gowlett","street":"5 Quincy Lane","postalCode":"62525","city":"Decatur","state":"IL","email":"cgowlettpk@cafepress.com"}, +{"id":922,"firstName":"Crawford","lastName":"Huby","street":"6 Gina Lane","postalCode":"94913","city":"San Rafael","state":"CA","phoneNumber":"415-133-8552","email":"chubypl@jugem.jp"}, +{"id":923,"firstName":"Cherish","lastName":"Mutch","street":"8 Oak Valley Lane","postalCode":"20719","city":"Bowie","state":"MD","phoneNumber":"240-982-9087"}, +{"id":924,"firstName":"Jerrie","lastName":"Latek","street":"9462 Moulton Terrace","postalCode":"52809","city":"Davenport","state":"IA","phoneNumber":"563-687-6664","email":"jlatekpn@gov.uk"}, +{"id":925,"firstName":"Lacey","lastName":"Maris","street":"1 Carpenter Hill","postalCode":"61605","city":"Peoria","state":"IL","phoneNumber":"309-570-3216"}, +{"id":926,"firstName":"Daffy","lastName":"Binion","street":"8 Milwaukee Parkway","postalCode":"33129","city":"Miami","state":"FL","phoneNumber":"305-579-9009"}, +{"id":927,"firstName":"Melita","lastName":"Valde","street":"629 Packers Crossing","postalCode":"06140","city":"Hartford","state":"CT","phoneNumber":"860-747-5927","email":"mvaldepq@storify.com"}, +{"id":928,"firstName":"Cherlyn","lastName":"Rosenshine","street":"764 Pepper Wood Place","postalCode":"72204","city":"Little Rock","state":"AR","phoneNumber":"501-823-8134"}, +{"id":929,"firstName":"Morty","lastName":"Stanger","street":"3286 Charing Cross Court","postalCode":"08603","city":"Trenton","state":"NJ","email":"mstangerps@yellowpages.com"}, +{"id":930,"firstName":"Bernete","lastName":"Hirth","street":"83 Granby Center","postalCode":"95194","city":"San Jose","state":"CA","phoneNumber":"408-738-2333","email":"bhirthpt@people.com.cn"}, +{"id":931,"firstName":"Elena","lastName":"Wace","street":"98 Grover Trail","postalCode":"33742","city":"Saint Petersburg","state":"FL","phoneNumber":"727-883-2239","email":"ewacepu@merriam-webster.com"}, +{"id":932,"firstName":"Giselbert","lastName":"Sisland","street":"2214 Sheridan Pass","postalCode":"40225","city":"Louisville","state":"KY"}, +{"id":933,"firstName":"Herb","lastName":"Voyce","street":"628 Basil Pass","postalCode":"21265","city":"Baltimore","state":"MD"}, +{"id":934,"firstName":"Vina","lastName":"Antonetti","street":"6 Springview Terrace","postalCode":"20430","city":"Washington","state":"DC","phoneNumber":"202-955-4578"}, +{"id":935,"firstName":"Bard","lastName":"De Avenell","street":"2775 Clarendon Avenue","postalCode":"53215","city":"Milwaukee","state":"WI"}, +{"id":936,"firstName":"Briana","lastName":"Pinshon","street":"43 Del Sol Street","postalCode":"33615","city":"Tampa","state":"FL","email":"bpinshonpz@java.com"}, +{"id":937,"firstName":"Hilly","lastName":"Aysh","street":"37 Doe Crossing Terrace","postalCode":"23705","city":"Portsmouth","state":"VA","phoneNumber":"757-992-8124"}, +{"id":938,"firstName":"Marylin","lastName":"Ciotto","street":"3957 Browning Pass","postalCode":"94807","city":"Richmond","state":"CA"}, +{"id":939,"firstName":"Cam","lastName":"Kurth","street":"155 Walton Point","postalCode":"92867","city":"Orange","state":"CA","phoneNumber":"949-955-2248"}, +{"id":940,"firstName":"Rawley","lastName":"Bickle","street":"54 Macpherson Point","postalCode":"93762","city":"Fresno","state":"CA","phoneNumber":"559-331-2187","email":"rbickleq3@delicious.com"}, +{"id":941,"firstName":"Merlina","lastName":"Dunster","street":"70557 Toban Trail","postalCode":"20005","city":"Washington","state":"DC","phoneNumber":"202-999-8731"}, +{"id":942,"firstName":"Kennie","lastName":"MacCoughan","street":"04566 Browning Parkway","postalCode":"75507","city":"Texarkana","state":"TX","phoneNumber":"903-622-7509","email":"kmaccoughanq5@reuters.com"}, +{"id":943,"firstName":"Jase","lastName":"Cholomin","street":"21497 Blaine Road","postalCode":"33777","city":"Largo","state":"FL","email":"jcholominq6@cocolog-nifty.com"}, +{"id":944,"firstName":"Cirstoforo","lastName":"Billingsley","street":"1306 Summer Ridge Court","postalCode":"02124","city":"Boston","state":"MA","email":"cbillingsleyq7@google.es"}, +{"id":945,"firstName":"Berkly","lastName":"Lawles","street":"80400 Milwaukee Way","postalCode":"64082","city":"Lees Summit","state":"MO","email":"blawlesq8@jiathis.com"}, +{"id":946,"firstName":"Otha","lastName":"Key","street":"59639 Center Circle","postalCode":"35405","city":"Tuscaloosa","state":"AL","email":"okeyq9@deliciousdays.com"}, +{"id":947,"firstName":"Anselma","lastName":"Debow","street":"5 Spohn Parkway","postalCode":"80241","city":"Denver","state":"CO","email":"adebowqa@yelp.com"}, +{"id":948,"firstName":"Auria","lastName":"Beric","street":"5 Anderson Way","postalCode":"20022","city":"Washington","state":"DC","email":"abericqb@a8.net"}, +{"id":949,"firstName":"Eirena","lastName":"Caswall","street":"4648 Fulton Street","postalCode":"64054","city":"Independence","state":"MO","phoneNumber":"816-406-0779","email":"ecaswallqc@i2i.jp"}, +{"id":950,"firstName":"Tracy","lastName":"Sperwell","street":"4 Heath Drive","postalCode":"91499","city":"Van Nuys","state":"CA"}, +{"id":951,"firstName":"Cherilyn","lastName":"Faint","street":"814 Anniversary Lane","postalCode":"24503","city":"Lynchburg","state":"VA","phoneNumber":"434-722-2344","email":"cfaintqe@amazon.de"}, +{"id":952,"firstName":"Sela","lastName":"Darcey","street":"002 Walton Hill","postalCode":"78703","city":"Austin","state":"TX","email":"sdarceyqf@lycos.com"}, +{"id":953,"firstName":"Freddie","lastName":"Klagge","street":"842 Schlimgen Road","postalCode":"29905","city":"Beaufort","state":"SC","email":"fklaggeqg@1und1.de"}, +{"id":954,"firstName":"Eunice","lastName":"Walrond","street":"4 Mifflin Terrace","postalCode":"68117","city":"Omaha","state":"NE","email":"ewalrondqh@arstechnica.com"}, +{"id":955,"firstName":"Adelbert","lastName":"Meuse","street":"971 Doe Crossing Court","postalCode":"27157","city":"Winston Salem","state":"NC"}, +{"id":956,"firstName":"Caitlin","lastName":"Windham","street":"29 Cordelia Alley","postalCode":"76210","city":"Denton","state":"TX","phoneNumber":"214-498-2801","email":"cwindhamqj@trellian.com"}, +{"id":957,"firstName":"Jere","lastName":"Presho","street":"7 Monica Plaza","postalCode":"75710","city":"Tyler","state":"TX","email":"jpreshoqk@e-recht24.de"}, +{"id":958,"firstName":"Lonny","lastName":"Cotter","street":"5686 Rutledge Place","postalCode":"40596","city":"Lexington","state":"KY","email":"lcotterql@last.fm"}, +{"id":959,"firstName":"Sarah","lastName":"Earnshaw","street":"69 Prentice Point","postalCode":"60669","city":"Chicago","state":"IL","email":"searnshawqm@ycombinator.com"}, +{"id":960,"firstName":"Claire","lastName":"Minette","street":"3145 Butterfield Terrace","postalCode":"43204","city":"Columbus","state":"OH","phoneNumber":"614-157-5341","email":"cminetteqn@upenn.edu"}, +{"id":961,"firstName":"Traci","lastName":"Farnes","street":"2 Service Circle","postalCode":"06905","city":"Stamford","state":"CT","phoneNumber":"203-311-5859","email":"tfarnesqo@merriam-webster.com"}, +{"id":962,"firstName":"Storm","lastName":"de Werk","street":"9 Jenifer Alley","postalCode":"98121","city":"Seattle","state":"WA","phoneNumber":"425-172-3688"}, +{"id":963,"firstName":"Neile","lastName":"Mackrill","street":"5046 Schurz Point","postalCode":"28299","city":"Charlotte","state":"NC"}, +{"id":964,"firstName":"Temple","lastName":"Howlings","street":"8831 Randy Street","postalCode":"71161","city":"Shreveport","state":"LA","phoneNumber":"318-859-6319","email":"thowlingsqr@smugmug.com"}, +{"id":965,"firstName":"Roda","lastName":"Drissell","street":"16621 Mandrake Lane","postalCode":"78744","city":"Austin","state":"TX","email":"rdrissellqs@mayoclinic.com"}, +{"id":966,"firstName":"Francoise","lastName":"Lawman","street":"7 Calypso Point","postalCode":"14614","city":"Rochester","state":"NY","phoneNumber":"585-995-3882"}, +{"id":967,"firstName":"Helen","lastName":"Kigelman","street":"613 Manley Plaza","postalCode":"01905","city":"Lynn","state":"MA","email":"hkigelmanqu@shutterfly.com"}, +{"id":968,"firstName":"Dudley","lastName":"Cansdall","street":"153 Schmedeman Place","postalCode":"93715","city":"Fresno","state":"CA","email":"dcansdallqv@naver.com"}, +{"id":969,"firstName":"Shelby","lastName":"Fayers","street":"94681 Knutson Point","postalCode":"10039","city":"New York City","state":"NY"}, +{"id":970,"firstName":"Sileas","lastName":"Jalland","street":"2199 Buhler Circle","postalCode":"10029","city":"New York City","state":"NY","phoneNumber":"917-902-1667","email":"sjallandqx@rakuten.co.jp"}, +{"id":971,"firstName":"Zeke","lastName":"Duffett","street":"5 Coolidge Park","postalCode":"37995","city":"Knoxville","state":"TN","phoneNumber":"865-814-8540","email":"zduffettqy@wikispaces.com"}, +{"id":972,"firstName":"Tabby","lastName":"Mathieu","street":"78 Donald Circle","postalCode":"55114","city":"Saint Paul","state":"MN","email":"tmathieuqz@rediff.com"}, +{"id":973,"firstName":"Zsa zsa","lastName":"Knights","street":"208 Kingsford Park","postalCode":"15250","city":"Pittsburgh","state":"PA","phoneNumber":"412-652-8956","email":"zknightsr0@privacy.gov.au"}, +{"id":974,"firstName":"Tildi","lastName":"Knewstub","street":"8572 Gina Hill","postalCode":"32909","city":"Palm Bay","state":"FL","email":"tknewstubr1@archive.org"}, +{"id":975,"firstName":"Eric","lastName":"Wharrier","street":"9 Marcy Alley","postalCode":"38126","city":"Memphis","state":"TN","phoneNumber":"901-378-1545","email":"ewharrierr2@people.com.cn"}, +{"id":976,"firstName":"Jilleen","lastName":"Durgan","street":"7 Lien Plaza","postalCode":"75241","city":"Dallas","state":"TX","email":"jdurganr3@google.pl"}, +{"id":977,"firstName":"Ingeberg","lastName":"Whipp","street":"489 Bartillon Street","postalCode":"22205","city":"Arlington","state":"VA","phoneNumber":"703-356-7728","email":"iwhippr4@un.org"}, +{"id":978,"firstName":"Drake","lastName":"McCreagh","street":"735 Mcguire Lane","postalCode":"20530","city":"Washington","state":"DC","email":"dmccreaghr5@mediafire.com"}, +{"id":979,"firstName":"Byron","lastName":"Eades","street":"931 Hollow Ridge Avenue","postalCode":"23285","city":"Richmond","state":"VA","phoneNumber":"804-728-5669","email":"beadesr6@npr.org"}, +{"id":980,"firstName":"Free","lastName":"Tungate","street":"7037 Ramsey Crossing","postalCode":"64153","city":"Kansas City","state":"MO","email":"ftungater7@macromedia.com"}, +{"id":981,"firstName":"Augustus","lastName":"Benardet","street":"398 Bultman Circle","postalCode":"70165","city":"New Orleans","state":"LA"}, +{"id":982,"firstName":"Sanders","lastName":"Sullens","street":"75785 Westend Terrace","postalCode":"43656","city":"Toledo","state":"OH","phoneNumber":"419-314-1134"}, +{"id":983,"firstName":"Ynes","lastName":"Troup","street":"328 Schurz Trail","postalCode":"98907","city":"Yakima","state":"WA","phoneNumber":"509-696-5645"}, +{"id":984,"firstName":"Siana","lastName":"Bernath","street":"968 Sommers Lane","postalCode":"55487","city":"Minneapolis","state":"MN","phoneNumber":"612-351-3016"}, +{"id":985,"firstName":"Ellary","lastName":"Enders","street":"2 Charing Cross Court","postalCode":"06505","city":"New Haven","state":"CT","phoneNumber":"203-608-5058"}, +{"id":986,"firstName":"Mariann","lastName":"Damerell","street":"885 Pennsylvania Crossing","postalCode":"15220","city":"Pittsburgh","state":"PA","phoneNumber":"412-667-1349","email":"mdamerellrd@moonfruit.com"}, +{"id":987,"firstName":"Timotheus","lastName":"Muncer","street":"293 Hoepker Center","postalCode":"32405","city":"Panama City","state":"FL","phoneNumber":"850-740-2501","email":"tmuncerre@ifeng.com"}, +{"id":988,"firstName":"Hermina","lastName":"Tetsall","street":"9354 Nobel Road","postalCode":"55585","city":"Monticello","state":"MN","phoneNumber":"763-292-3970","email":"htetsallrf@wsj.com"}, +{"id":989,"firstName":"Dorelia","lastName":"Howship","street":"747 Namekagon Way","postalCode":"14269","city":"Buffalo","state":"NY","phoneNumber":"716-470-3584","email":"dhowshiprg@un.org"}, +{"id":990,"firstName":"Peggy","lastName":"Coutts","street":"34 Village Green Road","postalCode":"19131","city":"Philadelphia","state":"PA"}, +{"id":991,"firstName":"Dacey","lastName":"Inglefield","street":"05227 Buell Avenue","postalCode":"45414","city":"Dayton","state":"OH"}, +{"id":992,"firstName":"Hollyanne","lastName":"Hobbema","street":"684 La Follette Drive","postalCode":"45218","city":"Cincinnati","state":"OH","phoneNumber":"513-346-0258"}, +{"id":993,"firstName":"Freedman","lastName":"Whorlow","street":"291 Maywood Pass","postalCode":"48098","city":"Troy","state":"MI","phoneNumber":"248-890-5937"}, +{"id":994,"firstName":"Karine","lastName":"Gerring","street":"163 Graceland Street","postalCode":"95397","city":"Modesto","state":"CA"}, +{"id":995,"firstName":"Sonya","lastName":"Giercke","street":"1801 Rowland Junction","postalCode":"66215","city":"Shawnee Mission","state":"KS","email":"sgierckerm@mapquest.com"}, +{"id":996,"firstName":"Fabiano","lastName":"O'Hear","street":"87555 Sunnyside Plaza","postalCode":"33330","city":"Fort Lauderdale","state":"FL","email":"fohearrn@china.com.cn"}, +{"id":997,"firstName":"Lelia","lastName":"Gillman","street":"29838 Eagan Junction","postalCode":"78783","city":"Austin","state":"TX","phoneNumber":"512-515-1461","email":"lgillmanro@amazon.co.jp"}, +{"id":998,"firstName":"Ophelie","lastName":"Richardet","street":"9 Bay Point","postalCode":"94042","city":"Mountain View","state":"CA"}, +{"id":999,"firstName":"Batholomew","lastName":"Janzen","street":"9 Rigney Alley","postalCode":"95113","city":"San Jose","state":"CA"}, +{"id":1000,"firstName":"Kirstyn","lastName":"Bixley","street":"2 Cascade Trail","postalCode":"80015","city":"Aurora","state":"CO","phoneNumber":"303-339-2309","email":"kbixleyrr@i2i.jp"}] \ No newline at end of file From 90328358070ced845129d83ed7b125decb3dd861 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 21 Sep 2020 20:40:16 +0100 Subject: [PATCH 107/260] Moved code to "json-2" module. --- .../baeldung/jsonoptimization/Customer.java | 123 -- .../CustomerDeserializer.java | 49 - .../jsonoptimization/CustomerSerializer.java | 34 - .../jsonoptimization/CustomerShortNames.java | 155 --- .../jsonoptimization/CustomerSlim.java | 73 -- .../CustomerSlimDeserializer.java | 37 - .../CustomerSlimSerializer.java | 28 - .../CustomerSlimShortNames.java | 81 -- .../JsonOptimizationUnitTest.java | 180 --- .../json_optimization_mock_data.json | 1000 ----------------- 10 files changed, 1760 deletions(-) delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/Customer.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java delete mode 100644 json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java delete mode 100644 json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java delete mode 100644 json/src/test/resources/json_optimization_mock_data.json diff --git a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java b/json/src/main/java/com/baeldung/jsonoptimization/Customer.java deleted file mode 100644 index 85451731e9..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/Customer.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.Objects; - -import com.fasterxml.jackson.databind.ObjectMapper; - -public class Customer { - - private long id; - private String firstName; - private String lastName; - private String street; - private String postalCode; - private String city; - private String state; - private String phoneNumber; - private String email; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - 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 String getStreet() { - return street; - } - - public void setStreet(String street) { - this.street = street; - } - - public String getPostalCode() { - return postalCode; - } - - public void setPostalCode(String postalCode) { - this.postalCode = postalCode; - } - - public String getCity() { - return city; - } - - public void setCity(String city) { - this.city = city; - } - - public String getState() { - return state; - } - - public void setState(String state) { - this.state = state; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - @Override - public int hashCode() { - return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof Customer)) { - return false; - } - Customer other = (Customer) obj; - return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) - && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); - } - - @Override - public String toString() { - return "Customer [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email + "]"; - } - - public static Customer[] fromMockFile() throws IOException { - ObjectMapper objectMapper = new ObjectMapper(); - InputStream jsonFile = new FileInputStream("src/test/resources/json_optimization_mock_data.json"); - Customer[] feedback = objectMapper.readValue(jsonFile, Customer[].class); - return feedback; - } -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java deleted file mode 100644 index 16b66311ad..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerDeserializer.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; - -public class CustomerDeserializer extends StdDeserializer { - private static final long serialVersionUID = 1L; - - public CustomerDeserializer() { - this(null); - } - - public CustomerDeserializer(Class t) { - super(t); - } - - @Override - public Customer deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { - Customer feedback = new Customer(); - ObjectCodec codec = parser.getCodec(); - JsonNode node = codec.readTree(parser); - - feedback.setId(node.get(0) - .asLong()); - feedback.setFirstName(node.get(1) - .asText()); - feedback.setLastName(node.get(2) - .asText()); - feedback.setStreet(node.get(3) - .asText()); - feedback.setPostalCode(node.get(4) - .asText()); - feedback.setCity(node.get(5) - .asText()); - feedback.setState(node.get(6) - .asText()); - JsonNode phoneNumber = node.get(7); - feedback.setPhoneNumber(phoneNumber.isNull() ? null : phoneNumber.asText()); - JsonNode email = node.get(8); - feedback.setEmail(email.isNull() ? null : email.asText()); - - return feedback; - } -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java deleted file mode 100644 index 0f631ee85b..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSerializer.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; - -public class CustomerSerializer extends StdSerializer { - private static final long serialVersionUID = 1L; - - public CustomerSerializer() { - this(null); - } - - public CustomerSerializer(Class t) { - super(t); - } - - @Override - public void serialize(Customer customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { - jsonGenerator.writeStartArray(); - jsonGenerator.writeNumber(customer.getId()); - jsonGenerator.writeString(customer.getFirstName()); - jsonGenerator.writeString(customer.getLastName()); - jsonGenerator.writeString(customer.getStreet()); - jsonGenerator.writeString(customer.getPostalCode()); - jsonGenerator.writeString(customer.getCity()); - jsonGenerator.writeString(customer.getState()); - jsonGenerator.writeString(customer.getPhoneNumber()); - jsonGenerator.writeString(customer.getEmail()); - jsonGenerator.writeEndArray(); - } -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java deleted file mode 100644 index b94fbb1033..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerShortNames.java +++ /dev/null @@ -1,155 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.util.Objects; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class CustomerShortNames { - - @JsonProperty("i") - private long id; - - @JsonProperty("f") - private String firstName; - - @JsonProperty("l") - private String lastName; - - @JsonProperty("s") - private String street; - - @JsonProperty("p") - private String postalCode; - - @JsonProperty("c") - private String city; - - @JsonProperty("a") - private String state; - - @JsonProperty("o") - private String phoneNumber; - - @JsonProperty("e") - private String email; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - 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 String getStreet() { - return street; - } - - public void setStreet(String street) { - this.street = street; - } - - public String getPostalCode() { - return postalCode; - } - - public void setPostalCode(String postalCode) { - this.postalCode = postalCode; - } - - public String getCity() { - return city; - } - - public void setCity(String city) { - this.city = city; - } - - public String getState() { - return state; - } - - public void setState(String state) { - this.state = state; - } - - public String getPhoneNumber() { - return phoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - this.phoneNumber = phoneNumber; - } - - public String getEmail() { - return email; - } - - public void setEmail(String email) { - this.email = email; - } - - @Override - public int hashCode() { - return Objects.hash(city, email, firstName, id, lastName, phoneNumber, postalCode, state, street); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof CustomerShortNames)) { - return false; - } - CustomerShortNames other = (CustomerShortNames) obj; - return Objects.equals(city, other.city) && Objects.equals(email, other.email) && Objects.equals(firstName, other.firstName) && id == other.id && Objects.equals(lastName, other.lastName) && Objects.equals(phoneNumber, other.phoneNumber) - && Objects.equals(postalCode, other.postalCode) && Objects.equals(state, other.state) && Objects.equals(street, other.street); - } - - @Override - public String toString() { - return "CustomerWithShorterAttributes [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", street=" + street + ", postalCode=" + postalCode + ", city=" + city + ", state=" + state + ", phoneNumber=" + phoneNumber + ", email=" + email - + "]"; - } - - public static CustomerShortNames[] fromCustomers(Customer[] customers) { - CustomerShortNames[] feedback = new CustomerShortNames[customers.length]; - - for (int i = 0; i < customers.length; i++) { - Customer aCustomer = customers[i]; - CustomerShortNames newOne = new CustomerShortNames(); - - newOne.setId(aCustomer.getId()); - newOne.setFirstName(aCustomer.getFirstName()); - newOne.setLastName(aCustomer.getLastName()); - newOne.setStreet(aCustomer.getStreet()); - newOne.setCity(aCustomer.getCity()); - newOne.setPostalCode(aCustomer.getPostalCode()); - newOne.setState(aCustomer.getState()); - newOne.setPhoneNumber(aCustomer.getPhoneNumber()); - newOne.setEmail(aCustomer.getEmail()); - - feedback[i] = newOne; - } - - return feedback; - } - -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java deleted file mode 100644 index e2ef4664cf..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlim.java +++ /dev/null @@ -1,73 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.util.Objects; - -public class CustomerSlim { - private long id; - private String name; - private String address; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - @Override - public int hashCode() { - return Objects.hash(address, id, name); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof CustomerSlim)) { - return false; - } - CustomerSlim other = (CustomerSlim) obj; - return Objects.equals(address, other.address) && id == other.id && Objects.equals(name, other.name); - } - - @Override - public String toString() { - return "CustomerSlim [id=" + id + ", name=" + name + ", address=" + address + "]"; - } - - public static CustomerSlim[] fromCustomers(Customer[] customers) { - CustomerSlim[] feedback = new CustomerSlim[customers.length]; - - for (int i = 0; i < customers.length; i++) { - Customer aCustomer = customers[i]; - CustomerSlim newOne = new CustomerSlim(); - - newOne.setId(aCustomer.getId()); - newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); - newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); - - feedback[i] = newOne; - } - - return feedback; - } - -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java deleted file mode 100644 index 296ee6fdf6..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimDeserializer.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.core.ObjectCodec; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.deser.std.StdDeserializer; - -public class CustomerSlimDeserializer extends StdDeserializer { - private static final long serialVersionUID = 1L; - - public CustomerSlimDeserializer() { - this(null); - } - - public CustomerSlimDeserializer(Class t) { - super(t); - } - - @Override - public CustomerSlim deserialize(JsonParser parser, DeserializationContext deserializer) throws IOException { - CustomerSlim feedback = new CustomerSlim(); - ObjectCodec codec = parser.getCodec(); - JsonNode node = codec.readTree(parser); - - feedback.setId(node.get(0) - .asLong()); - feedback.setName(node.get(1) - .asText()); - feedback.setAddress(node.get(2) - .asText()); - - return feedback; - } -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java deleted file mode 100644 index 520c541da6..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimSerializer.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.io.IOException; - -import com.fasterxml.jackson.core.JsonGenerator; -import com.fasterxml.jackson.databind.SerializerProvider; -import com.fasterxml.jackson.databind.ser.std.StdSerializer; - -public class CustomerSlimSerializer extends StdSerializer { - private static final long serialVersionUID = 1L; - - public CustomerSlimSerializer() { - this(null); - } - - public CustomerSlimSerializer(Class t) { - super(t); - } - - @Override - public void serialize(CustomerSlim customer, JsonGenerator jsonGenerator, SerializerProvider serializer) throws IOException { - jsonGenerator.writeStartArray(); - jsonGenerator.writeNumber(customer.getId()); - jsonGenerator.writeString(customer.getName()); - jsonGenerator.writeString(customer.getAddress()); - jsonGenerator.writeEndArray(); - } -} diff --git a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java b/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java deleted file mode 100644 index bf00e847ac..0000000000 --- a/json/src/main/java/com/baeldung/jsonoptimization/CustomerSlimShortNames.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.baeldung.jsonoptimization; - -import java.util.Objects; - -import com.fasterxml.jackson.annotation.JsonProperty; - -public class CustomerSlimShortNames { - - @JsonProperty("i") - private long id; - - @JsonProperty("n") - private String name; - - @JsonProperty("a") - private String address; - - public long getId() { - return id; - } - - public void setId(long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getAddress() { - return address; - } - - public void setAddress(String address) { - this.address = address; - } - - @Override - public int hashCode() { - return Objects.hash(address, id, name); - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (!(obj instanceof CustomerSlimShortNames)) { - return false; - } - CustomerSlimShortNames other = (CustomerSlimShortNames) obj; - return Objects.equals(address, other.address) && id == other.id && Objects.equals(name, other.name); - } - - @Override - public String toString() { - return "CustomerSlim [id=" + id + ", name=" + name + ", address=" + address + "]"; - } - - public static CustomerSlimShortNames[] fromCustomers(Customer[] customers) { - CustomerSlimShortNames[] feedback = new CustomerSlimShortNames[customers.length]; - - for (int i = 0; i < customers.length; i++) { - Customer aCustomer = customers[i]; - CustomerSlimShortNames newOne = new CustomerSlimShortNames(); - - newOne.setId(aCustomer.getId()); - newOne.setName(aCustomer.getFirstName() + " " + aCustomer.getLastName()); - newOne.setAddress(aCustomer.getStreet() + ", " + aCustomer.getCity() + " " + aCustomer.getState() + " " + aCustomer.getPostalCode()); - - feedback[i] = newOne; - } - - return feedback; - } - -} diff --git a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java b/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java deleted file mode 100644 index 7a56a68fe2..0000000000 --- a/json/src/test/java/com/baeldung/jsonoptimization/JsonOptimizationUnitTest.java +++ /dev/null @@ -1,180 +0,0 @@ -package com.baeldung.jsonoptimization; - -import static org.junit.Assert.assertArrayEquals; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - -import java.io.ByteArrayOutputStream; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; -import java.text.DecimalFormat; -import java.util.zip.GZIPOutputStream; - -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import com.fasterxml.jackson.annotation.JsonInclude.Include; -import com.fasterxml.jackson.core.Version; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; -import com.fasterxml.jackson.databind.module.SimpleModule; - -class JsonOptimizationUnitTest { - private static final String TEST_LABEL_JACKSON_DEFAULT_OPTIONS = "Default JSON"; - private static final String TEST_LABEL_DEFAULT_JSON_NO_NULL = "Default JSON without null"; - private static final String TEST_LABEL_SHORTER_FIELD_NAMES = "Shorter field names"; - private static final String TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL = "Shorter field names without null"; - private static final String TEST_LABEL_SERIALIZING_TO_ARRAY = "Custom serializer"; - private static final String TEST_LABEL_SLIM_CUSTOM_SERIALIZER = "Slim custom serializer"; - private static final String TEST_LABEL_SLIM_CUSTOMER = "Slim customer"; - private static final String TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES = "Slim customer with shorter field names"; - private static DecimalFormat LENGTH_FORMATTER = new DecimalFormat("###,###.0"); - private static DecimalFormat PERCENT_FORMATTER = new DecimalFormat("###.0"); - private static Customer[] customers; - private ObjectMapper mapper; - private static int defaultJsonLength; - - @BeforeAll - static void setUpOnce() throws Exception { - customers = Customer.fromMockFile(); - ObjectMapper oneTimeMapper = new ObjectMapper(); - byte[] feedback = oneTimeMapper.writeValueAsBytes(customers); - defaultJsonLength = feedback.length; - System.out.println(); - System.out.println("Default JSON length: " + defaultJsonLength); - System.out.println(); - } - - @BeforeEach - void setUp() { - mapper = new ObjectMapper(); - } - - @Test - void whenSetUp_ThenOneThousandCustomers() { - assertEquals(1000, customers.length, "There should be a 1000 customers"); - } - - @Test - void whenJacksonDefaultOptions_thenValid() throws IOException { - printBanner(TEST_LABEL_JACKSON_DEFAULT_OPTIONS); - byte[] plainJson = createJsonAndVerify(TEST_LABEL_JACKSON_DEFAULT_OPTIONS, customers); - compressJson(TEST_LABEL_JACKSON_DEFAULT_OPTIONS, plainJson); - } - - @Test - void whenExcludingNull_thenValid() throws IOException { - printBanner(TEST_LABEL_DEFAULT_JSON_NO_NULL); - mapper.setSerializationInclusion(Include.NON_NULL); - byte[] plainJson = createJsonAndVerify(TEST_LABEL_DEFAULT_JSON_NO_NULL, customers); - compressJson(TEST_LABEL_DEFAULT_JSON_NO_NULL, plainJson); - } - - @Test - void whenShorterFieldNames_thenValid() throws IOException { - printBanner(TEST_LABEL_SHORTER_FIELD_NAMES); - CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); - byte[] shorterJson = createJsonAndVerify(TEST_LABEL_SHORTER_FIELD_NAMES, shorterOnes); - compressJson(TEST_LABEL_SHORTER_FIELD_NAMES, shorterJson); - } - - @Test - void whenShorterFieldNamesAndExcludingNull_thenValid() throws IOException { - printBanner(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL); - CustomerShortNames[] shorterOnes = CustomerShortNames.fromCustomers(customers); - mapper.setSerializationInclusion(Include.NON_NULL); - byte[] shorterJson = createJsonAndVerify(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL, shorterOnes); - compressJson(TEST_LABEL_SHORTER_FIELD_NAMES_AND_NO_NULL, shorterJson); - } - - @Test - void whenSlimCustomer_thenValid() throws IOException { - printBanner(TEST_LABEL_SLIM_CUSTOMER); - CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); - byte[] slimJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOMER, slimOnes); - compressJson(TEST_LABEL_SLIM_CUSTOMER, slimJson); - } - - @Test - void whenSlimCustomerAndShorterFieldNames_thenValid() throws IOException { - printBanner(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES); - CustomerSlimShortNames[] slimOnes = CustomerSlimShortNames.fromCustomers(customers); - byte[] slimJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimOnes); - compressJson(TEST_LABEL_SLIM_CUSTOMER_SHORT_NAMES, slimJson); - } - - @Test - void whenSerializingToArray_thenValid() throws IOException { - printBanner(TEST_LABEL_SERIALIZING_TO_ARRAY); - SimpleModule serializer = new SimpleModule("CustomDeSerializer", new Version(1, 0, 0, null, null, null)); - serializer.addSerializer(Customer.class, new CustomerSerializer()); - serializer.addDeserializer(Customer.class, new CustomerDeserializer()); - mapper.registerModule(serializer); - - byte[] plainJson = createJsonAndVerify(TEST_LABEL_SERIALIZING_TO_ARRAY, customers); - compressJson(TEST_LABEL_SERIALIZING_TO_ARRAY, plainJson); - } - - @Test - void whenSerializingToArrayAndSlimCustomer_thenValid() throws IOException { - printBanner(TEST_LABEL_SLIM_CUSTOM_SERIALIZER); - SimpleModule serializer = new SimpleModule("SlimCustomDeSerializer", new Version(1, 0, 0, null, null, null)); - serializer.addSerializer(CustomerSlim.class, new CustomerSlimSerializer()); - serializer.addDeserializer(CustomerSlim.class, new CustomerSlimDeserializer()); - mapper.registerModule(serializer); - - CustomerSlim[] slimOnes = CustomerSlim.fromCustomers(customers); - byte[] plainJson = createJsonAndVerify(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, slimOnes); - compressJson(TEST_LABEL_SLIM_CUSTOM_SERIALIZER, plainJson); - } - - private void printBanner(String name) { - System.out.println(); - System.out.println("************************************************"); - System.out.println("Testing " + name); - System.out.println(); - } - - void compressJson(String label, byte[] plainJson) throws IOException { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - GZIPOutputStream gzipStream = new GZIPOutputStream(outputStream); - gzipStream.write(plainJson); - gzipStream.close(); - outputStream.close(); - byte[] gzippedJson = outputStream.toByteArray(); - double length = gzippedJson.length / 1024d; - double percent = gzippedJson.length * 100d / defaultJsonLength; - System.out.println(label + " GZIPped length: " + LENGTH_FORMATTER.format(length) - + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); - assertTrue(plainJson.length > gzippedJson.length, label + " should be longer than GZIPped data"); - } - - private byte[] createJsonAndVerify(String label, Object[] customers) throws IOException { - System.out.println(label + " sample: "); - ObjectWriter prettyWritter = mapper.writerWithDefaultPrettyPrinter(); - System.out.println(prettyWritter.writeValueAsString(customers[0])); - - byte[] feedback = mapper.writeValueAsBytes(customers); - double length = feedback.length / 1024d; - double percent = feedback.length * 100d / defaultJsonLength; - System.out.println(label + " length: " + LENGTH_FORMATTER.format(length) - + "kB (" + PERCENT_FORMATTER.format(percent) + "%)"); - assertTrue(feedback.length > 1, label + " should be there"); - - String prefix = label.replaceAll(" ", "-") - .toLowerCase(); - File tempFile = File.createTempFile("jon-optimization-" + prefix, ".json"); - FileOutputStream fos = new FileOutputStream(tempFile); - fos.write(feedback); - fos.close(); - System.out.println(label + " file: " + tempFile.toString()); - - Object[] restoredOnes = mapper.readValue(feedback, customers.getClass()); - assertArrayEquals(TEST_LABEL_JACKSON_DEFAULT_OPTIONS + ": restoring from JSON should work", customers, restoredOnes); - - return feedback; - } - -} diff --git a/json/src/test/resources/json_optimization_mock_data.json b/json/src/test/resources/json_optimization_mock_data.json deleted file mode 100644 index e09517cf61..0000000000 --- a/json/src/test/resources/json_optimization_mock_data.json +++ /dev/null @@ -1,1000 +0,0 @@ -[{"id":1,"firstName":"Horatius","lastName":"Strognell","street":"4848 New Castle Point","postalCode":"33432","city":"Boca Raton","state":"FL","phoneNumber":"561-824-9105","email":"hstrognell0@dailymail.co.uk"}, -{"id":2,"firstName":"Kerri","lastName":"Arend","street":"4 Welch Pass","postalCode":"60669","city":"Chicago","state":"IL","phoneNumber":"312-303-5993"}, -{"id":3,"firstName":"Silvano","lastName":"Bartholomaus","street":"2491 Arkansas Center","postalCode":"30195","city":"Duluth","state":"GA","email":"sbartholomaus2@prlog.org"}, -{"id":4,"firstName":"Venita","lastName":"Burgoine","street":"63894 Sage Park","postalCode":"67215","city":"Wichita","state":"KS","email":"vburgoine3@telegraph.co.uk"}, -{"id":5,"firstName":"Meghan","lastName":"Westover","street":"76 Pleasure Way","postalCode":"77388","city":"Spring","state":"TX","phoneNumber":"832-926-0689","email":"mwestover4@cnn.com"}, -{"id":6,"firstName":"Mia","lastName":"Baversor","street":"50 Sommers Road","postalCode":"43204","city":"Columbus","state":"OH","email":"mbaversor5@wsj.com"}, -{"id":7,"firstName":"Winna","lastName":"Buggy","street":"05 Jenna Street","postalCode":"68144","city":"Omaha","state":"NE","phoneNumber":"402-740-7818"}, -{"id":8,"firstName":"Antonin","lastName":"Autrie","street":"9 Fieldstone Terrace","postalCode":"85754","city":"Tucson","state":"AZ"}, -{"id":9,"firstName":"Maddi","lastName":"Ollerearnshaw","street":"061 Crowley Trail","postalCode":"48335","city":"Farmington","state":"MI","phoneNumber":"248-709-8128"}, -{"id":10,"firstName":"Fawnia","lastName":"Cristofaro","street":"92571 Kinsman Alley","postalCode":"77271","city":"Houston","state":"TX","email":"fcristofaro9@ox.ac.uk"}, -{"id":11,"firstName":"Zachariah","lastName":"Rouby","street":"2439 Hudson Circle","postalCode":"25313","city":"Charleston","state":"WV","phoneNumber":"304-587-5444"}, -{"id":12,"firstName":"Brier","lastName":"Benech","street":"3144 Sutteridge Place","postalCode":"20380","city":"Washington","state":"DC","phoneNumber":"202-740-8851","email":"bbenechb@zdnet.com"}, -{"id":13,"firstName":"Merry","lastName":"Leming","street":"419 Kropf Terrace","postalCode":"45440","city":"Dayton","state":"OH","email":"mlemingc@ow.ly"}, -{"id":14,"firstName":"Audrey","lastName":"Dilleston","street":"61 Melrose Trail","postalCode":"97306","city":"Salem","state":"OR","phoneNumber":"503-480-6254"}, -{"id":15,"firstName":"De witt","lastName":"Kedge","street":"819 Kingsford Point","postalCode":"84135","city":"Salt Lake City","state":"UT"}, -{"id":16,"firstName":"Charita","lastName":"de Clerc","street":"42 Loftsgordon Hill","postalCode":"28289","city":"Charlotte","state":"NC","phoneNumber":"704-532-8850","email":"cdeclercf@comsenz.com"}, -{"id":17,"firstName":"Edgard","lastName":"Bloore","street":"1659 Donald Trail","postalCode":"20051","city":"Washington","state":"DC"}, -{"id":18,"firstName":"Kristi","lastName":"Richichi","street":"11306 Longview Hill","postalCode":"75372","city":"Dallas","state":"TX","email":"krichichih@cloudflare.com"}, -{"id":19,"firstName":"Denna","lastName":"Cornford","street":"4 Gale Junction","postalCode":"10014","city":"New York City","state":"NY","phoneNumber":"646-273-3067","email":"dcornfordi@ebay.co.uk"}, -{"id":20,"firstName":"Randall","lastName":"McQuaid","street":"55712 Stone Corner Circle","postalCode":"10203","city":"New York City","state":"NY","email":"rmcquaidj@facebook.com"}, -{"id":21,"firstName":"Kirbie","lastName":"Walczak","street":"9 Coleman Road","postalCode":"99252","city":"Spokane","state":"WA","email":"kwalczakk@spotify.com"}, -{"id":22,"firstName":"Zedekiah","lastName":"Westby","street":"9 Victoria Road","postalCode":"22093","city":"Ashburn","state":"VA","phoneNumber":"571-642-0111","email":"zwestbyl@ox.ac.uk"}, -{"id":23,"firstName":"Corri","lastName":"Snar","street":"4 Service Terrace","postalCode":"68517","city":"Lincoln","state":"NE","email":"csnarm@tinyurl.com"}, -{"id":24,"firstName":"Manny","lastName":"Marchington","street":"942 Westend Center","postalCode":"22119","city":"Merrifield","state":"VA","email":"mmarchingtonn@opensource.org"}, -{"id":25,"firstName":"Ashla","lastName":"Grigoroni","street":"755 Lerdahl Parkway","postalCode":"55423","city":"Minneapolis","state":"MN","phoneNumber":"612-797-7928","email":"agrigoronio@cam.ac.uk"}, -{"id":26,"firstName":"Rita","lastName":"Sharratt","street":"710 Buena Vista Avenue","postalCode":"40576","city":"Lexington","state":"KY","phoneNumber":"859-727-0697"}, -{"id":27,"firstName":"Karrie","lastName":"Crathorne","street":"02 Loeprich Place","postalCode":"39505","city":"Gulfport","state":"MS"}, -{"id":28,"firstName":"Lothario","lastName":"Merck","street":"46 Golden Leaf Park","postalCode":"35205","city":"Birmingham","state":"AL"}, -{"id":29,"firstName":"Renault","lastName":"Banister","street":"7 Garrison Plaza","postalCode":"85072","city":"Phoenix","state":"AZ"}, -{"id":30,"firstName":"Wanda","lastName":"Burkart","street":"10 Mendota Place","postalCode":"48258","city":"Detroit","state":"MI","phoneNumber":"248-870-5185","email":"wburkartt@wikipedia.org"}, -{"id":31,"firstName":"Maggy","lastName":"Timby","street":"37 Crest Line Center","postalCode":"50305","city":"Des Moines","state":"IA","email":"mtimbyu@cnbc.com"}, -{"id":32,"firstName":"Chet","lastName":"Origan","street":"767 Bashford Lane","postalCode":"30919","city":"Augusta","state":"GA","email":"coriganv@behance.net"}, -{"id":33,"firstName":"Jammie","lastName":"Aslie","street":"7174 Hoffman Circle","postalCode":"23464","city":"Virginia Beach","state":"VA"}, -{"id":34,"firstName":"Dill","lastName":"Kingdon","street":"75 Corben Crossing","postalCode":"33013","city":"Hialeah","state":"FL","email":"dkingdonx@ibm.com"}, -{"id":35,"firstName":"Berenice","lastName":"Blodget","street":"8 Eliot Junction","postalCode":"93907","city":"Salinas","state":"CA","email":"bblodgety@blogs.com"}, -{"id":36,"firstName":"Kimberley","lastName":"Streatley","street":"56 Welch Center","postalCode":"77070","city":"Houston","state":"TX"}, -{"id":37,"firstName":"Warde","lastName":"Woodwind","street":"773 Gerald Park","postalCode":"35295","city":"Birmingham","state":"AL","email":"wwoodwind10@wsj.com"}, -{"id":38,"firstName":"Husain","lastName":"Christofe","street":"35118 Forest Dale Avenue","postalCode":"10175","city":"New York City","state":"NY","phoneNumber":"212-611-7995","email":"hchristofe11@seesaa.net"}, -{"id":39,"firstName":"Gertrud","lastName":"Defraine","street":"568 Walton Way","postalCode":"37405","city":"Chattanooga","state":"TN","phoneNumber":"423-125-5719","email":"gdefraine12@xrea.com"}, -{"id":40,"firstName":"Yulma","lastName":"Ramshay","street":"9976 Iowa Drive","postalCode":"87121","city":"Albuquerque","state":"NM","phoneNumber":"505-914-5281"}, -{"id":41,"firstName":"Bride","lastName":"Amsberger","street":"3 Service Lane","postalCode":"28272","city":"Charlotte","state":"NC","email":"bamsberger14@forbes.com"}, -{"id":42,"firstName":"Kaiser","lastName":"Froud","street":"7 Starling Lane","postalCode":"99507","city":"Anchorage","state":"AK","email":"kfroud15@cloudflare.com"}, -{"id":43,"firstName":"Leona","lastName":"Sciusscietto","street":"06392 East Lane","postalCode":"60193","city":"Schaumburg","state":"IL","phoneNumber":"630-981-3986","email":"lsciusscietto16@mit.edu"}, -{"id":44,"firstName":"Sibel","lastName":"Ripsher","street":"8672 Bayside Road","postalCode":"32511","city":"Pensacola","state":"FL","phoneNumber":"850-975-6365","email":"sripsher17@sitemeter.com"}, -{"id":45,"firstName":"Megen","lastName":"Dymond","street":"0547 Harper Place","postalCode":"28220","city":"Charlotte","state":"NC","phoneNumber":"704-632-5850"}, -{"id":46,"firstName":"Vitoria","lastName":"Niese","street":"365 Colorado Plaza","postalCode":"15279","city":"Pittsburgh","state":"PA","phoneNumber":"412-864-8563"}, -{"id":47,"firstName":"Cherianne","lastName":"Daveran","street":"5 Esch Parkway","postalCode":"36104","city":"Montgomery","state":"AL","email":"cdaveran1a@ft.com"}, -{"id":48,"firstName":"Harriott","lastName":"Mallam","street":"9 Monterey Place","postalCode":"20215","city":"Washington","state":"DC","phoneNumber":"202-727-0645"}, -{"id":49,"firstName":"Jozef","lastName":"Stranger","street":"07 Warner Drive","postalCode":"84199","city":"Salt Lake City","state":"UT","phoneNumber":"801-741-5946"}, -{"id":50,"firstName":"Teena","lastName":"Broggio","street":"287 Luster Park","postalCode":"78285","city":"San Antonio","state":"TX","phoneNumber":"210-482-0822","email":"tbroggio1d@craigslist.org"}, -{"id":51,"firstName":"Robin","lastName":"Membry","street":"0736 Forest Dale Crossing","postalCode":"45408","city":"Dayton","state":"OH","phoneNumber":"937-335-4964","email":"rmembry1e@toplist.cz"}, -{"id":52,"firstName":"Holly","lastName":"Lowcock","street":"819 Aberg Pass","postalCode":"28815","city":"Asheville","state":"NC","email":"hlowcock1f@bbc.co.uk"}, -{"id":53,"firstName":"Shandee","lastName":"Blowick","street":"81600 Moose Lane","postalCode":"46867","city":"Fort Wayne","state":"IN","phoneNumber":"260-904-5622"}, -{"id":54,"firstName":"Chaim","lastName":"Stilliard","street":"91 Spohn Court","postalCode":"28305","city":"Fayetteville","state":"NC","phoneNumber":"910-721-3938"}, -{"id":55,"firstName":"Maximilien","lastName":"Purkis","street":"66997 Algoma Park","postalCode":"10150","city":"New York City","state":"NY","phoneNumber":"212-824-3363","email":"mpurkis1i@unblog.fr"}, -{"id":56,"firstName":"Ferguson","lastName":"Whiles","street":"0550 Bowman Street","postalCode":"33142","city":"Miami","state":"FL","phoneNumber":"786-416-2947","email":"fwhiles1j@artisteer.com"}, -{"id":57,"firstName":"Elena","lastName":"Poyle","street":"54 Warner Court","postalCode":"28055","city":"Gastonia","state":"NC","email":"epoyle1k@tripod.com"}, -{"id":58,"firstName":"Carney","lastName":"Pengilly","street":"050 Welch Junction","postalCode":"76147","city":"Fort Worth","state":"TX","phoneNumber":"817-525-7801","email":"cpengilly1l@yellowpages.com"}, -{"id":59,"firstName":"Krispin","lastName":"Pouck","street":"03554 Twin Pines Point","postalCode":"55551","city":"Young America","state":"MN","email":"kpouck1m@nymag.com"}, -{"id":60,"firstName":"Kylie","lastName":"Osmar","street":"7 Milwaukee Plaza","postalCode":"45228","city":"Cincinnati","state":"OH","phoneNumber":"513-940-5020","email":"kosmar1n@storify.com"}, -{"id":61,"firstName":"Trudi","lastName":"Standrin","street":"526 Onsgard Park","postalCode":"12237","city":"Albany","state":"NY","email":"tstandrin1o@sfgate.com"}, -{"id":62,"firstName":"Frank","lastName":"Belt","street":"52 Stang Lane","postalCode":"27455","city":"Greensboro","state":"NC"}, -{"id":63,"firstName":"Nerita","lastName":"Daulton","street":"03 Sutherland Court","postalCode":"55417","city":"Minneapolis","state":"MN","phoneNumber":"651-796-2028"}, -{"id":64,"firstName":"Urbanus","lastName":"Camm","street":"6802 Weeping Birch Circle","postalCode":"92115","city":"San Diego","state":"CA","email":"ucamm1r@ucoz.com"}, -{"id":65,"firstName":"Perry","lastName":"Struther","street":"63916 Corry Alley","postalCode":"28805","city":"Asheville","state":"NC","phoneNumber":"828-821-0824","email":"pstruther1s@nih.gov"}, -{"id":66,"firstName":"Zorina","lastName":"Uc","street":"99 Merry Circle","postalCode":"37250","city":"Nashville","state":"TN","phoneNumber":"615-364-4726","email":"zuc1t@cbc.ca"}, -{"id":67,"firstName":"Ajay","lastName":"Rediers","street":"6872 Armistice Lane","postalCode":"92812","city":"Anaheim","state":"CA","phoneNumber":"714-845-0143"}, -{"id":68,"firstName":"Brendis","lastName":"Goor","street":"94 Mccormick Place","postalCode":"77346","city":"Humble","state":"TX","phoneNumber":"713-910-5956"}, -{"id":69,"firstName":"Barbey","lastName":"Konneke","street":"75613 Miller Trail","postalCode":"30328","city":"Atlanta","state":"GA","phoneNumber":"770-208-1453"}, -{"id":70,"firstName":"Adlai","lastName":"Colly","street":"4446 Loftsgordon Place","postalCode":"40576","city":"Lexington","state":"KY","email":"acolly1x@phpbb.com"}, -{"id":71,"firstName":"Libby","lastName":"Wherton","street":"9313 Buell Road","postalCode":"70116","city":"New Orleans","state":"LA","email":"lwherton1y@flickr.com"}, -{"id":72,"firstName":"Niko","lastName":"Stockell","street":"61 Havey Park","postalCode":"10034","city":"New York City","state":"NY","phoneNumber":"646-814-6395","email":"nstockell1z@xrea.com"}, -{"id":73,"firstName":"Phillip","lastName":"Dadley","street":"14534 Victoria Street","postalCode":"33906","city":"Fort Myers","state":"FL","email":"pdadley20@studiopress.com"}, -{"id":74,"firstName":"Leann","lastName":"Hebburn","street":"9 Center Place","postalCode":"84140","city":"Salt Lake City","state":"UT","email":"lhebburn21@1688.com"}, -{"id":75,"firstName":"Raynor","lastName":"Gernier","street":"5923 Gale Plaza","postalCode":"79118","city":"Amarillo","state":"TX"}, -{"id":76,"firstName":"Elmore","lastName":"Frankton","street":"770 Wayridge Crossing","postalCode":"14619","city":"Rochester","state":"NY"}, -{"id":77,"firstName":"Teresina","lastName":"Rives","street":"51261 Sycamore Terrace","postalCode":"63180","city":"Saint Louis","state":"MO","email":"trives24@cbsnews.com"}, -{"id":78,"firstName":"Pancho","lastName":"Thebeaud","street":"72 Pierstorff Way","postalCode":"33705","city":"Saint Petersburg","state":"FL","phoneNumber":"813-335-3556"}, -{"id":79,"firstName":"Deanne","lastName":"Crighton","street":"95 Duke Plaza","postalCode":"71151","city":"Shreveport","state":"LA","phoneNumber":"318-218-7196","email":"dcrighton26@sphinn.com"}, -{"id":80,"firstName":"Brucie","lastName":"Bury","street":"8948 Knutson Lane","postalCode":"93740","city":"Fresno","state":"CA","email":"bbury27@twitter.com"}, -{"id":81,"firstName":"Joleen","lastName":"Flack","street":"8007 Morningstar Street","postalCode":"33283","city":"Miami","state":"FL","phoneNumber":"305-459-0365"}, -{"id":82,"firstName":"Antonino","lastName":"Matelyunas","street":"2585 Gale Road","postalCode":"20591","city":"Washington","state":"DC","phoneNumber":"202-780-3589"}, -{"id":83,"firstName":"Vinnie","lastName":"Syne","street":"6 Fallview Pass","postalCode":"20231","city":"Washington","state":"DC","phoneNumber":"202-648-5977","email":"vsyne2a@etsy.com"}, -{"id":84,"firstName":"Sig","lastName":"Guillotin","street":"6 Buell Lane","postalCode":"46015","city":"Anderson","state":"IN","phoneNumber":"765-948-7663","email":"sguillotin2b@cisco.com"}, -{"id":85,"firstName":"Gabriel","lastName":"Vasyukhichev","street":"25801 Grasskamp Junction","postalCode":"45408","city":"Dayton","state":"OH","email":"gvasyukhichev2c@mac.com"}, -{"id":86,"firstName":"Casie","lastName":"Burgill","street":"0 Dapin Alley","postalCode":"37410","city":"Chattanooga","state":"TN"}, -{"id":87,"firstName":"Kristan","lastName":"Chalice","street":"5118 Calypso Junction","postalCode":"78721","city":"Austin","state":"TX","phoneNumber":"512-831-2347"}, -{"id":88,"firstName":"Brear","lastName":"Pruckner","street":"2 Corscot Street","postalCode":"53790","city":"Madison","state":"WI"}, -{"id":89,"firstName":"Estella","lastName":"Orpyne","street":"293 Hansons Plaza","postalCode":"55579","city":"Maple Plain","state":"MN","phoneNumber":"952-666-6951","email":"eorpyne2g@examiner.com"}, -{"id":90,"firstName":"Conroy","lastName":"de Banke","street":"40636 Farmco Park","postalCode":"30316","city":"Atlanta","state":"GA","phoneNumber":"404-199-0073","email":"cdebanke2h@prweb.com"}, -{"id":91,"firstName":"Elmira","lastName":"Bracken","street":"10 Macpherson Place","postalCode":"85099","city":"Phoenix","state":"AZ","phoneNumber":"602-991-7768","email":"ebracken2i@sourceforge.net"}, -{"id":92,"firstName":"Carlota","lastName":"Vasilechko","street":"33 American Ash Point","postalCode":"75507","city":"Texarkana","state":"TX","phoneNumber":"903-312-0610","email":"cvasilechko2j@nba.com"}, -{"id":93,"firstName":"Jamesy","lastName":"Valentelli","street":"59634 Charing Cross Trail","postalCode":"31416","city":"Savannah","state":"GA","phoneNumber":"912-657-6729","email":"jvalentelli2k@nifty.com"}, -{"id":94,"firstName":"Hildagarde","lastName":"Sandels","street":"1 Lotheville Lane","postalCode":"32277","city":"Jacksonville","state":"FL","phoneNumber":"904-981-2753","email":"hsandels2l@a8.net"}, -{"id":95,"firstName":"Kip","lastName":"Cranidge","street":"2 South Road","postalCode":"19160","city":"Philadelphia","state":"PA"}, -{"id":96,"firstName":"Tobit","lastName":"Jarrette","street":"777 Mallard Trail","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-706-1988"}, -{"id":97,"firstName":"Tibold","lastName":"Michie","street":"87796 Nevada Junction","postalCode":"22093","city":"Ashburn","state":"VA","phoneNumber":"571-188-4893","email":"tmichie2o@mapy.cz"}, -{"id":98,"firstName":"Maximo","lastName":"Ifill","street":"8307 Tony Point","postalCode":"22225","city":"Arlington","state":"VA","phoneNumber":"571-404-1412"}, -{"id":99,"firstName":"Patti","lastName":"Autry","street":"901 Iowa Crossing","postalCode":"55551","city":"Young America","state":"MN","phoneNumber":"952-772-9107","email":"pautry2q@scientificamerican.com"}, -{"id":100,"firstName":"Cathe","lastName":"Jost","street":"4400 Menomonie Road","postalCode":"21211","city":"Baltimore","state":"MD","phoneNumber":"410-800-4683","email":"cjost2r@tuttocitta.it"}, -{"id":101,"firstName":"Byron","lastName":"Maddams","street":"10729 Oak Trail","postalCode":"78255","city":"San Antonio","state":"TX","phoneNumber":"830-263-4129"}, -{"id":102,"firstName":"Sosanna","lastName":"Paley","street":"82207 Park Meadow Court","postalCode":"77010","city":"Houston","state":"TX","phoneNumber":"832-740-8766","email":"spaley2t@salon.com"}, -{"id":103,"firstName":"Elysia","lastName":"Skerratt","street":"88708 Cambridge Drive","postalCode":"31217","city":"Macon","state":"GA","phoneNumber":"478-265-6579","email":"eskerratt2u@japanpost.jp"}, -{"id":104,"firstName":"Nealson","lastName":"Sieur","street":"1286 Elmside Plaza","postalCode":"20904","city":"Silver Spring","state":"MD"}, -{"id":105,"firstName":"Yasmeen","lastName":"Bazire","street":"91904 Elmside Point","postalCode":"73167","city":"Oklahoma City","state":"OK"}, -{"id":106,"firstName":"Mandy","lastName":"Ewart","street":"91 Norway Maple Street","postalCode":"21239","city":"Baltimore","state":"MD","email":"mewart2x@weebly.com"}, -{"id":107,"firstName":"Chlo","lastName":"Keedy","street":"560 Oak Valley Avenue","postalCode":"20420","city":"Washington","state":"DC"}, -{"id":108,"firstName":"Benedicta","lastName":"Dinneen","street":"9 Cottonwood Circle","postalCode":"60686","city":"Chicago","state":"IL","email":"bdinneen2z@nydailynews.com"}, -{"id":109,"firstName":"Nanon","lastName":"Corsar","street":"40001 Barby Drive","postalCode":"95818","city":"Sacramento","state":"CA","email":"ncorsar30@house.gov"}, -{"id":110,"firstName":"Babette","lastName":"Scarsbrick","street":"96095 Loomis Terrace","postalCode":"94622","city":"Oakland","state":"CA","email":"bscarsbrick31@smugmug.com"}, -{"id":111,"firstName":"Cornall","lastName":"Christauffour","street":"9 Springview Alley","postalCode":"84170","city":"Salt Lake City","state":"UT","phoneNumber":"801-935-1246","email":"cchristauffour32@booking.com"}, -{"id":112,"firstName":"Micki","lastName":"Labell","street":"77729 Heath Place","postalCode":"25336","city":"Charleston","state":"WV"}, -{"id":113,"firstName":"Marissa","lastName":"Bricksey","street":"1 Jackson Pass","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"917-552-4280"}, -{"id":114,"firstName":"Alex","lastName":"Lyptrade","street":"74 Bunting Circle","postalCode":"40591","city":"Lexington","state":"KY","phoneNumber":"859-177-0753"}, -{"id":115,"firstName":"Tove","lastName":"Bielfeldt","street":"95 Mallard Hill","postalCode":"70894","city":"Baton Rouge","state":"LA","email":"tbielfeldt36@goo.gl"}, -{"id":116,"firstName":"Rodrigo","lastName":"Chestle","street":"53625 1st Junction","postalCode":"43635","city":"Toledo","state":"OH","phoneNumber":"419-928-0953","email":"rchestle37@princeton.edu"}, -{"id":117,"firstName":"Ulrike","lastName":"Kendle","street":"0 Cardinal Alley","postalCode":"80925","city":"Colorado Springs","state":"CO","phoneNumber":"719-796-1992","email":"ukendle38@naver.com"}, -{"id":118,"firstName":"Sandor","lastName":"Warwick","street":"8 Spaight Crossing","postalCode":"92030","city":"Escondido","state":"CA","email":"swarwick39@about.com"}, -{"id":119,"firstName":"Selina","lastName":"Slowcock","street":"7 7th Circle","postalCode":"50335","city":"Des Moines","state":"IA","phoneNumber":"515-865-9809"}, -{"id":120,"firstName":"Maxine","lastName":"Placstone","street":"42056 Sycamore Plaza","postalCode":"20244","city":"Washington","state":"DC"}, -{"id":121,"firstName":"Ardine","lastName":"Reven","street":"10634 Nancy Way","postalCode":"10175","city":"New York City","state":"NY","email":"areven3c@diigo.com"}, -{"id":122,"firstName":"Dilan","lastName":"Widdows","street":"37 Park Meadow Way","postalCode":"68144","city":"Omaha","state":"NE","phoneNumber":"402-383-9020"}, -{"id":123,"firstName":"Kevina","lastName":"Praten","street":"8531 Elmside Point","postalCode":"27610","city":"Raleigh","state":"NC","email":"kpraten3e@craigslist.org"}, -{"id":124,"firstName":"Sherman","lastName":"Jurczak","street":"8281 Acker Alley","postalCode":"07522","city":"Paterson","state":"NJ","email":"sjurczak3f@github.com"}, -{"id":125,"firstName":"Beckie","lastName":"Disney","street":"3 Butterfield Drive","postalCode":"49518","city":"Grand Rapids","state":"MI","phoneNumber":"616-493-1284","email":"bdisney3g@china.com.cn"}, -{"id":126,"firstName":"Blaine","lastName":"Leak","street":"369 Norway Maple Lane","postalCode":"03804","city":"Portsmouth","state":"NH","email":"bleak3h@lulu.com"}, -{"id":127,"firstName":"Dare","lastName":"Marney","street":"50 Lake View Alley","postalCode":"06505","city":"New Haven","state":"CT","phoneNumber":"203-876-6938","email":"dmarney3i@delicious.com"}, -{"id":128,"firstName":"Darby","lastName":"Sackler","street":"841 Ridgeview Trail","postalCode":"80279","city":"Denver","state":"CO"}, -{"id":129,"firstName":"Aurilia","lastName":"Seabrocke","street":"670 Schmedeman Road","postalCode":"11254","city":"Brooklyn","state":"NY","email":"aseabrocke3k@engadget.com"}, -{"id":130,"firstName":"Griz","lastName":"Riccioppo","street":"2204 Moland Circle","postalCode":"45218","city":"Cincinnati","state":"OH","email":"griccioppo3l@cisco.com"}, -{"id":131,"firstName":"Zahara","lastName":"Quinion","street":"4979 Mallory Circle","postalCode":"24515","city":"Lynchburg","state":"VA","email":"zquinion3m@sfgate.com"}, -{"id":132,"firstName":"Holly-anne","lastName":"Fontel","street":"60752 Hallows Circle","postalCode":"76705","city":"Waco","state":"TX","phoneNumber":"254-822-2565","email":"hfontel3n@exblog.jp"}, -{"id":133,"firstName":"Johannes","lastName":"Lemonby","street":"3 Grover Terrace","postalCode":"25709","city":"Huntington","state":"WV","phoneNumber":"304-342-4911","email":"jlemonby3o@woothemes.com"}, -{"id":134,"firstName":"Melvin","lastName":"Kain","street":"16 Pond Junction","postalCode":"85215","city":"Mesa","state":"AZ","phoneNumber":"602-146-3701"}, -{"id":135,"firstName":"Letta","lastName":"Smelley","street":"537 Helena Circle","postalCode":"22119","city":"Merrifield","state":"VA","phoneNumber":"571-472-5640"}, -{"id":136,"firstName":"Clerc","lastName":"Mc Ilwrick","street":"7050 Northfield Street","postalCode":"90050","city":"Los Angeles","state":"CA","email":"cmcilwrick3r@abc.net.au"}, -{"id":137,"firstName":"Abba","lastName":"Sutherns","street":"8087 Monterey Lane","postalCode":"83757","city":"Boise","state":"ID","phoneNumber":"208-110-3153","email":"asutherns3s@dropbox.com"}, -{"id":138,"firstName":"Karola","lastName":"Symper","street":"4596 Clyde Gallagher Road","postalCode":"28815","city":"Asheville","state":"NC","email":"ksymper3t@parallels.com"}, -{"id":139,"firstName":"Jessamyn","lastName":"Deacock","street":"19557 Bobwhite Way","postalCode":"19725","city":"Newark","state":"DE","phoneNumber":"302-174-2938"}, -{"id":140,"firstName":"Iggy","lastName":"Impey","street":"8 Brown Place","postalCode":"27499","city":"Greensboro","state":"NC"}, -{"id":141,"firstName":"Kary","lastName":"Mably","street":"75 Porter Avenue","postalCode":"70174","city":"New Orleans","state":"LA","email":"kmably3w@miibeian.gov.cn"}, -{"id":142,"firstName":"Ciel","lastName":"Tidbold","street":"54 Mitchell Lane","postalCode":"90055","city":"Los Angeles","state":"CA"}, -{"id":143,"firstName":"Dyana","lastName":"Orcott","street":"2 Kinsman Street","postalCode":"90005","city":"Los Angeles","state":"CA","phoneNumber":"310-366-6987"}, -{"id":144,"firstName":"Damien","lastName":"Haking","street":"2 Elmside Point","postalCode":"62705","city":"Springfield","state":"IL","email":"dhaking3z@drupal.org"}, -{"id":145,"firstName":"Ricardo","lastName":"Bille","street":"3 Mesta Hill","postalCode":"98411","city":"Tacoma","state":"WA","email":"rbille40@ebay.co.uk"}, -{"id":146,"firstName":"Carlene","lastName":"Roget","street":"8 Granby Avenue","postalCode":"35225","city":"Birmingham","state":"AL","phoneNumber":"205-762-4907","email":"croget41@statcounter.com"}, -{"id":147,"firstName":"Sharlene","lastName":"Antusch","street":"02445 Stang Parkway","postalCode":"55480","city":"Minneapolis","state":"MN","email":"santusch42@mtv.com"}, -{"id":148,"firstName":"Goober","lastName":"Danielczyk","street":"474 Union Court","postalCode":"70505","city":"Lafayette","state":"LA","phoneNumber":"337-779-0312","email":"gdanielczyk43@dion.ne.jp"}, -{"id":149,"firstName":"Janette","lastName":"Mauro","street":"1231 Commercial Crossing","postalCode":"97201","city":"Portland","state":"OR","phoneNumber":"971-423-7259"}, -{"id":150,"firstName":"Melinda","lastName":"Shitliffe","street":"244 Derek Drive","postalCode":"23208","city":"Richmond","state":"VA","phoneNumber":"804-864-5845"}, -{"id":151,"firstName":"Constance","lastName":"Fardon","street":"3 Lien Point","postalCode":"89105","city":"Las Vegas","state":"NV"}, -{"id":152,"firstName":"Tedd","lastName":"Storey","street":"2551 Luster Point","postalCode":"19151","city":"Philadelphia","state":"PA","phoneNumber":"215-622-9273","email":"tstorey47@google.com.au"}, -{"id":153,"firstName":"Brigitte","lastName":"Slograve","street":"8130 Waubesa Hill","postalCode":"11499","city":"Jamaica","state":"NY","email":"bslograve48@yandex.ru"}, -{"id":154,"firstName":"Ralph","lastName":"Comberbeach","street":"88140 Anderson Avenue","postalCode":"90076","city":"Los Angeles","state":"CA"}, -{"id":155,"firstName":"Deloria","lastName":"Thomazet","street":"666 Center Crossing","postalCode":"38119","city":"Memphis","state":"TN","phoneNumber":"615-840-7916"}, -{"id":156,"firstName":"Fidel","lastName":"MacClay","street":"01 Fairfield Point","postalCode":"24034","city":"Roanoke","state":"VA","email":"fmacclay4b@sitemeter.com"}, -{"id":157,"firstName":"Amalee","lastName":"Menzies","street":"6 Judy Drive","postalCode":"84605","city":"Provo","state":"UT"}, -{"id":158,"firstName":"Ansel","lastName":"Jory","street":"3 Nobel Park","postalCode":"32505","city":"Pensacola","state":"FL","phoneNumber":"850-394-8201"}, -{"id":159,"firstName":"Teodor","lastName":"Longhorn","street":"563 Sutherland Avenue","postalCode":"98008","city":"Bellevue","state":"WA"}, -{"id":160,"firstName":"Margarita","lastName":"Rewcassell","street":"64711 Beilfuss Point","postalCode":"79764","city":"Odessa","state":"TX","phoneNumber":"432-413-2196"}, -{"id":161,"firstName":"Tarra","lastName":"Albro","street":"2 Graceland Way","postalCode":"78405","city":"Corpus Christi","state":"TX"}, -{"id":162,"firstName":"Whitaker","lastName":"Brizell","street":"6 Luster Place","postalCode":"33694","city":"Tampa","state":"FL","email":"wbrizell4h@naver.com"}, -{"id":163,"firstName":"Gauthier","lastName":"Getsham","street":"0820 Duke Plaza","postalCode":"28263","city":"Charlotte","state":"NC","phoneNumber":"704-510-2908"}, -{"id":164,"firstName":"Thane","lastName":"Discombe","street":"56809 Aberg Street","postalCode":"63167","city":"Saint Louis","state":"MO"}, -{"id":165,"firstName":"Felicia","lastName":"Barthrup","street":"904 Stuart Junction","postalCode":"32220","city":"Jacksonville","state":"FL"}, -{"id":166,"firstName":"Emeline","lastName":"Jobes","street":"2670 Prairieview Plaza","postalCode":"10120","city":"New York City","state":"NY","email":"ejobes4l@newyorker.com"}, -{"id":167,"firstName":"Felicle","lastName":"Bowie","street":"9715 Lighthouse Bay Parkway","postalCode":"11210","city":"Brooklyn","state":"NY","email":"fbowie4m@auda.org.au"}, -{"id":168,"firstName":"Clare","lastName":"Miskelly","street":"8 Towne Trail","postalCode":"44555","city":"Youngstown","state":"OH"}, -{"id":169,"firstName":"Mort","lastName":"Danat","street":"6833 Shoshone Lane","postalCode":"12255","city":"Albany","state":"NY","phoneNumber":"518-967-9791","email":"mdanat4o@privacy.gov.au"}, -{"id":170,"firstName":"Ailey","lastName":"Scatchar","street":"3 Northfield Point","postalCode":"76505","city":"Temple","state":"TX"}, -{"id":171,"firstName":"Kevina","lastName":"Darwent","street":"8165 Reinke Alley","postalCode":"94132","city":"San Francisco","state":"CA","email":"kdarwent4q@artisteer.com"}, -{"id":172,"firstName":"My","lastName":"Buston","street":"715 Saint Paul Center","postalCode":"31416","city":"Savannah","state":"GA","phoneNumber":"912-281-8654"}, -{"id":173,"firstName":"Emera","lastName":"Lingner","street":"943 Eastlawn Hill","postalCode":"90605","city":"Whittier","state":"CA"}, -{"id":174,"firstName":"Drucie","lastName":"Byer","street":"988 4th Court","postalCode":"06816","city":"Danbury","state":"CT","email":"dbyer4t@xinhuanet.com"}, -{"id":175,"firstName":"Modestine","lastName":"Madeley","street":"1 Delaware Terrace","postalCode":"80126","city":"Littleton","state":"CO"}, -{"id":176,"firstName":"Selie","lastName":"O'Mohun","street":"42 Monument Trail","postalCode":"55590","city":"Monticello","state":"MN","phoneNumber":"763-384-5166"}, -{"id":177,"firstName":"Shayla","lastName":"Pesselt","street":"7 Pawling Center","postalCode":"20099","city":"Washington","state":"DC","phoneNumber":"202-816-7300","email":"spesselt4w@posterous.com"}, -{"id":178,"firstName":"Raeann","lastName":"Layland","street":"06548 Longview Alley","postalCode":"77005","city":"Houston","state":"TX","phoneNumber":"214-899-1257","email":"rlayland4x@pcworld.com"}, -{"id":179,"firstName":"Dael","lastName":"Christaeas","street":"375 Northfield Street","postalCode":"23509","city":"Norfolk","state":"VA","phoneNumber":"757-391-2798","email":"dchristaeas4y@sciencedaily.com"}, -{"id":180,"firstName":"Nicolas","lastName":"Baxill","street":"9 Autumn Leaf Terrace","postalCode":"77005","city":"Houston","state":"TX","email":"nbaxill4z@edublogs.org"}, -{"id":181,"firstName":"Onida","lastName":"Pengilly","street":"61 Commercial Junction","postalCode":"24029","city":"Roanoke","state":"VA","email":"opengilly50@slideshare.net"}, -{"id":182,"firstName":"Muffin","lastName":"Thrasher","street":"1 Morning Hill","postalCode":"64082","city":"Lees Summit","state":"MO"}, -{"id":183,"firstName":"Ignaz","lastName":"McLugish","street":"3936 Columbus Point","postalCode":"35263","city":"Birmingham","state":"AL"}, -{"id":184,"firstName":"Guillaume","lastName":"Gillings","street":"75541 Sheridan Center","postalCode":"68510","city":"Lincoln","state":"NE","email":"ggillings53@unblog.fr"}, -{"id":185,"firstName":"Kalli","lastName":"Branche","street":"33740 Manitowish Court","postalCode":"96805","city":"Honolulu","state":"HI"}, -{"id":186,"firstName":"Winthrop","lastName":"Barszczewski","street":"9 Luster Terrace","postalCode":"60158","city":"Carol Stream","state":"IL","phoneNumber":"309-633-3125","email":"wbarszczewski55@eventbrite.com"}, -{"id":187,"firstName":"Renaud","lastName":"Nitto","street":"1 Crownhardt Place","postalCode":"10310","city":"Staten Island","state":"NY","phoneNumber":"914-568-4524","email":"rnitto56@typepad.com"}, -{"id":188,"firstName":"Pollyanna","lastName":"Wherrett","street":"31380 Upham Street","postalCode":"76134","city":"Fort Worth","state":"TX","phoneNumber":"817-198-3301","email":"pwherrett57@bluehost.com"}, -{"id":189,"firstName":"Lilly","lastName":"Gatchell","street":"7 Elka Road","postalCode":"94064","city":"Redwood City","state":"CA","email":"lgatchell58@patch.com"}, -{"id":190,"firstName":"Leopold","lastName":"Leavey","street":"9 Darwin Crossing","postalCode":"20268","city":"Washington","state":"DC","phoneNumber":"202-964-5932","email":"lleavey59@aol.com"}, -{"id":191,"firstName":"Byram","lastName":"Stuckes","street":"782 Northport Alley","postalCode":"55436","city":"Minneapolis","state":"MN"}, -{"id":192,"firstName":"Cull","lastName":"Whiterod","street":"2586 Banding Terrace","postalCode":"80249","city":"Denver","state":"CO","email":"cwhiterod5b@skype.com"}, -{"id":193,"firstName":"Gretel","lastName":"Tacey","street":"6382 Fremont Avenue","postalCode":"25305","city":"Charleston","state":"WV"}, -{"id":194,"firstName":"Tudor","lastName":"Piff","street":"0 Monterey Circle","postalCode":"00214","city":"Portsmouth","state":"NH","email":"tpiff5d@eepurl.com"}, -{"id":195,"firstName":"Julienne","lastName":"Adshed","street":"91839 Lawn Avenue","postalCode":"92519","city":"Riverside","state":"CA"}, -{"id":196,"firstName":"Arnold","lastName":"Fearns","street":"7 West Trail","postalCode":"35242","city":"Birmingham","state":"AL","email":"afearns5f@bravesites.com"}, -{"id":197,"firstName":"Dunc","lastName":"Khoter","street":"048 Clove Lane","postalCode":"89505","city":"Reno","state":"NV","phoneNumber":"775-120-9532","email":"dkhoter5g@bbb.org"}, -{"id":198,"firstName":"Stevana","lastName":"Lush","street":"6 Dovetail Plaza","postalCode":"79945","city":"El Paso","state":"TX","email":"slush5h@economist.com"}, -{"id":199,"firstName":"Iggy","lastName":"Verryan","street":"5 Sommers Road","postalCode":"34114","city":"Naples","state":"FL","phoneNumber":"239-205-8767"}, -{"id":200,"firstName":"Breena","lastName":"Rubbert","street":"5 Kensington Crossing","postalCode":"90510","city":"Torrance","state":"CA","email":"brubbert5j@phpbb.com"}, -{"id":201,"firstName":"Jervis","lastName":"Doree","street":"2947 Center Plaza","postalCode":"70160","city":"New Orleans","state":"LA","phoneNumber":"504-278-7497","email":"jdoree5k@shutterfly.com"}, -{"id":202,"firstName":"Odelia","lastName":"Lidierth","street":"36699 Aberg Park","postalCode":"62764","city":"Springfield","state":"IL"}, -{"id":203,"firstName":"Ree","lastName":"Lammerding","street":"3542 Lerdahl Court","postalCode":"88558","city":"El Paso","state":"TX","phoneNumber":"915-384-9334","email":"rlammerding5m@msu.edu"}, -{"id":204,"firstName":"Davy","lastName":"Orniz","street":"49 Graedel Parkway","postalCode":"48295","city":"Detroit","state":"MI","email":"dorniz5n@examiner.com"}, -{"id":205,"firstName":"Syd","lastName":"Buckoke","street":"70 Pepper Wood Alley","postalCode":"74156","city":"Tulsa","state":"OK","phoneNumber":"918-604-5799"}, -{"id":206,"firstName":"Ginger","lastName":"Calkin","street":"7 Thompson Trail","postalCode":"71115","city":"Shreveport","state":"LA","phoneNumber":"318-650-6046"}, -{"id":207,"firstName":"Anissa","lastName":"Ivashinnikov","street":"61905 Chive Circle","postalCode":"40745","city":"London","state":"KY","email":"aivashinnikov5q@google.cn"}, -{"id":208,"firstName":"Vikky","lastName":"Kesley","street":"1 Grayhawk Street","postalCode":"06538","city":"New Haven","state":"CT","phoneNumber":"203-944-7163"}, -{"id":209,"firstName":"Alisha","lastName":"Lampke","street":"26940 Kensington Park","postalCode":"55446","city":"Minneapolis","state":"MN","phoneNumber":"612-814-9814","email":"alampke5s@apple.com"}, -{"id":210,"firstName":"Davidde","lastName":"Phlipon","street":"2044 Ruskin Road","postalCode":"07188","city":"Newark","state":"NJ","email":"dphlipon5t@shareasale.com"}, -{"id":211,"firstName":"Joly","lastName":"Crottagh","street":"532 Dawn Plaza","postalCode":"85083","city":"Phoenix","state":"AZ","phoneNumber":"602-533-4064"}, -{"id":212,"firstName":"Aggie","lastName":"Niesing","street":"3 Tony Drive","postalCode":"57110","city":"Sioux Falls","state":"SD","email":"aniesing5v@pbs.org"}, -{"id":213,"firstName":"Daron","lastName":"Baudassi","street":"2411 Melvin Court","postalCode":"40581","city":"Lexington","state":"KY","phoneNumber":"859-754-2542","email":"dbaudassi5w@joomla.org"}, -{"id":214,"firstName":"Thadeus","lastName":"Kleiser","street":"1394 Warner Street","postalCode":"87592","city":"Santa Fe","state":"NM","email":"tkleiser5x@bloomberg.com"}, -{"id":215,"firstName":"Terri","lastName":"Perrat","street":"0080 Upham Plaza","postalCode":"52245","city":"Iowa City","state":"IA"}, -{"id":216,"firstName":"Marlena","lastName":"Gatchell","street":"60888 Annamark Street","postalCode":"90060","city":"Los Angeles","state":"CA","phoneNumber":"323-121-6985","email":"mgatchell5z@ibm.com"}, -{"id":217,"firstName":"Locke","lastName":"Orcott","street":"459 Warner Lane","postalCode":"45020","city":"Hamilton","state":"OH","phoneNumber":"937-115-3187"}, -{"id":218,"firstName":"Wilmer","lastName":"Bewick","street":"0 Ohio Center","postalCode":"98166","city":"Seattle","state":"WA","phoneNumber":"253-805-8855","email":"wbewick61@seesaa.net"}, -{"id":219,"firstName":"Marena","lastName":"MacShirrie","street":"607 Badeau Circle","postalCode":"98008","city":"Bellevue","state":"WA","email":"mmacshirrie62@wikia.com"}, -{"id":220,"firstName":"Nathanial","lastName":"Sexty","street":"43 Basil Place","postalCode":"85020","city":"Phoenix","state":"AZ"}, -{"id":221,"firstName":"Wadsworth","lastName":"Iacovuzzi","street":"9610 Donald Crossing","postalCode":"88530","city":"El Paso","state":"TX","phoneNumber":"915-889-7936","email":"wiacovuzzi64@prnewswire.com"}, -{"id":222,"firstName":"Sutton","lastName":"Stych","street":"9 Brentwood Terrace","postalCode":"20546","city":"Washington","state":"DC","phoneNumber":"202-538-6355","email":"sstych65@wikimedia.org"}, -{"id":223,"firstName":"Gaspar","lastName":"Wabey","street":"3061 Bluejay Terrace","postalCode":"10110","city":"New York City","state":"NY","phoneNumber":"917-939-0802","email":"gwabey66@technorati.com"}, -{"id":224,"firstName":"Herminia","lastName":"Guyot","street":"91 Express Drive","postalCode":"85715","city":"Tucson","state":"AZ","phoneNumber":"520-777-1670","email":"hguyot67@admin.ch"}, -{"id":225,"firstName":"Udale","lastName":"Beurich","street":"675 Karstens Crossing","postalCode":"46852","city":"Fort Wayne","state":"IN","phoneNumber":"260-580-8627","email":"ubeurich68@bigcartel.com"}, -{"id":226,"firstName":"Kerrie","lastName":"Girauld","street":"56132 Charing Cross Court","postalCode":"71137","city":"Shreveport","state":"LA","email":"kgirauld69@nationalgeographic.com"}, -{"id":227,"firstName":"Irvin","lastName":"Nix","street":"0676 Aberg Terrace","postalCode":"97075","city":"Beaverton","state":"OR","email":"inix6a@xing.com"}, -{"id":228,"firstName":"Corene","lastName":"Spencock","street":"90 Meadow Ridge Drive","postalCode":"73173","city":"Oklahoma City","state":"OK","phoneNumber":"405-577-1312","email":"cspencock6b@shinystat.com"}, -{"id":229,"firstName":"Christos","lastName":"McIlreavy","street":"673 Jana Trail","postalCode":"23471","city":"Virginia Beach","state":"VA","email":"cmcilreavy6c@mayoclinic.com"}, -{"id":230,"firstName":"Bennett","lastName":"Melding","street":"4 Cardinal Lane","postalCode":"55448","city":"Minneapolis","state":"MN","email":"bmelding6d@t-online.de"}, -{"id":231,"firstName":"Winny","lastName":"de Leon","street":"941 Scoville Place","postalCode":"94611","city":"Oakland","state":"CA","phoneNumber":"510-230-4168","email":"wdeleon6e@dell.com"}, -{"id":232,"firstName":"Nike","lastName":"Iacobassi","street":"956 Service Junction","postalCode":"71914","city":"Hot Springs National Park","state":"AR","phoneNumber":"501-266-4142"}, -{"id":233,"firstName":"Gillan","lastName":"Baumann","street":"11 8th Alley","postalCode":"31190","city":"Atlanta","state":"GA","phoneNumber":"404-703-5154","email":"gbaumann6g@edublogs.org"}, -{"id":234,"firstName":"Brandtr","lastName":"Gadman","street":"5 Marquette Hill","postalCode":"32511","city":"Pensacola","state":"FL","phoneNumber":"850-834-0058","email":"bgadman6h@marriott.com"}, -{"id":235,"firstName":"Kenn","lastName":"Cage","street":"3759 Spohn Point","postalCode":"94126","city":"San Francisco","state":"CA","email":"kcage6i@earthlink.net"}, -{"id":236,"firstName":"Butch","lastName":"Causby","street":"02 Basil Crossing","postalCode":"10110","city":"New York City","state":"NY","phoneNumber":"212-190-1702","email":"bcausby6j@scribd.com"}, -{"id":237,"firstName":"Haleigh","lastName":"Parsonson","street":"8 Ruskin Trail","postalCode":"87201","city":"Albuquerque","state":"NM","phoneNumber":"505-987-1352"}, -{"id":238,"firstName":"Bartel","lastName":"Ruppeli","street":"7538 Red Cloud Center","postalCode":"37410","city":"Chattanooga","state":"TN","phoneNumber":"423-804-1016","email":"bruppeli6l@etsy.com"}, -{"id":239,"firstName":"Gretchen","lastName":"Le feaver","street":"7 Orin Way","postalCode":"98042","city":"Kent","state":"WA","phoneNumber":"253-205-3092","email":"glefeaver6m@mayoclinic.com"}, -{"id":240,"firstName":"Trumaine","lastName":"Dearden","street":"1 Vernon Trail","postalCode":"06127","city":"West Hartford","state":"CT","phoneNumber":"860-939-3865","email":"tdearden6n@goo.gl"}, -{"id":241,"firstName":"Aggie","lastName":"Dubs","street":"3601 Walton Trail","postalCode":"62764","city":"Springfield","state":"IL","phoneNumber":"217-834-6059","email":"adubs6o@cbsnews.com"}, -{"id":242,"firstName":"Shelly","lastName":"Skechley","street":"16 Morning Lane","postalCode":"60567","city":"Naperville","state":"IL","email":"sskechley6p@technorati.com"}, -{"id":243,"firstName":"Karin","lastName":"Fausch","street":"7532 Eggendart Way","postalCode":"19810","city":"Wilmington","state":"DE","phoneNumber":"302-548-2991"}, -{"id":244,"firstName":"Sal","lastName":"Harrow","street":"2632 Lien Way","postalCode":"33982","city":"Punta Gorda","state":"FL","phoneNumber":"941-904-5187","email":"sharrow6r@joomla.org"}, -{"id":245,"firstName":"Albie","lastName":"Strelitzki","street":"8436 Eggendart Terrace","postalCode":"49505","city":"Grand Rapids","state":"MI","email":"astrelitzki6s@google.com.br"}, -{"id":246,"firstName":"Augy","lastName":"Usherwood","street":"9078 Clemons Street","postalCode":"80915","city":"Colorado Springs","state":"CO","email":"ausherwood6t@wikimedia.org"}, -{"id":247,"firstName":"Solomon","lastName":"D'eathe","street":"778 Rockefeller Parkway","postalCode":"84199","city":"Salt Lake City","state":"UT"}, -{"id":248,"firstName":"Talya","lastName":"Joseff","street":"14 Graedel Court","postalCode":"99220","city":"Spokane","state":"WA","email":"tjoseff6v@amazon.de"}, -{"id":249,"firstName":"Anatol","lastName":"Self","street":"2 Stoughton Junction","postalCode":"85255","city":"Scottsdale","state":"AZ"}, -{"id":250,"firstName":"Elinore","lastName":"Bruhnke","street":"3 Bashford Alley","postalCode":"17105","city":"Harrisburg","state":"PA","email":"ebruhnke6x@usnews.com"}, -{"id":251,"firstName":"Stanfield","lastName":"Jagiello","street":"0804 Amoth Road","postalCode":"20067","city":"Washington","state":"DC"}, -{"id":252,"firstName":"Isak","lastName":"Venour","street":"04 Orin Court","postalCode":"78210","city":"San Antonio","state":"TX","email":"ivenour6z@springer.com"}, -{"id":253,"firstName":"Abigale","lastName":"Woolgar","street":"74 Porter Terrace","postalCode":"62705","city":"Springfield","state":"IL"}, -{"id":254,"firstName":"Phylys","lastName":"Casperri","street":"07 Delaware Street","postalCode":"33069","city":"Pompano Beach","state":"FL","phoneNumber":"954-224-4577"}, -{"id":255,"firstName":"Melania","lastName":"Fee","street":"194 Luster Point","postalCode":"70154","city":"New Orleans","state":"LA","phoneNumber":"504-168-6959","email":"mfee72@comsenz.com"}, -{"id":256,"firstName":"Joli","lastName":"Colquite","street":"9 Bayside Court","postalCode":"27425","city":"Greensboro","state":"NC","email":"jcolquite73@comcast.net"}, -{"id":257,"firstName":"Rahel","lastName":"Late","street":"2 Meadow Ridge Alley","postalCode":"32204","city":"Jacksonville","state":"FL"}, -{"id":258,"firstName":"Carny","lastName":"Fewell","street":"21826 Cardinal Pass","postalCode":"98140","city":"Seattle","state":"WA"}, -{"id":259,"firstName":"Lesly","lastName":"Vanyatin","street":"7730 South Court","postalCode":"25356","city":"Charleston","state":"WV","email":"lvanyatin76@histats.com"}, -{"id":260,"firstName":"Fianna","lastName":"Thomason","street":"2576 Holmberg Trail","postalCode":"27710","city":"Durham","state":"NC"}, -{"id":261,"firstName":"Bobinette","lastName":"Gowdridge","street":"6780 Superior Place","postalCode":"37605","city":"Johnson City","state":"TN","phoneNumber":"423-490-4990","email":"bgowdridge78@icio.us"}, -{"id":262,"firstName":"Karmen","lastName":"Megson","street":"34 Messerschmidt Point","postalCode":"97229","city":"Portland","state":"OR","email":"kmegson79@apache.org"}, -{"id":263,"firstName":"Thaddeus","lastName":"Padilla","street":"42 Corben Road","postalCode":"90010","city":"Los Angeles","state":"CA","phoneNumber":"213-659-3136","email":"tpadilla7a@hud.gov"}, -{"id":264,"firstName":"Hanna","lastName":"Baswall","street":"9 Old Shore Lane","postalCode":"53710","city":"Madison","state":"WI","email":"hbaswall7b@ezinearticles.com"}, -{"id":265,"firstName":"Tania","lastName":"McMorland","street":"4333 Commercial Point","postalCode":"45408","city":"Dayton","state":"OH"}, -{"id":266,"firstName":"Gifford","lastName":"Arne","street":"0 Drewry Point","postalCode":"24048","city":"Roanoke","state":"VA","email":"garne7d@samsung.com"}, -{"id":267,"firstName":"Tomasina","lastName":"Linch","street":"64992 Maple Wood Point","postalCode":"98447","city":"Tacoma","state":"WA","email":"tlinch7e@theglobeandmail.com"}, -{"id":268,"firstName":"Merrick","lastName":"Garvan","street":"7220 Melody Trail","postalCode":"90005","city":"Los Angeles","state":"CA","email":"mgarvan7f@mozilla.org"}, -{"id":269,"firstName":"Carmita","lastName":"Sailes","street":"3 Bay Lane","postalCode":"55428","city":"Minneapolis","state":"MN","email":"csailes7g@devhub.com"}, -{"id":270,"firstName":"Lesly","lastName":"Eslemont","street":"93302 Mcbride Terrace","postalCode":"19810","city":"Wilmington","state":"DE","email":"leslemont7h@wunderground.com"}, -{"id":271,"firstName":"Adelaida","lastName":"Keggins","street":"4 Birchwood Pass","postalCode":"97405","city":"Eugene","state":"OR","phoneNumber":"541-387-1319"}, -{"id":272,"firstName":"Peadar","lastName":"Forte","street":"1 Montana Center","postalCode":"32505","city":"Pensacola","state":"FL","email":"pforte7j@xing.com"}, -{"id":273,"firstName":"Godfrey","lastName":"Swatland","street":"477 Maple Wood Road","postalCode":"93034","city":"Oxnard","state":"CA","phoneNumber":"805-267-0614","email":"gswatland7k@photobucket.com"}, -{"id":274,"firstName":"Marten","lastName":"Jelleman","street":"57 Pennsylvania Plaza","postalCode":"20057","city":"Washington","state":"DC","email":"mjelleman7l@phoca.cz"}, -{"id":275,"firstName":"Sharity","lastName":"Keady","street":"753 Sauthoff Place","postalCode":"77505","city":"Pasadena","state":"TX"}, -{"id":276,"firstName":"Gabbie","lastName":"Pally","street":"45 Fallview Park","postalCode":"97255","city":"Portland","state":"OR","phoneNumber":"971-412-2293","email":"gpally7n@dyndns.org"}, -{"id":277,"firstName":"Betsy","lastName":"Rhelton","street":"9 Jackson Road","postalCode":"85040","city":"Phoenix","state":"AZ"}, -{"id":278,"firstName":"Patty","lastName":"Schooling","street":"4 Moulton Point","postalCode":"25705","city":"Huntington","state":"WV","phoneNumber":"304-908-8211","email":"pschooling7p@parallels.com"}, -{"id":279,"firstName":"Katlin","lastName":"O'Hallagan","street":"8418 Petterle Plaza","postalCode":"60636","city":"Chicago","state":"IL","email":"kohallagan7q@hao123.com"}, -{"id":280,"firstName":"Anne","lastName":"Wealleans","street":"3 Sachtjen Court","postalCode":"48609","city":"Saginaw","state":"MI"}, -{"id":281,"firstName":"Flory","lastName":"Pley","street":"6322 Golf View Court","postalCode":"19104","city":"Philadelphia","state":"PA"}, -{"id":282,"firstName":"Maryellen","lastName":"Baszkiewicz","street":"54165 Hanson Trail","postalCode":"93726","city":"Fresno","state":"CA","phoneNumber":"209-198-4916","email":"mbaszkiewicz7t@google.com.br"}, -{"id":283,"firstName":"Moyna","lastName":"Caddens","street":"17 Melrose Lane","postalCode":"11236","city":"Brooklyn","state":"NY","phoneNumber":"917-518-3987","email":"mcaddens7u@amazon.co.uk"}, -{"id":284,"firstName":"Lawton","lastName":"Ramiro","street":"2 Muir Park","postalCode":"48092","city":"Warren","state":"MI","phoneNumber":"810-472-5208","email":"lramiro7v@senate.gov"}, -{"id":285,"firstName":"Agnella","lastName":"Phelip","street":"24566 Colorado Pass","postalCode":"84145","city":"Salt Lake City","state":"UT","phoneNumber":"801-709-8696","email":"aphelip7w@woothemes.com"}, -{"id":286,"firstName":"Tracee","lastName":"Tighe","street":"41013 Cascade Lane","postalCode":"02142","city":"Cambridge","state":"MA"}, -{"id":287,"firstName":"Shelden","lastName":"Sowrey","street":"87 Glacier Hill Court","postalCode":"55557","city":"Young America","state":"MN","email":"ssowrey7y@sfgate.com"}, -{"id":288,"firstName":"Letizia","lastName":"Sallery","street":"65052 Shasta Court","postalCode":"44905","city":"Mansfield","state":"OH","phoneNumber":"419-752-9141"}, -{"id":289,"firstName":"Hilly","lastName":"Oyley","street":"7 Waywood Trail","postalCode":"30323","city":"Atlanta","state":"GA","email":"hoyley80@upenn.edu"}, -{"id":290,"firstName":"Sabra","lastName":"Grigoryev","street":"856 Michigan Trail","postalCode":"33705","city":"Saint Petersburg","state":"FL"}, -{"id":291,"firstName":"Nathanil","lastName":"Bodham","street":"536 Ridgeview Way","postalCode":"79984","city":"El Paso","state":"TX","email":"nbodham82@wikimedia.org"}, -{"id":292,"firstName":"Niven","lastName":"Hartzenberg","street":"5 Carpenter Hill","postalCode":"73167","city":"Oklahoma City","state":"OK","email":"nhartzenberg83@bandcamp.com"}, -{"id":293,"firstName":"Rachael","lastName":"Birdsall","street":"61484 Mendota Point","postalCode":"90410","city":"Santa Monica","state":"CA","email":"rbirdsall84@gmpg.org"}, -{"id":294,"firstName":"Gypsy","lastName":"Rallin","street":"4 Spohn Drive","postalCode":"77346","city":"Humble","state":"TX","phoneNumber":"713-508-2912","email":"grallin85@privacy.gov.au"}, -{"id":295,"firstName":"Skye","lastName":"Arsey","street":"49126 Maryland Lane","postalCode":"02119","city":"Boston","state":"MA"}, -{"id":296,"firstName":"Karalee","lastName":"Biddiss","street":"0327 Coleman Lane","postalCode":"10203","city":"New York City","state":"NY","email":"kbiddiss87@studiopress.com"}, -{"id":297,"firstName":"Russ","lastName":"O' Mahony","street":"7831 Caliangt Avenue","postalCode":"37665","city":"Kingsport","state":"TN","phoneNumber":"423-292-1177","email":"romahony88@umich.edu"}, -{"id":298,"firstName":"Gerianne","lastName":"Morfey","street":"1 Jay Hill","postalCode":"97229","city":"Portland","state":"OR","email":"gmorfey89@techcrunch.com"}, -{"id":299,"firstName":"Griz","lastName":"Vellacott","street":"44 Parkside Court","postalCode":"64149","city":"Kansas City","state":"MO","phoneNumber":"816-120-1692"}, -{"id":300,"firstName":"Parker","lastName":"Mantz","street":"3 Arkansas Lane","postalCode":"90005","city":"Los Angeles","state":"CA","email":"pmantz8b@va.gov"}, -{"id":301,"firstName":"Drugi","lastName":"Acaster","street":"426 Hagan Park","postalCode":"20599","city":"Washington","state":"DC","email":"dacaster8c@ihg.com"}, -{"id":302,"firstName":"Peder","lastName":"Monget","street":"9 Wayridge Parkway","postalCode":"92862","city":"Orange","state":"CA","phoneNumber":"714-532-0867","email":"pmonget8d@biblegateway.com"}, -{"id":303,"firstName":"Zilvia","lastName":"Grocutt","street":"1 Stuart Circle","postalCode":"34642","city":"Seminole","state":"FL"}, -{"id":304,"firstName":"Clyve","lastName":"Gunby","street":"75 Dunning Junction","postalCode":"79977","city":"El Paso","state":"TX","email":"cgunby8f@microsoft.com"}, -{"id":305,"firstName":"Zacharias","lastName":"Tomasini","street":"48488 Thackeray Way","postalCode":"40210","city":"Louisville","state":"KY","email":"ztomasini8g@harvard.edu"}, -{"id":306,"firstName":"Ferdinand","lastName":"McGuinley","street":"30366 Kipling Drive","postalCode":"23208","city":"Richmond","state":"VA","email":"fmcguinley8h@archive.org"}, -{"id":307,"firstName":"Ebonee","lastName":"Brumfitt","street":"18765 Division Terrace","postalCode":"30033","city":"Decatur","state":"GA","phoneNumber":"404-684-8364","email":"ebrumfitt8i@sourceforge.net"}, -{"id":308,"firstName":"Christy","lastName":"Cuniam","street":"6 Homewood Road","postalCode":"78744","city":"Austin","state":"TX","phoneNumber":"361-677-9833","email":"ccuniam8j@51.la"}, -{"id":309,"firstName":"Emelen","lastName":"Casin","street":"91 Thompson Plaza","postalCode":"33954","city":"Port Charlotte","state":"FL","email":"ecasin8k@webnode.com"}, -{"id":310,"firstName":"Babara","lastName":"Robberecht","street":"603 Oak Terrace","postalCode":"37450","city":"Chattanooga","state":"TN","email":"brobberecht8l@cargocollective.com"}, -{"id":311,"firstName":"Cesar","lastName":"Whitecross","street":"024 Oxford Junction","postalCode":"20226","city":"Washington","state":"DC","phoneNumber":"202-772-2936"}, -{"id":312,"firstName":"Frieda","lastName":"Sliman","street":"4 Beilfuss Hill","postalCode":"23324","city":"Chesapeake","state":"VA","email":"fsliman8n@bigcartel.com"}, -{"id":313,"firstName":"Dylan","lastName":"Paige","street":"26 Gina Parkway","postalCode":"55448","city":"Minneapolis","state":"MN","email":"dpaige8o@trellian.com"}, -{"id":314,"firstName":"Waring","lastName":"Labon","street":"2843 Spenser Center","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-274-0766","email":"wlabon8p@ucla.edu"}, -{"id":315,"firstName":"Conny","lastName":"Duinkerk","street":"65 Lunder Circle","postalCode":"45426","city":"Dayton","state":"OH","email":"cduinkerk8q@economist.com"}, -{"id":316,"firstName":"Nessie","lastName":"Stucksbury","street":"91449 Browning Drive","postalCode":"25705","city":"Huntington","state":"WV","phoneNumber":"304-182-0766"}, -{"id":317,"firstName":"Corrine","lastName":"Kohlert","street":"00706 Carioca Plaza","postalCode":"45223","city":"Cincinnati","state":"OH","email":"ckohlert8s@wunderground.com"}, -{"id":318,"firstName":"Horatio","lastName":"Greengrass","street":"0 Cascade Park","postalCode":"79905","city":"El Paso","state":"TX","email":"hgreengrass8t@ameblo.jp"}, -{"id":319,"firstName":"Jana","lastName":"McLae","street":"919 Esch Place","postalCode":"55428","city":"Minneapolis","state":"MN","email":"jmclae8u@nytimes.com"}, -{"id":320,"firstName":"Maressa","lastName":"Rehor","street":"55 Talisman Junction","postalCode":"90505","city":"Torrance","state":"CA","email":"mrehor8v@vinaora.com"}, -{"id":321,"firstName":"Filide","lastName":"Riehm","street":"0 Karstens Lane","postalCode":"95054","city":"Santa Clara","state":"CA"}, -{"id":322,"firstName":"Bunnie","lastName":"Mumbey","street":"9369 Bayside Circle","postalCode":"46216","city":"Indianapolis","state":"IN","email":"bmumbey8x@scribd.com"}, -{"id":323,"firstName":"Maxi","lastName":"Jentgens","street":"2970 Rowland Circle","postalCode":"84189","city":"Salt Lake City","state":"UT","phoneNumber":"801-423-8854","email":"mjentgens8y@ihg.com"}, -{"id":324,"firstName":"Florri","lastName":"Okenden","street":"2180 Cody Point","postalCode":"70187","city":"New Orleans","state":"LA","phoneNumber":"504-913-1989","email":"fokenden8z@networksolutions.com"}, -{"id":325,"firstName":"Imogen","lastName":"Grisard","street":"8 Westerfield Avenue","postalCode":"92668","city":"Orange","state":"CA","email":"igrisard90@tamu.edu"}, -{"id":326,"firstName":"Edwina","lastName":"Montes","street":"92 Carpenter Avenue","postalCode":"97216","city":"Portland","state":"OR","phoneNumber":"503-544-7296","email":"emontes91@reference.com"}, -{"id":327,"firstName":"Renelle","lastName":"MacCambridge","street":"77 Talmadge Circle","postalCode":"08638","city":"Trenton","state":"NJ","phoneNumber":"609-150-9438","email":"rmaccambridge92@springer.com"}, -{"id":328,"firstName":"Sterne","lastName":"Taberner","street":"642 6th Terrace","postalCode":"10120","city":"New York City","state":"NY","email":"staberner93@miibeian.gov.cn"}, -{"id":329,"firstName":"Garvy","lastName":"Pankethman","street":"8618 Kennedy Terrace","postalCode":"79405","city":"Lubbock","state":"TX","phoneNumber":"806-470-8784","email":"gpankethman94@free.fr"}, -{"id":330,"firstName":"Nathanil","lastName":"Holston","street":"27247 Eliot Avenue","postalCode":"31190","city":"Atlanta","state":"GA","email":"nholston95@drupal.org"}, -{"id":331,"firstName":"Caresse","lastName":"Kilty","street":"514 Manufacturers Pass","postalCode":"76205","city":"Denton","state":"TX","email":"ckilty96@umich.edu"}, -{"id":332,"firstName":"Arlinda","lastName":"Brenstuhl","street":"2 Sunnyside Avenue","postalCode":"55470","city":"Minneapolis","state":"MN","email":"abrenstuhl97@wisc.edu"}, -{"id":333,"firstName":"Darcy","lastName":"Dunne","street":"3 Badeau Park","postalCode":"91328","city":"Northridge","state":"CA"}, -{"id":334,"firstName":"Malva","lastName":"Grew","street":"2242 Huxley Hill","postalCode":"68510","city":"Lincoln","state":"NE","email":"mgrew99@com.com"}, -{"id":335,"firstName":"Sukey","lastName":"Winspur","street":"475 Melvin Way","postalCode":"68524","city":"Lincoln","state":"NE","phoneNumber":"402-816-9401"}, -{"id":336,"firstName":"Beth","lastName":"O'Dougherty","street":"450 Eastlawn Park","postalCode":"93591","city":"Palmdale","state":"CA","phoneNumber":"661-845-8781"}, -{"id":337,"firstName":"Cortney","lastName":"Meers","street":"9 Chive Drive","postalCode":"93762","city":"Fresno","state":"CA","email":"cmeers9c@diigo.com"}, -{"id":338,"firstName":"Geralda","lastName":"Brocket","street":"0686 La Follette Avenue","postalCode":"80126","city":"Littleton","state":"CO","phoneNumber":"720-641-1371","email":"gbrocket9d@youku.com"}, -{"id":339,"firstName":"Lishe","lastName":"Maliphant","street":"5 Erie Plaza","postalCode":"63169","city":"Saint Louis","state":"MO","email":"lmaliphant9e@sfgate.com"}, -{"id":340,"firstName":"Brod","lastName":"Dobrovsky","street":"9 Gateway Park","postalCode":"79405","city":"Lubbock","state":"TX"}, -{"id":341,"firstName":"Philippe","lastName":"Argile","street":"4 Red Cloud Plaza","postalCode":"49444","city":"Muskegon","state":"MI","phoneNumber":"231-633-5495"}, -{"id":342,"firstName":"Sadye","lastName":"Sally","street":"07 Mendota Terrace","postalCode":"75507","city":"Texarkana","state":"TX","email":"ssally9h@e-recht24.de"}, -{"id":343,"firstName":"Napoleon","lastName":"Piggott","street":"3968 Roxbury Point","postalCode":"35905","city":"Gadsden","state":"AL","email":"npiggott9i@cnbc.com"}, -{"id":344,"firstName":"Jere","lastName":"Larn","street":"5086 Dahle Crossing","postalCode":"39534","city":"Biloxi","state":"MS","email":"jlarn9j@twitter.com"}, -{"id":345,"firstName":"Bevon","lastName":"Stidson","street":"7 Armistice Court","postalCode":"23436","city":"Suffolk","state":"VA","email":"bstidson9k@alexa.com"}, -{"id":346,"firstName":"Drugi","lastName":"Ewbach","street":"6032 5th Avenue","postalCode":"02208","city":"Boston","state":"MA","email":"dewbach9l@techcrunch.com"}, -{"id":347,"firstName":"Milka","lastName":"Caizley","street":"7 Anderson Junction","postalCode":"37228","city":"Nashville","state":"TN","phoneNumber":"615-305-6985","email":"mcaizley9m@cyberchimps.com"}, -{"id":348,"firstName":"Wilton","lastName":"Biagi","street":"80833 6th Crossing","postalCode":"40215","city":"Louisville","state":"KY","email":"wbiagi9n@vinaora.com"}, -{"id":349,"firstName":"Dilly","lastName":"Spradbrow","street":"5 Harbort Street","postalCode":"45419","city":"Dayton","state":"OH","email":"dspradbrow9o@marketwatch.com"}, -{"id":350,"firstName":"Gan","lastName":"Gookey","street":"8387 Bultman Terrace","postalCode":"75241","city":"Dallas","state":"TX"}, -{"id":351,"firstName":"Nanon","lastName":"Mulrenan","street":"47257 Reindahl Drive","postalCode":"22119","city":"Merrifield","state":"VA","phoneNumber":"571-637-8154","email":"nmulrenan9q@godaddy.com"}, -{"id":352,"firstName":"Frederique","lastName":"Watkiss","street":"61 Heath Pass","postalCode":"70124","city":"New Orleans","state":"LA","phoneNumber":"504-891-7051"}, -{"id":353,"firstName":"Sinclare","lastName":"MacCurlye","street":"514 Meadow Ridge Place","postalCode":"97240","city":"Portland","state":"OR","phoneNumber":"971-190-5174","email":"smaccurlye9s@google.ru"}, -{"id":354,"firstName":"Jessie","lastName":"Newlands","street":"80509 Northland Pass","postalCode":"33111","city":"Miami","state":"FL","phoneNumber":"786-557-9193"}, -{"id":355,"firstName":"Jamaal","lastName":"Molder","street":"90 Mcbride Trail","postalCode":"78764","city":"Austin","state":"TX","phoneNumber":"512-320-8728"}, -{"id":356,"firstName":"Benni","lastName":"Sherel","street":"7 Springs Road","postalCode":"15235","city":"Pittsburgh","state":"PA","email":"bsherel9v@hostgator.com"}, -{"id":357,"firstName":"Dene","lastName":"Brigge","street":"8560 Sutteridge Parkway","postalCode":"32412","city":"Panama City","state":"FL"}, -{"id":358,"firstName":"Timoteo","lastName":"Iban","street":"52858 Oak Valley Hill","postalCode":"93750","city":"Fresno","state":"CA","email":"tiban9x@europa.eu"}, -{"id":359,"firstName":"Dar","lastName":"Quillinane","street":"2 Carberry Junction","postalCode":"66276","city":"Shawnee Mission","state":"KS","phoneNumber":"913-977-7562","email":"dquillinane9y@msn.com"}, -{"id":360,"firstName":"Claudian","lastName":"Tinson","street":"445 Novick Avenue","postalCode":"79968","city":"El Paso","state":"TX","email":"ctinson9z@google.cn"}, -{"id":361,"firstName":"Clarice","lastName":"Deneve","street":"94 Meadow Ridge Road","postalCode":"37131","city":"Murfreesboro","state":"TN","phoneNumber":"615-780-7667"}, -{"id":362,"firstName":"Hilary","lastName":"Bithell","street":"20 Russell Trail","postalCode":"81010","city":"Pueblo","state":"CO","email":"hbithella1@list-manage.com"}, -{"id":363,"firstName":"Mathew","lastName":"Scrivin","street":"4 Elgar Point","postalCode":"90081","city":"Los Angeles","state":"CA","phoneNumber":"213-898-6650","email":"mscrivina2@about.me"}, -{"id":364,"firstName":"Idell","lastName":"Rambadt","street":"6 Cherokee Hill","postalCode":"90840","city":"Long Beach","state":"CA","email":"irambadta3@ustream.tv"}, -{"id":365,"firstName":"Nealon","lastName":"Schoolfield","street":"1 Northland Point","postalCode":"74133","city":"Tulsa","state":"OK"}, -{"id":366,"firstName":"Gregorius","lastName":"Bartot","street":"24636 Eagle Crest Crossing","postalCode":"32215","city":"Jacksonville","state":"FL","email":"gbartota5@blogger.com"}, -{"id":367,"firstName":"Inessa","lastName":"Hullin","street":"559 Bartillon Trail","postalCode":"33142","city":"Miami","state":"FL","phoneNumber":"305-381-6621","email":"ihullina6@pcworld.com"}, -{"id":368,"firstName":"Andie","lastName":"Bampford","street":"5204 Meadow Valley Street","postalCode":"92825","city":"Anaheim","state":"CA","email":"abampforda7@sun.com"}, -{"id":369,"firstName":"Duane","lastName":"MacShirrie","street":"5077 Kings Parkway","postalCode":"92725","city":"Santa Ana","state":"CA","email":"dmacshirriea8@rambler.ru"}, -{"id":370,"firstName":"Sydel","lastName":"Deerr","street":"1 Commercial Road","postalCode":"30356","city":"Atlanta","state":"GA","phoneNumber":"404-209-0194","email":"sdeerra9@phpbb.com"}, -{"id":371,"firstName":"Mel","lastName":"Miles","street":"28164 Melody Plaza","postalCode":"90847","city":"Long Beach","state":"CA","phoneNumber":"562-932-1172"}, -{"id":372,"firstName":"Jone","lastName":"Drinkel","street":"946 Reindahl Point","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-547-0653"}, -{"id":373,"firstName":"Marcellus","lastName":"MacGilmartin","street":"10568 Westerfield Way","postalCode":"32868","city":"Orlando","state":"FL","phoneNumber":"407-874-6188","email":"mmacgilmartinac@fotki.com"}, -{"id":374,"firstName":"Bret","lastName":"Hardan","street":"9 Hayes Crossing","postalCode":"32309","city":"Tallahassee","state":"FL","email":"bhardanad@mit.edu"}, -{"id":375,"firstName":"Heddie","lastName":"Cesaric","street":"502 Cody Crossing","postalCode":"95397","city":"Modesto","state":"CA"}, -{"id":376,"firstName":"Tansy","lastName":"Maeer","street":"526 Messerschmidt Court","postalCode":"94089","city":"Sunnyvale","state":"CA","email":"tmaeeraf@arizona.edu"}, -{"id":377,"firstName":"Waverly","lastName":"West-Frimley","street":"02 Quincy Trail","postalCode":"20575","city":"Washington","state":"DC","phoneNumber":"202-493-3304","email":"wwestfrimleyag@ft.com"}, -{"id":378,"firstName":"Dido","lastName":"de Clercq","street":"7 Norway Maple Center","postalCode":"84125","city":"Salt Lake City","state":"UT","email":"ddeclercqah@trellian.com"}, -{"id":379,"firstName":"Vic","lastName":"Samuels","street":"2 Kipling Drive","postalCode":"31190","city":"Atlanta","state":"GA","email":"vsamuelsai@goo.gl"}, -{"id":380,"firstName":"Jeno","lastName":"Freiburger","street":"431 Golden Leaf Parkway","postalCode":"32610","city":"Gainesville","state":"FL","email":"jfreiburgeraj@theguardian.com"}, -{"id":381,"firstName":"Christine","lastName":"Basketter","street":"4 Lotheville Terrace","postalCode":"39305","city":"Meridian","state":"MS","phoneNumber":"601-702-1546"}, -{"id":382,"firstName":"Karry","lastName":"Corsan","street":"09189 Lakeland Point","postalCode":"27409","city":"Greensboro","state":"NC","phoneNumber":"336-445-0006","email":"kcorsanal@usgs.gov"}, -{"id":383,"firstName":"Barri","lastName":"Brinsden","street":"53 Shelley Drive","postalCode":"35225","city":"Birmingham","state":"AL","email":"bbrinsdenam@1und1.de"}, -{"id":384,"firstName":"Hyacintha","lastName":"Boddam","street":"45 Sugar Circle","postalCode":"10160","city":"New York City","state":"NY","phoneNumber":"212-794-6062"}, -{"id":385,"firstName":"Brande","lastName":"Remnant","street":"283 Stone Corner Road","postalCode":"31904","city":"Columbus","state":"GA","phoneNumber":"706-211-4851","email":"bremnantao@people.com.cn"}, -{"id":386,"firstName":"Tally","lastName":"Bygraves","street":"54833 Northport Pass","postalCode":"85072","city":"Phoenix","state":"AZ","email":"tbygravesap@jigsy.com"}, -{"id":387,"firstName":"Garfield","lastName":"Pressnell","street":"63077 Hudson Court","postalCode":"30061","city":"Marietta","state":"GA","email":"gpressnellaq@archive.org"}, -{"id":388,"firstName":"Romonda","lastName":"Stiggles","street":"17 Russell Parkway","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-600-9676"}, -{"id":389,"firstName":"Dedie","lastName":"Ralling","street":"8 Judy Plaza","postalCode":"94137","city":"San Francisco","state":"CA","email":"drallingas@wikia.com"}, -{"id":390,"firstName":"Maddi","lastName":"Cornau","street":"5 Oriole Way","postalCode":"92105","city":"San Diego","state":"CA","phoneNumber":"619-388-6359","email":"mcornauat@adobe.com"}, -{"id":391,"firstName":"Zeke","lastName":"Jennery","street":"65332 Sommers Avenue","postalCode":"48206","city":"Detroit","state":"MI","email":"zjenneryau@elegantthemes.com"}, -{"id":392,"firstName":"Danya","lastName":"Fairlaw","street":"343 Logan Alley","postalCode":"33111","city":"Miami","state":"FL","email":"dfairlawav@irs.gov"}, -{"id":393,"firstName":"Rabi","lastName":"Petheridge","street":"7 Monica Alley","postalCode":"64054","city":"Independence","state":"MO","phoneNumber":"816-501-9452"}, -{"id":394,"firstName":"Ebba","lastName":"Skellen","street":"2655 Iowa Terrace","postalCode":"63150","city":"Saint Louis","state":"MO","phoneNumber":"314-695-7831","email":"eskellenax@nbcnews.com"}, -{"id":395,"firstName":"Marie-ann","lastName":"Glaysher","street":"4 Lakewood Hill","postalCode":"12247","city":"Albany","state":"NY","phoneNumber":"518-634-2425"}, -{"id":396,"firstName":"Arne","lastName":"Quincey","street":"162 Redwing Way","postalCode":"83711","city":"Boise","state":"ID"}, -{"id":397,"firstName":"Clarita","lastName":"Okroy","street":"05 Delaware Way","postalCode":"45218","city":"Cincinnati","state":"OH","email":"cokroyb0@stumbleupon.com"}, -{"id":398,"firstName":"Renault","lastName":"Weighell","street":"498 Dovetail Place","postalCode":"79710","city":"Midland","state":"TX","phoneNumber":"432-955-1408"}, -{"id":399,"firstName":"Roderich","lastName":"Mankor","street":"07 Dayton Way","postalCode":"92160","city":"San Diego","state":"CA"}, -{"id":400,"firstName":"Arv","lastName":"Sunnex","street":"89 Ronald Regan Terrace","postalCode":"91109","city":"Pasadena","state":"CA","email":"asunnexb3@vkontakte.ru"}, -{"id":401,"firstName":"Sonia","lastName":"Cowperthwaite","street":"77 Dennis Point","postalCode":"16550","city":"Erie","state":"PA"}, -{"id":402,"firstName":"Buddie","lastName":"Goscomb","street":"85675 Eastlawn Pass","postalCode":"20535","city":"Washington","state":"DC"}, -{"id":403,"firstName":"Brandi","lastName":"Swaine","street":"39961 Del Mar Lane","postalCode":"39705","city":"Columbus","state":"MS","phoneNumber":"662-306-2164","email":"bswaineb6@miibeian.gov.cn"}, -{"id":404,"firstName":"Jenny","lastName":"Cabbell","street":"743 Fordem Center","postalCode":"78285","city":"San Antonio","state":"TX","phoneNumber":"210-491-9874","email":"jcabbellb7@techcrunch.com"}, -{"id":405,"firstName":"Vincent","lastName":"People","street":"83 Tennessee Way","postalCode":"77293","city":"Houston","state":"TX","phoneNumber":"281-261-1928","email":"vpeopleb8@github.io"}, -{"id":406,"firstName":"Reinald","lastName":"Roles","street":"2 Division Road","postalCode":"53785","city":"Madison","state":"WI","phoneNumber":"608-568-7958","email":"rrolesb9@google.fr"}, -{"id":407,"firstName":"Kale","lastName":"Wanek","street":"7 Crescent Oaks Terrace","postalCode":"46852","city":"Fort Wayne","state":"IN","phoneNumber":"260-844-9669","email":"kwanekba@scribd.com"}, -{"id":408,"firstName":"Charisse","lastName":"Perse","street":"94449 Gateway Street","postalCode":"91117","city":"Pasadena","state":"CA","email":"cpersebb@ycombinator.com"}, -{"id":409,"firstName":"Konstantin","lastName":"Aslum","street":"08 Kings Trail","postalCode":"80328","city":"Boulder","state":"CO","email":"kaslumbc@opera.com"}, -{"id":410,"firstName":"Tyson","lastName":"O'Hartigan","street":"75122 Crowley Place","postalCode":"95173","city":"San Jose","state":"CA","phoneNumber":"408-879-0901","email":"tohartiganbd@devhub.com"}, -{"id":411,"firstName":"Fallon","lastName":"Haysman","street":"477 High Crossing Place","postalCode":"23293","city":"Richmond","state":"VA"}, -{"id":412,"firstName":"Svend","lastName":"Scarlet","street":"2856 Merrick Circle","postalCode":"90087","city":"Los Angeles","state":"CA","email":"sscarletbf@clickbank.net"}, -{"id":413,"firstName":"Gabey","lastName":"Colter","street":"7 2nd Alley","postalCode":"90610","city":"Whittier","state":"CA"}, -{"id":414,"firstName":"Hart","lastName":"Densell","street":"2687 Elka Alley","postalCode":"99599","city":"Anchorage","state":"AK","phoneNumber":"907-286-6079"}, -{"id":415,"firstName":"Claresta","lastName":"Folger","street":"5 Amoth Alley","postalCode":"27116","city":"Winston Salem","state":"NC"}, -{"id":416,"firstName":"Rica","lastName":"Lightowlers","street":"54303 Mayer Drive","postalCode":"61825","city":"Champaign","state":"IL","email":"rlightowlersbj@so-net.ne.jp"}, -{"id":417,"firstName":"Paula","lastName":"Treadaway","street":"8 Anniversary Road","postalCode":"20456","city":"Washington","state":"DC"}, -{"id":418,"firstName":"Francoise","lastName":"Gooderick","street":"13 Knutson Lane","postalCode":"33325","city":"Fort Lauderdale","state":"FL","email":"fgooderickbl@dedecms.com"}, -{"id":419,"firstName":"Ferdy","lastName":"Nannizzi","street":"578 Esker Trail","postalCode":"25321","city":"Charleston","state":"WV","email":"fnannizzibm@rambler.ru"}, -{"id":420,"firstName":"Dody","lastName":"Gettone","street":"9 Veith Court","postalCode":"62711","city":"Springfield","state":"IL"}, -{"id":421,"firstName":"Ronna","lastName":"Godleman","street":"6 Jenna Trail","postalCode":"22301","city":"Alexandria","state":"VA","email":"rgodlemanbo@hexun.com"}, -{"id":422,"firstName":"Adey","lastName":"Waith","street":"2 Mayer Avenue","postalCode":"12325","city":"Schenectady","state":"NY"}, -{"id":423,"firstName":"Stanislaw","lastName":"Garahan","street":"660 Merry Avenue","postalCode":"62723","city":"Springfield","state":"IL","phoneNumber":"217-587-6734"}, -{"id":424,"firstName":"Westley","lastName":"Knowles","street":"67430 Lakeland Circle","postalCode":"53263","city":"Milwaukee","state":"WI","email":"wknowlesbr@msu.edu"}, -{"id":425,"firstName":"Dion","lastName":"Jamson","street":"696 Birchwood Circle","postalCode":"80015","city":"Aurora","state":"CO","phoneNumber":"720-486-4494"}, -{"id":426,"firstName":"Glynis","lastName":"Bourhill","street":"091 Harper Park","postalCode":"40250","city":"Louisville","state":"KY"}, -{"id":427,"firstName":"Massimo","lastName":"Briand","street":"37 Northview Junction","postalCode":"75507","city":"Texarkana","state":"TX","email":"mbriandbu@etsy.com"}, -{"id":428,"firstName":"Tremayne","lastName":"Cadore","street":"6721 Anthes Point","postalCode":"94605","city":"Oakland","state":"CA","email":"tcadorebv@mozilla.com"}, -{"id":429,"firstName":"Lea","lastName":"Wildman","street":"52 Dixon Point","postalCode":"50310","city":"Des Moines","state":"IA","phoneNumber":"515-536-2096"}, -{"id":430,"firstName":"Ambur","lastName":"Oxlade","street":"356 Porter Center","postalCode":"44485","city":"Warren","state":"OH"}, -{"id":431,"firstName":"Jyoti","lastName":"Gillet","street":"13 Del Mar Parkway","postalCode":"81505","city":"Grand Junction","state":"CO","phoneNumber":"970-598-0357"}, -{"id":432,"firstName":"Sascha","lastName":"Stanyan","street":"77289 Blue Bill Park Alley","postalCode":"06120","city":"Hartford","state":"CT","email":"sstanyanbz@geocities.jp"}, -{"id":433,"firstName":"Spenser","lastName":"Harry","street":"2021 Oak Place","postalCode":"32835","city":"Orlando","state":"FL","email":"sharryc0@privacy.gov.au"}, -{"id":434,"firstName":"Clim","lastName":"Penrose","street":"8 Warrior Road","postalCode":"15255","city":"Pittsburgh","state":"PA","email":"cpenrosec1@blogtalkradio.com"}, -{"id":435,"firstName":"Jewell","lastName":"McKinnon","street":"4 Delladonna Street","postalCode":"36114","city":"Montgomery","state":"AL","email":"jmckinnonc2@tinypic.com"}, -{"id":436,"firstName":"Estrellita","lastName":"Amburgy","street":"5538 Tennessee Plaza","postalCode":"17121","city":"Harrisburg","state":"PA","phoneNumber":"717-274-8930","email":"eamburgyc3@forbes.com"}, -{"id":437,"firstName":"Sarah","lastName":"Fears","street":"61 Springs Park","postalCode":"93034","city":"Oxnard","state":"CA","email":"sfearsc4@wisc.edu"}, -{"id":438,"firstName":"Nixie","lastName":"Peddie","street":"7 Armistice Way","postalCode":"10155","city":"New York City","state":"NY","email":"npeddiec5@free.fr"}, -{"id":439,"firstName":"Ardisj","lastName":"Rohmer","street":"726 Crowley Point","postalCode":"93399","city":"Bakersfield","state":"CA","email":"arohmerc6@google.nl"}, -{"id":440,"firstName":"Wallie","lastName":"Johanssen","street":"9555 Jana Park","postalCode":"28410","city":"Wilmington","state":"NC","phoneNumber":"910-160-4520","email":"wjohanssenc7@boston.com"}, -{"id":441,"firstName":"Allan","lastName":"Jodlkowski","street":"31585 Kedzie Park","postalCode":"89150","city":"Las Vegas","state":"NV","phoneNumber":"702-782-3289","email":"ajodlkowskic8@sogou.com"}, -{"id":442,"firstName":"Harris","lastName":"Cadden","street":"96829 Fieldstone Park","postalCode":"16565","city":"Erie","state":"PA","phoneNumber":"814-745-1099"}, -{"id":443,"firstName":"Nigel","lastName":"Girardengo","street":"24703 Red Cloud Road","postalCode":"90310","city":"Inglewood","state":"CA","email":"ngirardengoca@ow.ly"}, -{"id":444,"firstName":"Aila","lastName":"Tinniswood","street":"62812 Stephen Parkway","postalCode":"13205","city":"Syracuse","state":"NY","phoneNumber":"315-847-2259","email":"atinniswoodcb@google.com.br"}, -{"id":445,"firstName":"Genni","lastName":"Geockle","street":"81 Bobwhite Plaza","postalCode":"93721","city":"Fresno","state":"CA","email":"ggeocklecc@furl.net"}, -{"id":446,"firstName":"Madison","lastName":"Brikner","street":"166 Coolidge Trail","postalCode":"07208","city":"Elizabeth","state":"NJ","email":"mbriknercd@myspace.com"}, -{"id":447,"firstName":"Akim","lastName":"Gotthard.sf","street":"0017 Heffernan Parkway","postalCode":"71914","city":"Hot Springs National Park","state":"AR","email":"agotthardsfce@google.com.au"}, -{"id":448,"firstName":"Andria","lastName":"Cardello","street":"1089 Stang Road","postalCode":"96835","city":"Honolulu","state":"HI","phoneNumber":"808-372-6528"}, -{"id":449,"firstName":"Laureen","lastName":"Crawshaw","street":"13 Manitowish Avenue","postalCode":"23504","city":"Norfolk","state":"VA","phoneNumber":"757-220-4043"}, -{"id":450,"firstName":"Henderson","lastName":"Parmley","street":"3408 Superior Street","postalCode":"28410","city":"Wilmington","state":"NC","email":"hparmleych@diigo.com"}, -{"id":451,"firstName":"Henri","lastName":"Arnley","street":"54 Knutson Park","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"718-365-7389"}, -{"id":452,"firstName":"Phil","lastName":"Trunkfield","street":"07 Arizona Way","postalCode":"85030","city":"Phoenix","state":"AZ","email":"ptrunkfieldcj@cisco.com"}, -{"id":453,"firstName":"Chery","lastName":"Nangle","street":"03 Merrick Way","postalCode":"88569","city":"El Paso","state":"TX","phoneNumber":"915-959-5535","email":"cnangleck@tumblr.com"}, -{"id":454,"firstName":"Leora","lastName":"Fields","street":"0260 Eastlawn Lane","postalCode":"85311","city":"Glendale","state":"AZ","email":"lfieldscl@nyu.edu"}, -{"id":455,"firstName":"Ronnica","lastName":"Pocknoll","street":"786 Hovde Plaza","postalCode":"78410","city":"Corpus Christi","state":"TX","email":"rpocknollcm@unesco.org"}, -{"id":456,"firstName":"Valida","lastName":"Romayn","street":"1108 Hudson Drive","postalCode":"34615","city":"Clearwater","state":"FL","email":"vromayncn@usatoday.com"}, -{"id":457,"firstName":"Randee","lastName":"Strowther","street":"441 Cordelia Point","postalCode":"27710","city":"Durham","state":"NC","phoneNumber":"919-463-1516","email":"rstrowtherco@trellian.com"}, -{"id":458,"firstName":"Ansell","lastName":"Blacklock","street":"9393 Kedzie Point","postalCode":"75358","city":"Dallas","state":"TX","phoneNumber":"214-949-3912"}, -{"id":459,"firstName":"Bailie","lastName":"Wing","street":"79459 Buhler Way","postalCode":"15279","city":"Pittsburgh","state":"PA","phoneNumber":"412-431-5446"}, -{"id":460,"firstName":"Leesa","lastName":"Wellbeloved","street":"4553 Dakota Circle","postalCode":"40215","city":"Louisville","state":"KY","phoneNumber":"502-145-8496","email":"lwellbelovedcr@go.com"}, -{"id":461,"firstName":"Sarge","lastName":"Tocknell","street":"9884 North Alley","postalCode":"80249","city":"Denver","state":"CO","phoneNumber":"303-603-8315","email":"stocknellcs@artisteer.com"}, -{"id":462,"firstName":"Loralyn","lastName":"Grimolbie","street":"3620 Clyde Gallagher Junction","postalCode":"91103","city":"Pasadena","state":"CA","email":"lgrimolbiect@purevolume.com"}, -{"id":463,"firstName":"Ki","lastName":"Youdell","street":"3 Gina Center","postalCode":"81005","city":"Pueblo","state":"CO"}, -{"id":464,"firstName":"Katerine","lastName":"Herreros","street":"70 Westend Place","postalCode":"57105","city":"Sioux Falls","state":"SD"}, -{"id":465,"firstName":"Frasquito","lastName":"Nockolds","street":"21 Dwight Park","postalCode":"11236","city":"Brooklyn","state":"NY","phoneNumber":"917-761-0549"}, -{"id":466,"firstName":"Krystalle","lastName":"Brierly","street":"7797 Forest Dale Lane","postalCode":"90410","city":"Santa Monica","state":"CA","email":"kbrierlycx@simplemachines.org"}, -{"id":467,"firstName":"Tobin","lastName":"Guillford","street":"501 Messerschmidt Alley","postalCode":"98195","city":"Seattle","state":"WA","phoneNumber":"206-862-7413","email":"tguillfordcy@fastcompany.com"}, -{"id":468,"firstName":"Lorita","lastName":"Sikorski","street":"83 Corscot Junction","postalCode":"44905","city":"Mansfield","state":"OH","phoneNumber":"419-278-2324","email":"lsikorskicz@intel.com"}, -{"id":469,"firstName":"Hermon","lastName":"Chomley","street":"696 Talisman Lane","postalCode":"35290","city":"Birmingham","state":"AL"}, -{"id":470,"firstName":"Karolina","lastName":"Andrault","street":"49738 Maple Wood Place","postalCode":"99709","city":"Fairbanks","state":"AK","phoneNumber":"907-337-1698","email":"kandraultd1@bloglines.com"}, -{"id":471,"firstName":"Lev","lastName":"Pankhurst.","street":"442 Pennsylvania Crossing","postalCode":"23605","city":"Newport News","state":"VA","phoneNumber":"757-832-3631"}, -{"id":472,"firstName":"Bianca","lastName":"Garfath","street":"7 Forest Run Center","postalCode":"71914","city":"Hot Springs National Park","state":"AR","email":"bgarfathd3@youku.com"}, -{"id":473,"firstName":"Walden","lastName":"Van der Linde","street":"6 Namekagon Parkway","postalCode":"70187","city":"New Orleans","state":"LA","email":"wvanderlinded4@netscape.com"}, -{"id":474,"firstName":"Alexandra","lastName":"Vasyukhin","street":"471 School Alley","postalCode":"80910","city":"Colorado Springs","state":"CO","email":"avasyukhind5@samsung.com"}, -{"id":475,"firstName":"Perry","lastName":"Spere","street":"33 Autumn Leaf Street","postalCode":"79994","city":"El Paso","state":"TX","email":"pspered6@tamu.edu"}, -{"id":476,"firstName":"Cristobal","lastName":"Afonso","street":"5 Lake View Way","postalCode":"19136","city":"Philadelphia","state":"PA","email":"cafonsod7@themeforest.net"}, -{"id":477,"firstName":"Sebastien","lastName":"Annets","street":"4229 Bowman Trail","postalCode":"43699","city":"Toledo","state":"OH","phoneNumber":"419-981-8630","email":"sannetsd8@guardian.co.uk"}, -{"id":478,"firstName":"Prentice","lastName":"Desorts","street":"54 Mendota Drive","postalCode":"31196","city":"Atlanta","state":"GA","phoneNumber":"404-235-6736","email":"pdesortsd9@who.int"}, -{"id":479,"firstName":"Rubin","lastName":"Dunkerk","street":"035 Myrtle Park","postalCode":"94297","city":"Sacramento","state":"CA","phoneNumber":"916-658-2157","email":"rdunkerkda@columbia.edu"}, -{"id":480,"firstName":"Jesselyn","lastName":"Bidnall","street":"2353 Norway Maple Court","postalCode":"07522","city":"Paterson","state":"NJ","email":"jbidnalldb@4shared.com"}, -{"id":481,"firstName":"Arleta","lastName":"Massy","street":"2 Bluejay Lane","postalCode":"10310","city":"Staten Island","state":"NY"}, -{"id":482,"firstName":"Trescha","lastName":"Joncic","street":"052 Summit Way","postalCode":"13217","city":"Syracuse","state":"NY"}, -{"id":483,"firstName":"Joshuah","lastName":"Galbreth","street":"16 Elka Place","postalCode":"08922","city":"New Brunswick","state":"NJ","email":"jgalbrethde@rambler.ru"}, -{"id":484,"firstName":"Clywd","lastName":"Henlon","street":"26 Thackeray Pass","postalCode":"90040","city":"Los Angeles","state":"CA","email":"chenlondf@unesco.org"}, -{"id":485,"firstName":"Glenda","lastName":"Grayley","street":"6326 Ohio Plaza","postalCode":"91411","city":"Van Nuys","state":"CA"}, -{"id":486,"firstName":"Glynda","lastName":"Stokell","street":"6 Schmedeman Court","postalCode":"60641","city":"Chicago","state":"IL","email":"gstokelldh@ted.com"}, -{"id":487,"firstName":"Kath","lastName":"Harrap","street":"43769 Barby Plaza","postalCode":"32304","city":"Tallahassee","state":"FL","email":"kharrapdi@cargocollective.com"}, -{"id":488,"firstName":"Dickie","lastName":"Domotor","street":"2954 Toban Lane","postalCode":"98133","city":"Seattle","state":"WA","email":"ddomotordj@hhs.gov"}, -{"id":489,"firstName":"Ceciley","lastName":"Hitzke","street":"9102 Westport Pass","postalCode":"40618","city":"Frankfort","state":"KY","phoneNumber":"502-545-5506","email":"chitzkedk@newsvine.com"}, -{"id":490,"firstName":"Adler","lastName":"Webb-Bowen","street":"5 Hanover Street","postalCode":"32123","city":"Daytona Beach","state":"FL"}, -{"id":491,"firstName":"Fergus","lastName":"Domerq","street":"06 Hansons Road","postalCode":"58106","city":"Fargo","state":"ND","phoneNumber":"701-656-3778"}, -{"id":492,"firstName":"Kimbra","lastName":"Petherick","street":"867 Mayer Drive","postalCode":"39236","city":"Jackson","state":"MS"}, -{"id":493,"firstName":"Geneva","lastName":"Hobgen","street":"74 Vernon Parkway","postalCode":"53710","city":"Madison","state":"WI","email":"ghobgendo@google.de"}, -{"id":494,"firstName":"Jillane","lastName":"Skitral","street":"9747 Ruskin Point","postalCode":"22405","city":"Fredericksburg","state":"VA","email":"jskitraldp@mysql.com"}, -{"id":495,"firstName":"Carolin","lastName":"Pimblotte","street":"8 Union Way","postalCode":"75358","city":"Dallas","state":"TX","phoneNumber":"214-109-7114","email":"cpimblottedq@cargocollective.com"}, -{"id":496,"firstName":"Wandis","lastName":"Andreasson","street":"3 Nancy Parkway","postalCode":"70033","city":"Metairie","state":"LA","email":"wandreassondr@topsy.com"}, -{"id":497,"firstName":"Baily","lastName":"Dalliston","street":"602 Melrose Way","postalCode":"25331","city":"Charleston","state":"WV","email":"bdallistonds@storify.com"}, -{"id":498,"firstName":"Kissie","lastName":"Lammiman","street":"4 Memorial Terrace","postalCode":"06510","city":"New Haven","state":"CT","phoneNumber":"203-724-3731","email":"klammimandt@barnesandnoble.com"}, -{"id":499,"firstName":"Cloris","lastName":"Dorning","street":"4 Lien Road","postalCode":"37235","city":"Nashville","state":"TN","email":"cdorningdu@unesco.org"}, -{"id":500,"firstName":"Jemimah","lastName":"Juppe","street":"979 Tennessee Pass","postalCode":"85305","city":"Glendale","state":"AZ"}, -{"id":501,"firstName":"Fanchette","lastName":"Marlor","street":"90 Waywood Circle","postalCode":"44511","city":"Youngstown","state":"OH","email":"fmarlordw@is.gd"}, -{"id":502,"firstName":"Carmelle","lastName":"Stillmann","street":"9124 Sachtjen Way","postalCode":"74184","city":"Tulsa","state":"OK","email":"cstillmanndx@telegraph.co.uk"}, -{"id":503,"firstName":"Joelle","lastName":"Mumford","street":"5 Susan Point","postalCode":"28410","city":"Wilmington","state":"NC","email":"jmumforddy@yellowbook.com"}, -{"id":504,"firstName":"Vicky","lastName":"Danzelman","street":"472 Pond Junction","postalCode":"11220","city":"Brooklyn","state":"NY","email":"vdanzelmandz@stumbleupon.com"}, -{"id":505,"firstName":"Baudoin","lastName":"Grenshiels","street":"4703 Tony Circle","postalCode":"76198","city":"Fort Worth","state":"TX","email":"bgrenshielse0@devhub.com"}, -{"id":506,"firstName":"Rosetta","lastName":"Wennington","street":"3 Kensington Crossing","postalCode":"14619","city":"Rochester","state":"NY"}, -{"id":507,"firstName":"Eudora","lastName":"Murtell","street":"97 Mockingbird Circle","postalCode":"92867","city":"Orange","state":"CA","phoneNumber":"949-899-3967"}, -{"id":508,"firstName":"Sonnie","lastName":"Hawkin","street":"76669 Green Ridge Crossing","postalCode":"79491","city":"Lubbock","state":"TX","email":"shawkine3@wikia.com"}, -{"id":509,"firstName":"Ulysses","lastName":"Uman","street":"4 Fieldstone Circle","postalCode":"32128","city":"Daytona Beach","state":"FL","phoneNumber":"386-761-6071","email":"uumane4@multiply.com"}, -{"id":510,"firstName":"Alidia","lastName":"Kowalski","street":"3915 Harper Plaza","postalCode":"75221","city":"Dallas","state":"TX","email":"akowalskie5@simplemachines.org"}, -{"id":511,"firstName":"Willis","lastName":"Jeaneau","street":"8 Northport Center","postalCode":"37939","city":"Knoxville","state":"TN","phoneNumber":"865-336-2729","email":"wjeaneaue6@furl.net"}, -{"id":512,"firstName":"Clement","lastName":"Taudevin","street":"25062 Amoth Pass","postalCode":"31914","city":"Columbus","state":"GA","email":"ctaudevine7@mapquest.com"}, -{"id":513,"firstName":"Tally","lastName":"Arnatt","street":"5745 Nancy Terrace","postalCode":"95054","city":"Santa Clara","state":"CA","email":"tarnatte8@umich.edu"}, -{"id":514,"firstName":"Eldon","lastName":"Munnings","street":"17 Dayton Parkway","postalCode":"27690","city":"Raleigh","state":"NC","email":"emunningse9@gmpg.org"}, -{"id":515,"firstName":"Duffie","lastName":"Sibary","street":"840 Springview Avenue","postalCode":"48275","city":"Detroit","state":"MI","email":"dsibaryea@livejournal.com"}, -{"id":516,"firstName":"Winny","lastName":"Dobell","street":"0426 Lindbergh Street","postalCode":"81015","city":"Pueblo","state":"CO","phoneNumber":"719-882-3553","email":"wdobelleb@bizjournals.com"}, -{"id":517,"firstName":"Pancho","lastName":"Pointon","street":"79 Clyde Gallagher Park","postalCode":"97306","city":"Salem","state":"OR","phoneNumber":"503-151-2205"}, -{"id":518,"firstName":"Elston","lastName":"Warwicker","street":"96 Schmedeman Park","postalCode":"44705","city":"Canton","state":"OH","email":"ewarwickered@arstechnica.com"}, -{"id":519,"firstName":"Nicolle","lastName":"Shellcross","street":"23982 Cambridge Parkway","postalCode":"80940","city":"Colorado Springs","state":"CO","email":"nshellcrossee@hibu.com"}, -{"id":520,"firstName":"Bethanne","lastName":"Briggdale","street":"026 Portage Circle","postalCode":"43215","city":"Columbus","state":"OH","phoneNumber":"513-925-3139","email":"bbriggdaleef@flickr.com"}, -{"id":521,"firstName":"Elsey","lastName":"McCorry","street":"781 International Parkway","postalCode":"94286","city":"Sacramento","state":"CA","phoneNumber":"916-879-2104","email":"emccorryeg@sakura.ne.jp"}, -{"id":522,"firstName":"Abran","lastName":"Vasyuchov","street":"64 Grim Place","postalCode":"44177","city":"Cleveland","state":"OH"}, -{"id":523,"firstName":"Rhoda","lastName":"Grieveson","street":"50687 Towne Pass","postalCode":"11220","city":"Brooklyn","state":"NY","email":"rgrievesonei@mit.edu"}, -{"id":524,"firstName":"Florette","lastName":"Eke","street":"85057 Anzinger Lane","postalCode":"66225","city":"Shawnee Mission","state":"KS","phoneNumber":"913-299-0032","email":"fekeej@fema.gov"}, -{"id":525,"firstName":"Sheff","lastName":"Baigrie","street":"80366 Lawn Hill","postalCode":"02203","city":"Boston","state":"MA","phoneNumber":"617-556-4978","email":"sbaigrieek@aboutads.info"}, -{"id":526,"firstName":"Clarisse","lastName":"Hubbuck","street":"435 Truax Trail","postalCode":"02458","city":"Newton","state":"MA","phoneNumber":"781-641-2937"}, -{"id":527,"firstName":"Gilberte","lastName":"Yanele","street":"413 Glacier Hill Park","postalCode":"90610","city":"Whittier","state":"CA","phoneNumber":"562-451-1686","email":"gyaneleem@dot.gov"}, -{"id":528,"firstName":"Lefty","lastName":"Dufore","street":"957 Straubel Street","postalCode":"35220","city":"Birmingham","state":"AL","email":"lduforeen@slideshare.net"}, -{"id":529,"firstName":"Saul","lastName":"Shepperd","street":"44805 Sunnyside Place","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-904-7271"}, -{"id":530,"firstName":"Hadrian","lastName":"Cockhill","street":"479 Mayer Way","postalCode":"22119","city":"Merrifield","state":"VA","email":"hcockhillep@xrea.com"}, -{"id":531,"firstName":"Amalia","lastName":"Geare","street":"63075 Glendale Trail","postalCode":"90065","city":"Los Angeles","state":"CA","email":"ageareeq@vistaprint.com"}, -{"id":532,"firstName":"Adan","lastName":"Ibbeson","street":"5 Cambridge Lane","postalCode":"73142","city":"Oklahoma City","state":"OK"}, -{"id":533,"firstName":"Nicol","lastName":"Garbutt","street":"3 8th Street","postalCode":"50393","city":"Des Moines","state":"IA","phoneNumber":"515-946-8077"}, -{"id":534,"firstName":"Lilas","lastName":"Estcot","street":"1927 Mitchell Avenue","postalCode":"75185","city":"Mesquite","state":"TX","email":"lestcotet@ezinearticles.com"}, -{"id":535,"firstName":"Valina","lastName":"Dellenbrok","street":"1 Victoria Hill","postalCode":"45249","city":"Cincinnati","state":"OH","phoneNumber":"513-958-5055","email":"vdellenbrokeu@upenn.edu"}, -{"id":536,"firstName":"Gwen","lastName":"Harwell","street":"64275 Bartelt Terrace","postalCode":"93721","city":"Fresno","state":"CA"}, -{"id":537,"firstName":"Adriena","lastName":"Lochead","street":"0088 Hintze Point","postalCode":"43231","city":"Columbus","state":"OH","phoneNumber":"614-506-5616","email":"alocheadew@paypal.com"}, -{"id":538,"firstName":"Jacobo","lastName":"Jills","street":"809 Anderson Park","postalCode":"55557","city":"Young America","state":"MN","phoneNumber":"952-580-6574","email":"jjillsex@xing.com"}, -{"id":539,"firstName":"Saree","lastName":"Jeanequin","street":"0212 Clyde Gallagher Alley","postalCode":"32891","city":"Orlando","state":"FL","email":"sjeanequiney@who.int"}, -{"id":540,"firstName":"Kin","lastName":"Dewar","street":"3 Emmet Center","postalCode":"20244","city":"Washington","state":"DC","email":"kdewarez@discovery.com"}, -{"id":541,"firstName":"Kaleena","lastName":"Godfray","street":"4350 Eliot Parkway","postalCode":"76134","city":"Fort Worth","state":"TX","phoneNumber":"817-332-6412","email":"kgodfrayf0@webmd.com"}, -{"id":542,"firstName":"Wallace","lastName":"Poytres","street":"78157 Dovetail Crossing","postalCode":"14683","city":"Rochester","state":"NY","email":"wpoytresf1@springer.com"}, -{"id":543,"firstName":"Dur","lastName":"Burgise","street":"2 Weeping Birch Court","postalCode":"89130","city":"Las Vegas","state":"NV"}, -{"id":544,"firstName":"Sheridan","lastName":"Gardiner","street":"26 Gateway Crossing","postalCode":"64193","city":"Kansas City","state":"MO","phoneNumber":"816-647-4434","email":"sgardinerf3@jugem.jp"}, -{"id":545,"firstName":"Nickolaus","lastName":"Thomassen","street":"130 Anderson Drive","postalCode":"33330","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-339-0290"}, -{"id":546,"firstName":"Boris","lastName":"Cortez","street":"55 Center Court","postalCode":"10184","city":"New York City","state":"NY","phoneNumber":"212-549-8414","email":"bcortezf5@mail.ru"}, -{"id":547,"firstName":"Candra","lastName":"Codner","street":"24078 Superior Point","postalCode":"93715","city":"Fresno","state":"CA","phoneNumber":"209-495-8135"}, -{"id":548,"firstName":"Ashton","lastName":"Hugin","street":"33 Fuller Place","postalCode":"63143","city":"Saint Louis","state":"MO"}, -{"id":549,"firstName":"Miguelita","lastName":"Lanceley","street":"34877 Arizona Street","postalCode":"80045","city":"Aurora","state":"CO","email":"mlanceleyf8@trellian.com"}, -{"id":550,"firstName":"Law","lastName":"Skim","street":"1795 Farmco Street","postalCode":"28230","city":"Charlotte","state":"NC","email":"lskimf9@bravesites.com"}, -{"id":551,"firstName":"Carlita","lastName":"Kindall","street":"7 Scofield Road","postalCode":"93709","city":"Fresno","state":"CA","email":"ckindallfa@zimbio.com"}, -{"id":552,"firstName":"Mehetabel","lastName":"Stawell","street":"648 Upham Plaza","postalCode":"75277","city":"Dallas","state":"TX","phoneNumber":"214-597-5958","email":"mstawellfb@ehow.com"}, -{"id":553,"firstName":"Charlena","lastName":"MacAlpyne","street":"2 Village Terrace","postalCode":"33758","city":"Clearwater","state":"FL","phoneNumber":"813-452-9764","email":"cmacalpynefc@xinhuanet.com"}, -{"id":554,"firstName":"Gayel","lastName":"Litel","street":"34782 Birchwood Road","postalCode":"46406","city":"Gary","state":"IN","phoneNumber":"219-156-8377","email":"glitelfd@alibaba.com"}, -{"id":555,"firstName":"Prisca","lastName":"Kanzler","street":"67 Miller Terrace","postalCode":"08619","city":"Trenton","state":"NJ","phoneNumber":"609-352-4487"}, -{"id":556,"firstName":"Marlowe","lastName":"Idenden","street":"396 Beilfuss Park","postalCode":"74103","city":"Tulsa","state":"OK","phoneNumber":"918-254-3102"}, -{"id":557,"firstName":"Ashley","lastName":"Skule","street":"2327 Valley Edge Terrace","postalCode":"93794","city":"Fresno","state":"CA","phoneNumber":"559-558-9123"}, -{"id":558,"firstName":"Trista","lastName":"Naptine","street":"646 Dahle Court","postalCode":"06538","city":"New Haven","state":"CT","phoneNumber":"203-257-3017","email":"tnaptinefh@hugedomains.com"}, -{"id":559,"firstName":"Hasheem","lastName":"Ottery","street":"004 Clemons Street","postalCode":"28815","city":"Asheville","state":"NC","phoneNumber":"828-768-3824","email":"hotteryfi@gmpg.org"}, -{"id":560,"firstName":"Alisa","lastName":"Bernhardt","street":"49 Cody Center","postalCode":"84120","city":"Salt Lake City","state":"UT","phoneNumber":"801-808-4005","email":"abernhardtfj@census.gov"}, -{"id":561,"firstName":"Isadora","lastName":"Hatchett","street":"78644 Hoepker Junction","postalCode":"77015","city":"Houston","state":"TX","email":"ihatchettfk@spiegel.de"}, -{"id":562,"firstName":"Valdemar","lastName":"Stithe","street":"75 East Street","postalCode":"48206","city":"Detroit","state":"MI","email":"vstithefl@marriott.com"}, -{"id":563,"firstName":"Elden","lastName":"Rebert","street":"2 Florence Place","postalCode":"65110","city":"Jefferson City","state":"MO","phoneNumber":"573-753-8030"}, -{"id":564,"firstName":"Stormie","lastName":"Trewartha","street":"59 Shoshone Lane","postalCode":"19136","city":"Philadelphia","state":"PA","phoneNumber":"215-466-6832"}, -{"id":565,"firstName":"Bernhard","lastName":"Boulsher","street":"50888 Dwight Drive","postalCode":"02114","city":"Boston","state":"MA","email":"bboulsherfo@zdnet.com"}, -{"id":566,"firstName":"Twyla","lastName":"Yerrill","street":"526 Clove Terrace","postalCode":"40745","city":"London","state":"KY","email":"tyerrillfp@smugmug.com"}, -{"id":567,"firstName":"Sullivan","lastName":"Dudeney","street":"953 Swallow Crossing","postalCode":"19160","city":"Philadelphia","state":"PA","email":"sdudeneyfq@kickstarter.com"}, -{"id":568,"firstName":"Estell","lastName":"Kiggel","street":"8170 Rusk Alley","postalCode":"20442","city":"Washington","state":"DC","phoneNumber":"202-645-5828","email":"ekiggelfr@imgur.com"}, -{"id":569,"firstName":"Jonis","lastName":"Pymer","street":"21296 International Pass","postalCode":"77844","city":"College Station","state":"TX","email":"jpymerfs@nymag.com"}, -{"id":570,"firstName":"Linea","lastName":"Cranmor","street":"2541 Thackeray Hill","postalCode":"31210","city":"Macon","state":"GA"}, -{"id":571,"firstName":"Starlin","lastName":"Reven","street":"7692 Mifflin Hill","postalCode":"66611","city":"Topeka","state":"KS","email":"srevenfu@nba.com"}, -{"id":572,"firstName":"Augusta","lastName":"Heustice","street":"947 Ramsey Lane","postalCode":"10292","city":"New York City","state":"NY","phoneNumber":"212-194-3346","email":"aheusticefv@cloudflare.com"}, -{"id":573,"firstName":"Glen","lastName":"O'Mailey","street":"90 6th Court","postalCode":"33982","city":"Punta Gorda","state":"FL","phoneNumber":"941-381-2231"}, -{"id":574,"firstName":"Astrix","lastName":"Bister","street":"505 Artisan Crossing","postalCode":"23324","city":"Chesapeake","state":"VA","phoneNumber":"757-469-4444","email":"abisterfx@uol.com.br"}, -{"id":575,"firstName":"Shaw","lastName":"Lidbetter","street":"70 New Castle Trail","postalCode":"10474","city":"Bronx","state":"NY","phoneNumber":"917-917-9173"}, -{"id":576,"firstName":"Yovonnda","lastName":"Wych","street":"97472 Derek Drive","postalCode":"90410","city":"Santa Monica","state":"CA","email":"ywychfz@symantec.com"}, -{"id":577,"firstName":"Harcourt","lastName":"Faier","street":"056 Northridge Street","postalCode":"16510","city":"Erie","state":"PA","email":"hfaierg0@cloudflare.com"}, -{"id":578,"firstName":"Archibold","lastName":"Kos","street":"6 Forster Park","postalCode":"63104","city":"Saint Louis","state":"MO","phoneNumber":"314-967-5566","email":"akosg1@soup.io"}, -{"id":579,"firstName":"Nataniel","lastName":"Beldom","street":"1 Sullivan Street","postalCode":"02453","city":"Waltham","state":"MA","email":"nbeldomg2@alibaba.com"}, -{"id":580,"firstName":"Felisha","lastName":"Bamfield","street":"970 Washington Avenue","postalCode":"12305","city":"Schenectady","state":"NY","email":"fbamfieldg3@jimdo.com"}, -{"id":581,"firstName":"Colly","lastName":"Rugge","street":"8 Golf Course Avenue","postalCode":"55172","city":"Saint Paul","state":"MN","phoneNumber":"651-450-9347","email":"cruggeg4@tmall.com"}, -{"id":582,"firstName":"Patti","lastName":"Maddrell","street":"0483 Coolidge Drive","postalCode":"74193","city":"Tulsa","state":"OK"}, -{"id":583,"firstName":"Antin","lastName":"Gabbetis","street":"93510 Clemons Drive","postalCode":"68583","city":"Lincoln","state":"NE","email":"agabbetisg6@java.com"}, -{"id":584,"firstName":"Bree","lastName":"Million","street":"3 Columbus Avenue","postalCode":"61614","city":"Peoria","state":"IL","phoneNumber":"309-360-1909","email":"bmilliong7@gnu.org"}, -{"id":585,"firstName":"Taber","lastName":"Lorait","street":"4 Melrose Way","postalCode":"62764","city":"Springfield","state":"IL","phoneNumber":"217-436-2021","email":"tloraitg8@cargocollective.com"}, -{"id":586,"firstName":"Roley","lastName":"Di Carlo","street":"981 Bowman Center","postalCode":"87505","city":"Santa Fe","state":"NM"}, -{"id":587,"firstName":"Seline","lastName":"Oxenham","street":"65051 Forest Run Center","postalCode":"94064","city":"Redwood City","state":"CA","email":"soxenhamga@fastcompany.com"}, -{"id":588,"firstName":"Costa","lastName":"Tomblin","street":"7 Arapahoe Alley","postalCode":"33315","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-239-1335"}, -{"id":589,"firstName":"Opalina","lastName":"Cake","street":"88 Commercial Avenue","postalCode":"40215","city":"Louisville","state":"KY","email":"ocakegc@examiner.com"}, -{"id":590,"firstName":"Suzanne","lastName":"Giuroni","street":"73 Twin Pines Terrace","postalCode":"99260","city":"Spokane","state":"WA"}, -{"id":591,"firstName":"Faustine","lastName":"Croysdale","street":"01 Delladonna Point","postalCode":"48295","city":"Detroit","state":"MI"}, -{"id":592,"firstName":"Sheffie","lastName":"Aldine","street":"4 Hansons Junction","postalCode":"74108","city":"Tulsa","state":"OK"}, -{"id":593,"firstName":"Bret","lastName":"Birrane","street":"745 Mayer Junction","postalCode":"77030","city":"Houston","state":"TX","phoneNumber":"832-374-7571","email":"bbirranegg@opera.com"}, -{"id":594,"firstName":"Lennard","lastName":"Mowbury","street":"5 Dwight Road","postalCode":"94522","city":"Concord","state":"CA","email":"lmowburygh@1und1.de"}, -{"id":595,"firstName":"Albie","lastName":"Pert","street":"23705 Fieldstone Plaza","postalCode":"08922","city":"New Brunswick","state":"NJ","phoneNumber":"732-587-7312","email":"apertgi@netlog.com"}, -{"id":596,"firstName":"Stevie","lastName":"Pressnell","street":"0077 Ronald Regan Point","postalCode":"85020","city":"Phoenix","state":"AZ","phoneNumber":"623-991-0482","email":"spressnellgj@skype.com"}, -{"id":597,"firstName":"Eddy","lastName":"McIlreavy","street":"04 Luster Lane","postalCode":"94126","city":"San Francisco","state":"CA"}, -{"id":598,"firstName":"Webb","lastName":"Titterell","street":"94323 Kedzie Alley","postalCode":"91505","city":"Burbank","state":"CA","phoneNumber":"818-220-9105","email":"wtitterellgl@bandcamp.com"}, -{"id":599,"firstName":"Jeffrey","lastName":"Benito","street":"7487 Scott Lane","postalCode":"11470","city":"Jamaica","state":"NY","phoneNumber":"917-379-2592","email":"jbenitogm@deviantart.com"}, -{"id":600,"firstName":"Nollie","lastName":"Arsey","street":"7282 Summerview Plaza","postalCode":"55811","city":"Duluth","state":"MN","email":"narseygn@imageshack.us"}, -{"id":601,"firstName":"Petra","lastName":"Turpey","street":"43920 Evergreen Junction","postalCode":"77255","city":"Houston","state":"TX","phoneNumber":"713-446-0144"}, -{"id":602,"firstName":"Harwilll","lastName":"Lashbrook","street":"8063 Grasskamp Parkway","postalCode":"27621","city":"Raleigh","state":"NC","phoneNumber":"919-142-9887","email":"hlashbrookgp@seattletimes.com"}, -{"id":603,"firstName":"Tedman","lastName":"Steinor","street":"80230 Hanson Hill","postalCode":"47134","city":"Jeffersonville","state":"IN","email":"tsteinorgq@dmoz.org"}, -{"id":604,"firstName":"Georgette","lastName":"Tupper","street":"37 Lillian Avenue","postalCode":"33543","city":"Zephyrhills","state":"FL","phoneNumber":"813-743-2425","email":"gtuppergr@qq.com"}, -{"id":605,"firstName":"Torrance","lastName":"Welsh","street":"95802 Doe Crossing Crossing","postalCode":"13217","city":"Syracuse","state":"NY","phoneNumber":"315-145-4503","email":"twelshgs@imgur.com"}, -{"id":606,"firstName":"Silvie","lastName":"Souster","street":"52827 Fuller Place","postalCode":"99709","city":"Fairbanks","state":"AK"}, -{"id":607,"firstName":"Pauline","lastName":"Dulwitch","street":"8 Aberg Drive","postalCode":"17105","city":"Harrisburg","state":"PA","phoneNumber":"717-228-4960","email":"pdulwitchgu@aboutads.info"}, -{"id":608,"firstName":"Roberta","lastName":"Castanie","street":"182 Mosinee Avenue","postalCode":"75185","city":"Mesquite","state":"TX"}, -{"id":609,"firstName":"Percival","lastName":"Kristoffersen","street":"4 Del Mar Park","postalCode":"48335","city":"Farmington","state":"MI","phoneNumber":"248-438-1650","email":"pkristoffersengw@chron.com"}, -{"id":610,"firstName":"Caryl","lastName":"Boame","street":"094 Springview Avenue","postalCode":"78255","city":"San Antonio","state":"TX","email":"cboamegx@example.com"}, -{"id":611,"firstName":"Steve","lastName":"Simakov","street":"323 Brickson Park Trail","postalCode":"32244","city":"Jacksonville","state":"FL","phoneNumber":"904-468-9377","email":"ssimakovgy@angelfire.com"}, -{"id":612,"firstName":"Carl","lastName":"Tumayan","street":"93854 Clyde Gallagher Circle","postalCode":"98447","city":"Tacoma","state":"WA","email":"ctumayangz@1und1.de"}, -{"id":613,"firstName":"Gayle","lastName":"Blaker","street":"5930 Grasskamp Drive","postalCode":"12262","city":"Albany","state":"NY","email":"gblakerh0@spiegel.de"}, -{"id":614,"firstName":"Darrick","lastName":"Harefoot","street":"359 Waywood Trail","postalCode":"20189","city":"Dulles","state":"VA"}, -{"id":615,"firstName":"Sayer","lastName":"Eversfield","street":"86 Park Meadow Crossing","postalCode":"53263","city":"Milwaukee","state":"WI","email":"seversfieldh2@multiply.com"}, -{"id":616,"firstName":"Loralyn","lastName":"Poyner","street":"28530 Magdeline Crossing","postalCode":"84125","city":"Salt Lake City","state":"UT","phoneNumber":"801-363-2593"}, -{"id":617,"firstName":"Petrina","lastName":"Ridewood","street":"91782 Oriole Parkway","postalCode":"80235","city":"Denver","state":"CO","phoneNumber":"720-131-3660","email":"pridewoodh4@walmart.com"}, -{"id":618,"firstName":"Leroi","lastName":"Marde","street":"7992 Prairieview Junction","postalCode":"02142","city":"Cambridge","state":"MA","phoneNumber":"781-623-9420","email":"lmardeh5@oracle.com"}, -{"id":619,"firstName":"Brannon","lastName":"Janata","street":"79706 Wayridge Alley","postalCode":"24515","city":"Lynchburg","state":"VA","phoneNumber":"434-255-0721"}, -{"id":620,"firstName":"Berry","lastName":"Joska","street":"301 6th Alley","postalCode":"10150","city":"New York City","state":"NY","email":"bjoskah7@360.cn"}, -{"id":621,"firstName":"Blinnie","lastName":"Basten","street":"047 Canary Parkway","postalCode":"30343","city":"Atlanta","state":"GA","phoneNumber":"404-794-2760"}, -{"id":622,"firstName":"Inesita","lastName":"Abbitt","street":"8 Sachtjen Plaza","postalCode":"60681","city":"Chicago","state":"IL"}, -{"id":623,"firstName":"Nickie","lastName":"Ellicombe","street":"1067 Ridge Oak Terrace","postalCode":"38131","city":"Memphis","state":"TN","phoneNumber":"901-695-3826","email":"nellicombeha@imgur.com"}, -{"id":624,"firstName":"Barney","lastName":"Sheeres","street":"1 Rutledge Avenue","postalCode":"29208","city":"Columbia","state":"SC","phoneNumber":"803-166-1398"}, -{"id":625,"firstName":"Ogdan","lastName":"Lelievre","street":"27 Weeping Birch Plaza","postalCode":"27264","city":"High Point","state":"NC","phoneNumber":"336-416-3966","email":"olelievrehc@exblog.jp"}, -{"id":626,"firstName":"Zora","lastName":"Exter","street":"7 Ronald Regan Pass","postalCode":"33673","city":"Tampa","state":"FL"}, -{"id":627,"firstName":"Travus","lastName":"Jaulme","street":"3159 Montana Circle","postalCode":"79176","city":"Amarillo","state":"TX","phoneNumber":"806-894-9411"}, -{"id":628,"firstName":"Krishna","lastName":"Beckingham","street":"58 Fair Oaks Lane","postalCode":"30311","city":"Atlanta","state":"GA","email":"kbeckinghamhf@usnews.com"}, -{"id":629,"firstName":"Bartolomeo","lastName":"Bosanko","street":"753 Victoria Place","postalCode":"79699","city":"Abilene","state":"TX","phoneNumber":"325-223-9615","email":"bbosankohg@merriam-webster.com"}, -{"id":630,"firstName":"Umberto","lastName":"McGinly","street":"30 Upham Parkway","postalCode":"80945","city":"Colorado Springs","state":"CO","email":"umcginlyhh@cdc.gov"}, -{"id":631,"firstName":"Launce","lastName":"Fatkin","street":"03246 Esch Place","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-916-7032","email":"lfatkinhi@blogs.com"}, -{"id":632,"firstName":"Simone","lastName":"Soars","street":"9969 Forest Run Crossing","postalCode":"90101","city":"Los Angeles","state":"CA","phoneNumber":"213-282-8462"}, -{"id":633,"firstName":"Clerissa","lastName":"Leason","street":"59731 Mayfield Street","postalCode":"89510","city":"Reno","state":"NV"}, -{"id":634,"firstName":"Rutter","lastName":"Sultan","street":"697 Spenser Way","postalCode":"77245","city":"Houston","state":"TX"}, -{"id":635,"firstName":"Shannon","lastName":"De Carteret","street":"2 Grover Avenue","postalCode":"92717","city":"Irvine","state":"CA","phoneNumber":"714-410-2360","email":"sdecarterethm@simplemachines.org"}, -{"id":636,"firstName":"Sawyere","lastName":"Cardno","street":"428 Golf Course Drive","postalCode":"33111","city":"Miami","state":"FL"}, -{"id":637,"firstName":"Paulie","lastName":"Bucktharp","street":"5398 Sugar Park","postalCode":"10039","city":"New York City","state":"NY","phoneNumber":"646-197-4123","email":"pbucktharpho@businessweek.com"}, -{"id":638,"firstName":"Kippy","lastName":"Guisler","street":"2161 Claremont Trail","postalCode":"20546","city":"Washington","state":"DC","phoneNumber":"202-138-6171","email":"kguislerhp@ox.ac.uk"}, -{"id":639,"firstName":"Yoshiko","lastName":"Tolson","street":"2 Glendale Court","postalCode":"27415","city":"Greensboro","state":"NC","email":"ytolsonhq@example.com"}, -{"id":640,"firstName":"Page","lastName":"Chillingsworth","street":"8 Loomis Drive","postalCode":"55470","city":"Minneapolis","state":"MN","email":"pchillingsworthhr@wunderground.com"}, -{"id":641,"firstName":"Jillana","lastName":"O'Siaghail","street":"13517 Del Mar Road","postalCode":"29215","city":"Columbia","state":"SC","phoneNumber":"803-420-8597","email":"josiaghailhs@reuters.com"}, -{"id":642,"firstName":"Phedra","lastName":"Bagnold","street":"7059 Hallows Street","postalCode":"55470","city":"Minneapolis","state":"MN","email":"pbagnoldht@howstuffworks.com"}, -{"id":643,"firstName":"Bellina","lastName":"Gouldie","street":"7567 Bultman Way","postalCode":"88514","city":"El Paso","state":"TX","email":"bgouldiehu@salon.com"}, -{"id":644,"firstName":"Devi","lastName":"Bohden","street":"68833 Northview Hill","postalCode":"84115","city":"Salt Lake City","state":"UT"}, -{"id":645,"firstName":"Peggi","lastName":"Gobert","street":"667 Sauthoff Hill","postalCode":"44710","city":"Canton","state":"OH","email":"pgoberthw@mapy.cz"}, -{"id":646,"firstName":"Madelina","lastName":"Gurys","street":"70 Del Sol Trail","postalCode":"20420","city":"Washington","state":"DC","phoneNumber":"202-747-9276","email":"mguryshx@hibu.com"}, -{"id":647,"firstName":"Ikey","lastName":"Aubri","street":"76 Sutteridge Hill","postalCode":"36205","city":"Anniston","state":"AL","phoneNumber":"256-945-5095","email":"iaubrihy@mayoclinic.com"}, -{"id":648,"firstName":"Ginevra","lastName":"Duffitt","street":"25 Eagan Circle","postalCode":"31217","city":"Macon","state":"GA"}, -{"id":649,"firstName":"Cissiee","lastName":"Gozzard","street":"40240 Lillian Park","postalCode":"60609","city":"Chicago","state":"IL","email":"cgozzardi0@columbia.edu"}, -{"id":650,"firstName":"Sonny","lastName":"Jobern","street":"8 Green Trail","postalCode":"77065","city":"Houston","state":"TX","email":"sjoberni1@ucoz.com"}, -{"id":651,"firstName":"Mitch","lastName":"Guidera","street":"0 Dorton Junction","postalCode":"35210","city":"Birmingham","state":"AL","phoneNumber":"205-224-0177"}, -{"id":652,"firstName":"Dorey","lastName":"Marks","street":"81562 Maywood Crossing","postalCode":"71208","city":"Monroe","state":"LA","phoneNumber":"318-492-5487"}, -{"id":653,"firstName":"Pavla","lastName":"Conneely","street":"4007 Mifflin Lane","postalCode":"20456","city":"Washington","state":"DC"}, -{"id":654,"firstName":"Kym","lastName":"Gecks","street":"72638 Namekagon Plaza","postalCode":"61656","city":"Peoria","state":"IL","email":"kgecksi5@nature.com"}, -{"id":655,"firstName":"Prudence","lastName":"Peert","street":"91 Tomscot Parkway","postalCode":"32209","city":"Jacksonville","state":"FL","phoneNumber":"904-277-2945","email":"ppeerti6@usa.gov"}, -{"id":656,"firstName":"Elston","lastName":"Paolo","street":"4 Jenna Crossing","postalCode":"95155","city":"San Jose","state":"CA","email":"epaoloi7@umn.edu"}, -{"id":657,"firstName":"Indira","lastName":"Splaven","street":"8853 Vermont Drive","postalCode":"38188","city":"Memphis","state":"TN","phoneNumber":"901-706-3908","email":"isplaveni8@fda.gov"}, -{"id":658,"firstName":"Paul","lastName":"Mc Meekin","street":"56 Vidon Drive","postalCode":"08695","city":"Trenton","state":"NJ","phoneNumber":"609-361-1580"}, -{"id":659,"firstName":"Hadley","lastName":"Windmill","street":"31384 Evergreen Point","postalCode":"16550","city":"Erie","state":"PA","email":"hwindmillia@yale.edu"}, -{"id":660,"firstName":"Jay","lastName":"Yesichev","street":"675 Starling Pass","postalCode":"89150","city":"Las Vegas","state":"NV"}, -{"id":661,"firstName":"Ranna","lastName":"Dowtry","street":"303 Nevada Pass","postalCode":"48550","city":"Flint","state":"MI","phoneNumber":"810-164-4521","email":"rdowtryic@amazon.co.jp"}, -{"id":662,"firstName":"Annabel","lastName":"Pellamont","street":"277 Merrick Crossing","postalCode":"36605","city":"Mobile","state":"AL","phoneNumber":"251-595-3594","email":"apellamontid@reverbnation.com"}, -{"id":663,"firstName":"Kaitlynn","lastName":"Tracey","street":"612 Magdeline Road","postalCode":"97296","city":"Portland","state":"OR","email":"ktraceyie@ycombinator.com"}, -{"id":664,"firstName":"Matthiew","lastName":"Jills","street":"65 Walton Circle","postalCode":"93750","city":"Fresno","state":"CA","email":"mjillsif@addthis.com"}, -{"id":665,"firstName":"Bartlet","lastName":"Roe","street":"51573 Mandrake Park","postalCode":"02109","city":"Boston","state":"MA","phoneNumber":"617-460-5377","email":"broeig@nasa.gov"}, -{"id":666,"firstName":"Ban","lastName":"Knotton","street":"174 Westridge Parkway","postalCode":"32405","city":"Panama City","state":"FL","phoneNumber":"850-939-6502","email":"bknottonih@businesswire.com"}, -{"id":667,"firstName":"Cordelie","lastName":"O'Dee","street":"1733 Linden Avenue","postalCode":"80940","city":"Colorado Springs","state":"CO","phoneNumber":"719-966-3402","email":"codeeii@amazonaws.com"}, -{"id":668,"firstName":"Hardy","lastName":"Lob","street":"4 Bultman Road","postalCode":"75074","city":"Plano","state":"TX","email":"hlobij@dropbox.com"}, -{"id":669,"firstName":"Rosabelle","lastName":"Tonner","street":"1 Holy Cross Trail","postalCode":"36670","city":"Mobile","state":"AL","phoneNumber":"251-606-9437","email":"rtonnerik@google.ru"}, -{"id":670,"firstName":"Bernardina","lastName":"Mardy","street":"65 Myrtle Center","postalCode":"96845","city":"Honolulu","state":"HI","email":"bmardyil@wordpress.com"}, -{"id":671,"firstName":"Hynda","lastName":"Soldner","street":"88 Hazelcrest Drive","postalCode":"55470","city":"Minneapolis","state":"MN","email":"hsoldnerim@webeden.co.uk"}, -{"id":672,"firstName":"Quinn","lastName":"Templeton","street":"5 Village Way","postalCode":"19131","city":"Philadelphia","state":"PA","email":"qtempletonin@diigo.com"}, -{"id":673,"firstName":"Torrence","lastName":"Askwith","street":"1 Namekagon Point","postalCode":"31410","city":"Savannah","state":"GA","phoneNumber":"912-552-5239","email":"taskwithio@people.com.cn"}, -{"id":674,"firstName":"Bonnie","lastName":"Robilliard","street":"731 Johnson Lane","postalCode":"24515","city":"Lynchburg","state":"VA","phoneNumber":"434-382-5496"}, -{"id":675,"firstName":"Daphna","lastName":"D'Souza","street":"1549 Loftsgordon Center","postalCode":"91406","city":"Van Nuys","state":"CA","phoneNumber":"818-773-9088"}, -{"id":676,"firstName":"Palm","lastName":"Gandrich","street":"9 4th Pass","postalCode":"87121","city":"Albuquerque","state":"NM","phoneNumber":"505-815-5555"}, -{"id":677,"firstName":"Danie","lastName":"Gaydon","street":"382 Bayside Junction","postalCode":"55441","city":"Minneapolis","state":"MN","phoneNumber":"952-744-9400","email":"dgaydonis@seesaa.net"}, -{"id":678,"firstName":"Tabatha","lastName":"Caddock","street":"3858 Mccormick Road","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-996-7653","email":"tcaddockit@gizmodo.com"}, -{"id":679,"firstName":"Sergent","lastName":"Cade","street":"7 Riverside Crossing","postalCode":"13505","city":"Utica","state":"NY","email":"scadeiu@google.co.uk"}, -{"id":680,"firstName":"Shina","lastName":"Dumphry","street":"483 Del Mar Terrace","postalCode":"73109","city":"Oklahoma City","state":"OK","phoneNumber":"405-261-3364","email":"sdumphryiv@mediafire.com"}, -{"id":681,"firstName":"Aaron","lastName":"O'Neal","street":"669 Crowley Road","postalCode":"87140","city":"Albuquerque","state":"NM","phoneNumber":"505-451-6591","email":"aonealiw@npr.org"}, -{"id":682,"firstName":"Cynthea","lastName":"Wippermann","street":"109 Kinsman Parkway","postalCode":"06606","city":"Bridgeport","state":"CT","phoneNumber":"203-799-4552"}, -{"id":683,"firstName":"Stoddard","lastName":"Hullett","street":"06200 Mesta Park","postalCode":"78769","city":"Austin","state":"TX","phoneNumber":"512-190-7003"}, -{"id":684,"firstName":"Margit","lastName":"Comusso","street":"54 Springs Center","postalCode":"33737","city":"Saint Petersburg","state":"FL","phoneNumber":"727-144-3743","email":"mcomussoiz@drupal.org"}, -{"id":685,"firstName":"Dur","lastName":"Manns","street":"464 Park Meadow Road","postalCode":"90015","city":"Los Angeles","state":"CA","email":"dmannsj0@nymag.com"}, -{"id":686,"firstName":"Hollie","lastName":"Aldersey","street":"12195 Mallory Court","postalCode":"21405","city":"Annapolis","state":"MD","email":"halderseyj1@businessinsider.com"}, -{"id":687,"firstName":"Ralina","lastName":"Crepin","street":"13313 Clyde Gallagher Way","postalCode":"78285","city":"San Antonio","state":"TX"}, -{"id":688,"firstName":"Lyell","lastName":"Graveston","street":"20 Talisman Crossing","postalCode":"27157","city":"Winston Salem","state":"NC","phoneNumber":"336-638-3366","email":"lgravestonj3@webmd.com"}, -{"id":689,"firstName":"Anny","lastName":"Potell","street":"0 Ludington Circle","postalCode":"32803","city":"Orlando","state":"FL","email":"apotellj4@microsoft.com"}, -{"id":690,"firstName":"Harriot","lastName":"Klimpke","street":"8 Southridge Alley","postalCode":"22047","city":"Falls Church","state":"VA","phoneNumber":"571-470-2688","email":"hklimpkej5@slashdot.org"}, -{"id":691,"firstName":"Stacia","lastName":"Stainsby","street":"78 Mcbride Avenue","postalCode":"46862","city":"Fort Wayne","state":"IN"}, -{"id":692,"firstName":"Zacharia","lastName":"Willmont","street":"24 Everett Center","postalCode":"73135","city":"Oklahoma City","state":"OK","phoneNumber":"405-167-0584","email":"zwillmontj7@tuttocitta.it"}, -{"id":693,"firstName":"Dorelia","lastName":"Flexman","street":"0 Hauk Crossing","postalCode":"95298","city":"Stockton","state":"CA","phoneNumber":"209-759-3308"}, -{"id":694,"firstName":"Rubi","lastName":"Karran","street":"586 Eggendart Pass","postalCode":"64082","city":"Lees Summit","state":"MO","email":"rkarranj9@yahoo.com"}, -{"id":695,"firstName":"Edlin","lastName":"Davidsen","street":"5646 Arrowood Park","postalCode":"20591","city":"Washington","state":"DC","phoneNumber":"202-800-5817","email":"edavidsenja@purevolume.com"}, -{"id":696,"firstName":"Oralle","lastName":"Coneybeare","street":"0 Lakewood Parkway","postalCode":"08695","city":"Trenton","state":"NJ","email":"oconeybearejb@booking.com"}, -{"id":697,"firstName":"Scotti","lastName":"Cereceres","street":"2 Golf Hill","postalCode":"38119","city":"Memphis","state":"TN"}, -{"id":698,"firstName":"Hermione","lastName":"Mingotti","street":"14 Shoshone Alley","postalCode":"44511","city":"Youngstown","state":"OH","phoneNumber":"330-505-0585"}, -{"id":699,"firstName":"Janka","lastName":"Merredy","street":"877 Reinke Park","postalCode":"45233","city":"Cincinnati","state":"OH","email":"jmerredyje@furl.net"}, -{"id":700,"firstName":"Phillida","lastName":"Gannicleff","street":"48778 Sheridan Center","postalCode":"99210","city":"Spokane","state":"WA","email":"pgannicleffjf@github.io"}, -{"id":701,"firstName":"Bryn","lastName":"Shury","street":"82609 Surrey Road","postalCode":"78240","city":"San Antonio","state":"TX","phoneNumber":"210-361-9404","email":"bshuryjg@arstechnica.com"}, -{"id":702,"firstName":"Bobbe","lastName":"Yurocjhin","street":"54904 Southridge Parkway","postalCode":"33633","city":"Tampa","state":"FL","email":"byurocjhinjh@tumblr.com"}, -{"id":703,"firstName":"Noell","lastName":"Trewman","street":"63703 Fair Oaks Point","postalCode":"91520","city":"Burbank","state":"CA"}, -{"id":704,"firstName":"Adelind","lastName":"Marr","street":"68 Lotheville Park","postalCode":"02912","city":"Providence","state":"RI","email":"amarrjj@hexun.com"}, -{"id":705,"firstName":"Arabelle","lastName":"Oultram","street":"7927 Waxwing Place","postalCode":"77085","city":"Houston","state":"TX","email":"aoultramjk@diigo.com"}, -{"id":706,"firstName":"Derril","lastName":"Whylie","street":"1 Summerview Terrace","postalCode":"91606","city":"North Hollywood","state":"CA","phoneNumber":"323-244-3266","email":"dwhyliejl@auda.org.au"}, -{"id":707,"firstName":"Isadore","lastName":"Airth","street":"08897 Hauk Court","postalCode":"73104","city":"Oklahoma City","state":"OK","phoneNumber":"405-488-1807"}, -{"id":708,"firstName":"Barbara","lastName":"Feast","street":"420 Bayside Circle","postalCode":"63136","city":"Saint Louis","state":"MO","phoneNumber":"314-919-9094"}, -{"id":709,"firstName":"Engracia","lastName":"Laxtonne","street":"189 Oneill Center","postalCode":"22047","city":"Falls Church","state":"VA","email":"elaxtonnejo@addthis.com"}, -{"id":710,"firstName":"Dorice","lastName":"Dearle","street":"655 Union Way","postalCode":"47705","city":"Evansville","state":"IN","phoneNumber":"812-812-8795","email":"ddearlejp@mail.ru"}, -{"id":711,"firstName":"Crissie","lastName":"Leall","street":"1 1st Drive","postalCode":"36689","city":"Mobile","state":"AL","phoneNumber":"251-112-1542","email":"clealljq@nyu.edu"}, -{"id":712,"firstName":"Rica","lastName":"Wilshin","street":"0 Miller Way","postalCode":"79705","city":"Midland","state":"TX","phoneNumber":"432-935-1867"}, -{"id":713,"firstName":"Annie","lastName":"Thorns","street":"297 Thompson Park","postalCode":"32412","city":"Panama City","state":"FL","phoneNumber":"850-594-4049"}, -{"id":714,"firstName":"Lilah","lastName":"Beining","street":"1566 American Ash Avenue","postalCode":"25326","city":"Charleston","state":"WV","email":"lbeiningjt@mayoclinic.com"}, -{"id":715,"firstName":"Leeann","lastName":"Dorant","street":"5530 Mcguire Alley","postalCode":"93407","city":"San Luis Obispo","state":"CA","email":"ldorantju@homestead.com"}, -{"id":716,"firstName":"Elinor","lastName":"James","street":"2 Waxwing Terrace","postalCode":"88579","city":"El Paso","state":"TX","email":"ejamesjv@europa.eu"}, -{"id":717,"firstName":"Novelia","lastName":"Durman","street":"7 Hermina Junction","postalCode":"77050","city":"Houston","state":"TX","email":"ndurmanjw@fc2.com"}, -{"id":718,"firstName":"Sharai","lastName":"Pickervance","street":"739 Lien Junction","postalCode":"73167","city":"Oklahoma City","state":"OK","email":"spickervancejx@independent.co.uk"}, -{"id":719,"firstName":"Gilberte","lastName":"Stilling","street":"29950 Annamark Trail","postalCode":"89178","city":"Las Vegas","state":"NV","phoneNumber":"702-604-4240","email":"gstillingjy@feedburner.com"}, -{"id":720,"firstName":"Rosabelle","lastName":"Guinan","street":"13078 Sutherland Center","postalCode":"83757","city":"Boise","state":"ID","phoneNumber":"208-792-6705"}, -{"id":721,"firstName":"Karin","lastName":"Ackermann","street":"3 Susan Hill","postalCode":"48919","city":"Lansing","state":"MI","phoneNumber":"517-579-7811","email":"kackermannk0@csmonitor.com"}, -{"id":722,"firstName":"Reeta","lastName":"Attwell","street":"96 Alpine Junction","postalCode":"66622","city":"Topeka","state":"KS"}, -{"id":723,"firstName":"Dru","lastName":"Linck","street":"37 Wayridge Place","postalCode":"49505","city":"Grand Rapids","state":"MI","phoneNumber":"616-197-1837"}, -{"id":724,"firstName":"Frances","lastName":"Collingridge","street":"273 Ludington Crossing","postalCode":"77255","city":"Houston","state":"TX"}, -{"id":725,"firstName":"Wilmette","lastName":"Haimes","street":"8408 Shopko Circle","postalCode":"98907","city":"Yakima","state":"WA","phoneNumber":"509-821-5948"}, -{"id":726,"firstName":"Isahella","lastName":"Rubrow","street":"25 Melby Crossing","postalCode":"59105","city":"Billings","state":"MT","email":"irubrowk5@edublogs.org"}, -{"id":727,"firstName":"Walden","lastName":"Sappson","street":"1 3rd Hill","postalCode":"60435","city":"Joliet","state":"IL","email":"wsappsonk6@ameblo.jp"}, -{"id":728,"firstName":"Blondie","lastName":"Godehard.sf","street":"4606 Caliangt Circle","postalCode":"20709","city":"Laurel","state":"MD"}, -{"id":729,"firstName":"Dion","lastName":"Wingeatt","street":"098 Ridgeview Alley","postalCode":"78769","city":"Austin","state":"TX","phoneNumber":"512-948-4113","email":"dwingeattk8@clickbank.net"}, -{"id":730,"firstName":"Antoni","lastName":"Tibbles","street":"9 Muir Court","postalCode":"25313","city":"Charleston","state":"WV","phoneNumber":"304-298-6149","email":"atibblesk9@usa.gov"}, -{"id":731,"firstName":"Quinn","lastName":"McKevin","street":"063 Washington Parkway","postalCode":"55470","city":"Minneapolis","state":"MN","phoneNumber":"612-140-1997"}, -{"id":732,"firstName":"Rita","lastName":"Hallam","street":"4 Chive Court","postalCode":"85025","city":"Phoenix","state":"AZ","email":"rhallamkb@list-manage.com"}, -{"id":733,"firstName":"Cliff","lastName":"McCrum","street":"30841 Scoville Street","postalCode":"38150","city":"Memphis","state":"TN","phoneNumber":"901-983-7713","email":"cmccrumkc@yellowpages.com"}, -{"id":734,"firstName":"Allyson","lastName":"Petkov","street":"057 Grover Trail","postalCode":"55487","city":"Minneapolis","state":"MN","phoneNumber":"612-706-7185"}, -{"id":735,"firstName":"Tanney","lastName":"Cicccitti","street":"84959 Calypso Way","postalCode":"66629","city":"Topeka","state":"KS","phoneNumber":"785-516-0753","email":"tcicccittike@netscape.com"}, -{"id":736,"firstName":"Brendin","lastName":"Behnke","street":"3057 Browning Parkway","postalCode":"38181","city":"Memphis","state":"TN","email":"bbehnkekf@answers.com"}, -{"id":737,"firstName":"Sydelle","lastName":"Lestor","street":"6 Old Shore Way","postalCode":"73167","city":"Oklahoma City","state":"OK"}, -{"id":738,"firstName":"Nilson","lastName":"Nelthorp","street":"5 Gerald Trail","postalCode":"60567","city":"Naperville","state":"IL","phoneNumber":"630-718-5304","email":"nnelthorpkh@scribd.com"}, -{"id":739,"firstName":"Randy","lastName":"Boller","street":"64 Roth Junction","postalCode":"95354","city":"Modesto","state":"CA","phoneNumber":"209-795-8532","email":"rbollerki@nature.com"}, -{"id":740,"firstName":"Vicki","lastName":"De Vaan","street":"08 Mariners Cove Terrace","postalCode":"62776","city":"Springfield","state":"IL","email":"vdevaankj@disqus.com"}, -{"id":741,"firstName":"Romain","lastName":"Castri","street":"7 Atwood Road","postalCode":"02905","city":"Providence","state":"RI","phoneNumber":"401-865-9950","email":"rcastrikk@google.com.br"}, -{"id":742,"firstName":"Adlai","lastName":"Keppel","street":"6 Farragut Circle","postalCode":"76705","city":"Waco","state":"TX","phoneNumber":"254-852-6322"}, -{"id":743,"firstName":"Arlyne","lastName":"Whalley","street":"6 Esker Terrace","postalCode":"83727","city":"Boise","state":"ID","email":"awhalleykm@amazon.co.uk"}, -{"id":744,"firstName":"Alistair","lastName":"Jennins","street":"6 Loeprich Center","postalCode":"21684","city":"Ridgely","state":"MD","phoneNumber":"410-494-2201","email":"ajenninskn@sciencedaily.com"}, -{"id":745,"firstName":"Farr","lastName":"Steer","street":"8569 Eliot Lane","postalCode":"93381","city":"Bakersfield","state":"CA","phoneNumber":"661-416-1609","email":"fsteerko@usgs.gov"}, -{"id":746,"firstName":"Analise","lastName":"Balasini","street":"8901 Lyons Parkway","postalCode":"23242","city":"Richmond","state":"VA","email":"abalasinikp@imgur.com"}, -{"id":747,"firstName":"Gilbert","lastName":"Lockton","street":"3 Leroy Court","postalCode":"49018","city":"Battle Creek","state":"MI","email":"glocktonkq@google.nl"}, -{"id":748,"firstName":"Hamlen","lastName":"Massie","street":"469 Mallory Drive","postalCode":"77250","city":"Houston","state":"TX","email":"hmassiekr@admin.ch"}, -{"id":749,"firstName":"Ebony","lastName":"Loker","street":"21173 Raven Point","postalCode":"21265","city":"Baltimore","state":"MD"}, -{"id":750,"firstName":"Kristina","lastName":"Deeble","street":"479 Warner Park","postalCode":"92013","city":"Carlsbad","state":"CA","phoneNumber":"760-377-7198","email":"kdeeblekt@ezinearticles.com"}, -{"id":751,"firstName":"Jabez","lastName":"Mummery","street":"1 East Point","postalCode":"52809","city":"Davenport","state":"IA","email":"jmummeryku@sfgate.com"}, -{"id":752,"firstName":"Perrine","lastName":"Aldwinckle","street":"98 Montana Avenue","postalCode":"85030","city":"Phoenix","state":"AZ","phoneNumber":"602-224-2810","email":"paldwincklekv@eepurl.com"}, -{"id":753,"firstName":"Humfried","lastName":"Pendleton","street":"843 Swallow Park","postalCode":"89115","city":"Las Vegas","state":"NV","phoneNumber":"702-524-6047"}, -{"id":754,"firstName":"Dario","lastName":"Chesshire","street":"638 Westport Place","postalCode":"96845","city":"Honolulu","state":"HI","phoneNumber":"808-718-1386"}, -{"id":755,"firstName":"Cherianne","lastName":"Hearfield","street":"15 Quincy Street","postalCode":"14233","city":"Buffalo","state":"NY","email":"chearfieldky@technorati.com"}, -{"id":756,"firstName":"Jemima","lastName":"Oxnam","street":"22276 Maple Street","postalCode":"92165","city":"San Diego","state":"CA","email":"joxnamkz@addtoany.com"}, -{"id":757,"firstName":"Tedmund","lastName":"Chandler","street":"81 Katie Point","postalCode":"44310","city":"Akron","state":"OH","phoneNumber":"330-336-2279","email":"tchandlerl0@webeden.co.uk"}, -{"id":758,"firstName":"Tobie","lastName":"Risley","street":"82996 Reindahl Junction","postalCode":"17140","city":"Harrisburg","state":"PA","phoneNumber":"717-272-9110","email":"trisleyl1@youtu.be"}, -{"id":759,"firstName":"Tomi","lastName":"Crevagh","street":"91791 Buhler Park","postalCode":"33715","city":"Saint Petersburg","state":"FL"}, -{"id":760,"firstName":"Luce","lastName":"Gwatkin","street":"424 Lunder Crossing","postalCode":"31416","city":"Savannah","state":"GA"}, -{"id":761,"firstName":"Vinita","lastName":"Hannon","street":"90 Claremont Trail","postalCode":"39236","city":"Jackson","state":"MS"}, -{"id":762,"firstName":"Ruby","lastName":"O'Cosgra","street":"304 Dayton Avenue","postalCode":"07188","city":"Newark","state":"NJ"}, -{"id":763,"firstName":"Amandi","lastName":"Vasiltsov","street":"98188 Killdeer Alley","postalCode":"93399","city":"Bakersfield","state":"CA","email":"avasiltsovl6@smh.com.au"}, -{"id":764,"firstName":"Juliana","lastName":"Goldspink","street":"93 Maryland Terrace","postalCode":"06705","city":"Waterbury","state":"CT","email":"jgoldspinkl7@guardian.co.uk"}, -{"id":765,"firstName":"Giorgi","lastName":"Yakovl","street":"24240 Shasta Drive","postalCode":"46814","city":"Fort Wayne","state":"IN","phoneNumber":"260-754-5907"}, -{"id":766,"firstName":"Aleksandr","lastName":"Justun","street":"06 Fulton Terrace","postalCode":"85025","city":"Phoenix","state":"AZ"}, -{"id":767,"firstName":"Cornela","lastName":"Grindell","street":"1 Hazelcrest Lane","postalCode":"53285","city":"Milwaukee","state":"WI"}, -{"id":768,"firstName":"Liv","lastName":"Madrell","street":"623 Cordelia Terrace","postalCode":"17105","city":"Harrisburg","state":"PA","email":"lmadrelllb@1688.com"}, -{"id":769,"firstName":"Konstance","lastName":"Rosebotham","street":"8930 Utah Terrace","postalCode":"20029","city":"Washington","state":"DC","email":"krosebothamlc@studiopress.com"}, -{"id":770,"firstName":"Theo","lastName":"Scotland","street":"454 Hintze Park","postalCode":"45238","city":"Cincinnati","state":"OH"}, -{"id":771,"firstName":"Trefor","lastName":"Rein","street":"9 Redwing Plaza","postalCode":"22184","city":"Vienna","state":"VA","email":"treinle@barnesandnoble.com"}, -{"id":772,"firstName":"Angelina","lastName":"Bromehead","street":"62477 Walton Circle","postalCode":"14683","city":"Rochester","state":"NY","email":"abromeheadlf@php.net"}, -{"id":773,"firstName":"Thornie","lastName":"Ivanishin","street":"0 Sunbrook Court","postalCode":"34665","city":"Pinellas Park","state":"FL","email":"tivanishinlg@aol.com"}, -{"id":774,"firstName":"Dyana","lastName":"McNickle","street":"2696 Lakewood Gardens Pass","postalCode":"20456","city":"Washington","state":"DC","phoneNumber":"202-653-8740"}, -{"id":775,"firstName":"Humfried","lastName":"Suero","street":"643 Pearson Junction","postalCode":"28410","city":"Wilmington","state":"NC"}, -{"id":776,"firstName":"Jessamine","lastName":"Stockings","street":"739 Moose Street","postalCode":"94137","city":"San Francisco","state":"CA","phoneNumber":"415-641-0091","email":"jstockingslj@skype.com"}, -{"id":777,"firstName":"Laryssa","lastName":"Grahl","street":"0538 Bultman Point","postalCode":"81505","city":"Grand Junction","state":"CO"}, -{"id":778,"firstName":"Susan","lastName":"Stonnell","street":"7 Dennis Parkway","postalCode":"67215","city":"Wichita","state":"KS","phoneNumber":"316-966-3243","email":"sstonnellll@nps.gov"}, -{"id":779,"firstName":"Melinde","lastName":"Segoe","street":"9 Dottie Place","postalCode":"19125","city":"Philadelphia","state":"PA","phoneNumber":"215-119-3801"}, -{"id":780,"firstName":"Skip","lastName":"Sedgebeer","street":"1 Eliot Drive","postalCode":"20005","city":"Washington","state":"DC","email":"ssedgebeerln@blogtalkradio.com"}, -{"id":781,"firstName":"Annabel","lastName":"Schusterl","street":"6094 Talisman Lane","postalCode":"68510","city":"Lincoln","state":"NE","phoneNumber":"402-355-7934","email":"aschusterllo@cargocollective.com"}, -{"id":782,"firstName":"Emiline","lastName":"Whittlesey","street":"5 Claremont Lane","postalCode":"77040","city":"Houston","state":"TX","phoneNumber":"832-835-1321","email":"ewhittleseylp@geocities.com"}, -{"id":783,"firstName":"Frasquito","lastName":"Loukes","street":"47 Merchant Pass","postalCode":"27499","city":"Greensboro","state":"NC","phoneNumber":"336-265-5719","email":"floukeslq@google.it"}, -{"id":784,"firstName":"Jerald","lastName":"Fairholm","street":"5939 Mariners Cove Road","postalCode":"76598","city":"Gatesville","state":"TX","email":"jfairholmlr@smh.com.au"}, -{"id":785,"firstName":"Melisent","lastName":"Strange","street":"50 Glendale Trail","postalCode":"10606","city":"White Plains","state":"NY"}, -{"id":786,"firstName":"Aaron","lastName":"Mixter","street":"14347 Darwin Place","postalCode":"33124","city":"Miami","state":"FL","phoneNumber":"786-244-1856","email":"amixterlt@dmoz.org"}, -{"id":787,"firstName":"Margy","lastName":"Falla","street":"5 Caliangt Trail","postalCode":"40287","city":"Louisville","state":"KY","email":"mfallalu@booking.com"}, -{"id":788,"firstName":"Malinde","lastName":"Ashdown","street":"97234 Anniversary Hill","postalCode":"06152","city":"Hartford","state":"CT","phoneNumber":"860-140-7408","email":"mashdownlv@economist.com"}, -{"id":789,"firstName":"Carolynn","lastName":"Dulany","street":"33 Melby Road","postalCode":"74116","city":"Tulsa","state":"OK","phoneNumber":"918-140-7039","email":"cdulanylw@yelp.com"}, -{"id":790,"firstName":"Kissee","lastName":"Escale","street":"1470 Hanson Parkway","postalCode":"92812","city":"Anaheim","state":"CA","phoneNumber":"714-466-6376"}, -{"id":791,"firstName":"Rebeka","lastName":"Moralee","street":"898 Oak Street","postalCode":"34108","city":"Naples","state":"FL","email":"rmoraleely@shutterfly.com"}, -{"id":792,"firstName":"Cort","lastName":"Arter","street":"35039 Menomonie Way","postalCode":"50936","city":"Des Moines","state":"IA","email":"carterlz@surveymonkey.com"}, -{"id":793,"firstName":"Kirsteni","lastName":"Heady","street":"473 Lawn Street","postalCode":"32092","city":"Saint Augustine","state":"FL","phoneNumber":"904-424-3526","email":"kheadym0@usda.gov"}, -{"id":794,"firstName":"Ettie","lastName":"Overil","street":"1085 Waubesa Lane","postalCode":"18105","city":"Allentown","state":"PA"}, -{"id":795,"firstName":"Evey","lastName":"Tesimon","street":"9 Cordelia Place","postalCode":"55127","city":"Saint Paul","state":"MN"}, -{"id":796,"firstName":"Hersh","lastName":"Lebond","street":"5265 Bartelt Park","postalCode":"34282","city":"Bradenton","state":"FL","phoneNumber":"941-114-7090"}, -{"id":797,"firstName":"Hendrika","lastName":"Govan","street":"27747 La Follette Avenue","postalCode":"21229","city":"Baltimore","state":"MD","email":"hgovanm4@cam.ac.uk"}, -{"id":798,"firstName":"Renado","lastName":"Hambly","street":"5211 Schmedeman Drive","postalCode":"68105","city":"Omaha","state":"NE","phoneNumber":"402-183-0376","email":"rhamblym5@netlog.com"}, -{"id":799,"firstName":"Brewer","lastName":"Boyn","street":"3161 Novick Lane","postalCode":"77055","city":"Houston","state":"TX","email":"bboynm6@google.it"}, -{"id":800,"firstName":"Patrick","lastName":"Speck","street":"57052 Ronald Regan Way","postalCode":"30306","city":"Atlanta","state":"GA","phoneNumber":"770-764-6971","email":"pspeckm7@live.com"}, -{"id":801,"firstName":"Skipper","lastName":"Conybear","street":"75 Autumn Leaf Alley","postalCode":"79968","city":"El Paso","state":"TX","phoneNumber":"915-705-5594","email":"sconybearm8@jimdo.com"}, -{"id":802,"firstName":"Elmore","lastName":"Quilty","street":"027 Warbler Court","postalCode":"35210","city":"Birmingham","state":"AL","email":"equiltym9@ebay.co.uk"}, -{"id":803,"firstName":"Estella","lastName":"Jorck","street":"52695 Holy Cross Trail","postalCode":"47134","city":"Jeffersonville","state":"IN","email":"ejorckma@bluehost.com"}, -{"id":804,"firstName":"Scotti","lastName":"Goodale","street":"7551 Dottie Pass","postalCode":"77713","city":"Beaumont","state":"TX","email":"sgoodalemb@nba.com"}, -{"id":805,"firstName":"Catha","lastName":"Shekle","street":"38839 Derek Terrace","postalCode":"62718","city":"Springfield","state":"IL","email":"csheklemc@tmall.com"}, -{"id":806,"firstName":"Clemens","lastName":"Chuter","street":"015 Charing Cross Pass","postalCode":"30306","city":"Atlanta","state":"GA"}, -{"id":807,"firstName":"Kiley","lastName":"Vasiltsov","street":"8 Reindahl Hill","postalCode":"33432","city":"Boca Raton","state":"FL","email":"kvasiltsovme@google.nl"}, -{"id":808,"firstName":"Korrie","lastName":"McGauhy","street":"188 Golf Lane","postalCode":"89110","city":"Las Vegas","state":"NV","phoneNumber":"702-647-1620","email":"kmcgauhymf@goodreads.com"}, -{"id":809,"firstName":"Giustina","lastName":"Hentze","street":"62244 Roth Way","postalCode":"48604","city":"Saginaw","state":"MI","email":"ghentzemg@pcworld.com"}, -{"id":810,"firstName":"Emilia","lastName":"Virgoe","street":"13910 Alpine Lane","postalCode":"33994","city":"Fort Myers","state":"FL","phoneNumber":"239-993-2041","email":"evirgoemh@mediafire.com"}, -{"id":811,"firstName":"Gordan","lastName":"Trimming","street":"38168 Transport Avenue","postalCode":"38131","city":"Memphis","state":"TN","email":"gtrimmingmi@spiegel.de"}, -{"id":812,"firstName":"Tadeo","lastName":"Vannoort","street":"41476 Pond Alley","postalCode":"20851","city":"Rockville","state":"MD","phoneNumber":"240-432-6489","email":"tvannoortmj@privacy.gov.au"}, -{"id":813,"firstName":"Joseito","lastName":"Viant","street":"1390 Kropf Court","postalCode":"04109","city":"Portland","state":"ME"}, -{"id":814,"firstName":"Blake","lastName":"Tailby","street":"5 Bultman Terrace","postalCode":"31914","city":"Columbus","state":"GA"}, -{"id":815,"firstName":"Cynthie","lastName":"Victor","street":"64 Hoard Avenue","postalCode":"46221","city":"Indianapolis","state":"IN","phoneNumber":"317-836-2511","email":"cvictormm@bizjournals.com"}, -{"id":816,"firstName":"Kristoforo","lastName":"Luckman","street":"019 Ohio Avenue","postalCode":"58505","city":"Bismarck","state":"ND","phoneNumber":"701-921-3472"}, -{"id":817,"firstName":"Celinka","lastName":"Brakewell","street":"5702 Tennessee Pass","postalCode":"92612","city":"Irvine","state":"CA","phoneNumber":"714-584-5599","email":"cbrakewellmo@house.gov"}, -{"id":818,"firstName":"Analiese","lastName":"Debenham","street":"7 Straubel Pass","postalCode":"31704","city":"Albany","state":"GA","phoneNumber":"229-600-4384","email":"adebenhammp@dell.com"}, -{"id":819,"firstName":"Sebastiano","lastName":"Eskriett","street":"0 Northridge Pass","postalCode":"34114","city":"Naples","state":"FL","phoneNumber":"239-651-1326","email":"seskriettmq@berkeley.edu"}, -{"id":820,"firstName":"Jermaine","lastName":"Donisthorpe","street":"69319 Hollow Ridge Park","postalCode":"62794","city":"Springfield","state":"IL","phoneNumber":"217-510-3030","email":"jdonisthorpemr@istockphoto.com"}, -{"id":821,"firstName":"Tera","lastName":"Smalecombe","street":"646 Oakridge Avenue","postalCode":"43699","city":"Toledo","state":"OH","email":"tsmalecombems@tripod.com"}, -{"id":822,"firstName":"Issie","lastName":"Cohane","street":"79078 Fair Oaks Circle","postalCode":"40233","city":"Louisville","state":"KY","email":"icohanemt@wired.com"}, -{"id":823,"firstName":"Nanete","lastName":"Erb","street":"02 Truax Place","postalCode":"88563","city":"El Paso","state":"TX","phoneNumber":"915-234-2792"}, -{"id":824,"firstName":"Benetta","lastName":"Roger","street":"822 Fallview Alley","postalCode":"33625","city":"Tampa","state":"FL","phoneNumber":"813-715-8911","email":"brogermv@ca.gov"}, -{"id":825,"firstName":"Sascha","lastName":"Hillyatt","street":"06 Fisk Plaza","postalCode":"11407","city":"Jamaica","state":"NY"}, -{"id":826,"firstName":"Britt","lastName":"Gilderoy","street":"64312 Delaware Place","postalCode":"89135","city":"Las Vegas","state":"NV"}, -{"id":827,"firstName":"Sterne","lastName":"Frissell","street":"69121 Sycamore Way","postalCode":"06912","city":"Stamford","state":"CT"}, -{"id":828,"firstName":"Lonny","lastName":"Petersen","street":"6 Golf Course Crossing","postalCode":"32627","city":"Gainesville","state":"FL","phoneNumber":"352-245-3289","email":"lpetersenmz@msu.edu"}, -{"id":829,"firstName":"Maridel","lastName":"Clunie","street":"0312 Dryden Street","postalCode":"80328","city":"Boulder","state":"CO","phoneNumber":"303-848-1116","email":"mclunien0@china.com.cn"}, -{"id":830,"firstName":"Annabal","lastName":"Pruckner","street":"98481 Anhalt Pass","postalCode":"30340","city":"Atlanta","state":"GA","email":"aprucknern1@bandcamp.com"}, -{"id":831,"firstName":"Carin","lastName":"Ambrois","street":"7982 Vahlen Road","postalCode":"85010","city":"Phoenix","state":"AZ"}, -{"id":832,"firstName":"Consuela","lastName":"Grubey","street":"1 Lillian Circle","postalCode":"89714","city":"Carson City","state":"NV","email":"cgrubeyn3@google.pl"}, -{"id":833,"firstName":"Friedrick","lastName":"Ventom","street":"703 Almo Crossing","postalCode":"43215","city":"Columbus","state":"OH"}, -{"id":834,"firstName":"Shalom","lastName":"Rosten","street":"4460 Parkside Road","postalCode":"37215","city":"Nashville","state":"TN","email":"srostenn5@e-recht24.de"}, -{"id":835,"firstName":"Sofia","lastName":"Pottie","street":"89885 Golf Course Junction","postalCode":"27635","city":"Raleigh","state":"NC","email":"spottien6@weather.com"}, -{"id":836,"firstName":"Ed","lastName":"Cecely","street":"38576 Gina Trail","postalCode":"85305","city":"Glendale","state":"AZ","email":"ececelyn7@friendfeed.com"}, -{"id":837,"firstName":"Ruthann","lastName":"Bignold","street":"202 Monterey Alley","postalCode":"19104","city":"Philadelphia","state":"PA","phoneNumber":"610-892-3949"}, -{"id":838,"firstName":"Vonnie","lastName":"Leeming","street":"5 Farmco Center","postalCode":"18706","city":"Wilkes Barre","state":"PA"}, -{"id":839,"firstName":"Diandra","lastName":"Gredden","street":"68178 Parkside Hill","postalCode":"89120","city":"Las Vegas","state":"NV","phoneNumber":"702-952-4026"}, -{"id":840,"firstName":"Donny","lastName":"Bruckent","street":"6 Dapin Way","postalCode":"98127","city":"Seattle","state":"WA","email":"dbruckentnb@stumbleupon.com"}, -{"id":841,"firstName":"Mill","lastName":"Finlay","street":"9 Meadow Valley Terrace","postalCode":"94405","city":"San Mateo","state":"CA","email":"mfinlaync@hibu.com"}, -{"id":842,"firstName":"Garv","lastName":"Feldberger","street":"5916 Marquette Lane","postalCode":"98127","city":"Seattle","state":"WA"}, -{"id":843,"firstName":"Micheal","lastName":"Favela","street":"41587 Dunning Road","postalCode":"47712","city":"Evansville","state":"IN"}, -{"id":844,"firstName":"Shannon","lastName":"Alvaro","street":"86377 Becker Avenue","postalCode":"33315","city":"Fort Lauderdale","state":"FL","phoneNumber":"954-661-6648","email":"salvaronf@usa.gov"}, -{"id":845,"firstName":"Corenda","lastName":"Aldcorn","street":"19 Bowman Court","postalCode":"67220","city":"Wichita","state":"KS","phoneNumber":"316-835-1638","email":"caldcornng@ebay.com"}, -{"id":846,"firstName":"Alvy","lastName":"Mahood","street":"0814 Spohn Hill","postalCode":"50347","city":"Des Moines","state":"IA","phoneNumber":"515-865-3669","email":"amahoodnh@toplist.cz"}, -{"id":847,"firstName":"Alexandr","lastName":"Stut","street":"8672 Anderson Court","postalCode":"78410","city":"Corpus Christi","state":"TX"}, -{"id":848,"firstName":"Gale","lastName":"Chaperling","street":"78873 Bellgrove Alley","postalCode":"10009","city":"New York City","state":"NY","phoneNumber":"212-978-6798","email":"gchaperlingnj@livejournal.com"}, -{"id":849,"firstName":"Eunice","lastName":"Dadson","street":"340 Dwight Hill","postalCode":"52809","city":"Davenport","state":"IA","phoneNumber":"563-787-9869","email":"edadsonnk@businessinsider.com"}, -{"id":850,"firstName":"Florentia","lastName":"Camin","street":"68733 Orin Point","postalCode":"46867","city":"Fort Wayne","state":"IN","phoneNumber":"260-920-3928","email":"fcaminnl@technorati.com"}, -{"id":851,"firstName":"Norina","lastName":"Vannacci","street":"585 Karstens Circle","postalCode":"45233","city":"Cincinnati","state":"OH"}, -{"id":852,"firstName":"Syd","lastName":"Gianolo","street":"99755 Arrowood Hill","postalCode":"33673","city":"Tampa","state":"FL","phoneNumber":"813-878-8150","email":"sgianolonn@uol.com.br"}, -{"id":853,"firstName":"Timofei","lastName":"Serle","street":"1081 Cascade Park","postalCode":"94257","city":"Sacramento","state":"CA","email":"tserleno@behance.net"}, -{"id":854,"firstName":"Moina","lastName":"Ciobutaro","street":"502 Stone Corner Circle","postalCode":"33018","city":"Hialeah","state":"FL","email":"mciobutaronp@ycombinator.com"}, -{"id":855,"firstName":"Nikolaos","lastName":"Gavaghan","street":"47136 Golf Junction","postalCode":"97255","city":"Portland","state":"OR"}, -{"id":856,"firstName":"Gallard","lastName":"Jenks","street":"2 Carioca Terrace","postalCode":"35263","city":"Birmingham","state":"AL","email":"gjenksnr@blogtalkradio.com"}, -{"id":857,"firstName":"Dare","lastName":"Nielson","street":"3 Carberry Hill","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-211-0944"}, -{"id":858,"firstName":"Cecilius","lastName":"Fasse","street":"1 Novick Street","postalCode":"68583","city":"Lincoln","state":"NE","phoneNumber":"402-342-4624","email":"cfassent@zimbio.com"}, -{"id":859,"firstName":"Kevon","lastName":"Doxsey","street":"152 Warrior Pass","postalCode":"91616","city":"North Hollywood","state":"CA","phoneNumber":"213-339-9582"}, -{"id":860,"firstName":"Matti","lastName":"Gras","street":"4567 Bunting Way","postalCode":"94544","city":"Hayward","state":"CA"}, -{"id":861,"firstName":"Nathan","lastName":"Longfut","street":"3178 Mockingbird Alley","postalCode":"97255","city":"Portland","state":"OR","phoneNumber":"971-206-3004"}, -{"id":862,"firstName":"Willetta","lastName":"Fitzpayn","street":"87 Alpine Drive","postalCode":"48604","city":"Saginaw","state":"MI","phoneNumber":"989-698-7578","email":"wfitzpaynnx@geocities.jp"}, -{"id":863,"firstName":"Emanuel","lastName":"Jikylls","street":"42 Heffernan Court","postalCode":"33884","city":"Winter Haven","state":"FL","email":"ejikyllsny@biglobe.ne.jp"}, -{"id":864,"firstName":"Lenard","lastName":"Nore","street":"7 Nevada Avenue","postalCode":"77343","city":"Huntsville","state":"TX","phoneNumber":"936-267-6742","email":"lnorenz@netscape.com"}, -{"id":865,"firstName":"Jeanine","lastName":"MacTurlough","street":"26343 Gale Crossing","postalCode":"53779","city":"Madison","state":"WI","phoneNumber":"608-865-6630","email":"jmacturlougho0@scientificamerican.com"}, -{"id":866,"firstName":"Jaquenetta","lastName":"Dorn","street":"3963 Novick Way","postalCode":"19495","city":"Valley Forge","state":"PA","email":"jdorno1@about.com"}, -{"id":867,"firstName":"Amity","lastName":"Titterrell","street":"3216 Lindbergh Court","postalCode":"90071","city":"Los Angeles","state":"CA","phoneNumber":"626-416-1494","email":"atitterrello2@psu.edu"}, -{"id":868,"firstName":"Rafaelia","lastName":"Melly","street":"6 Westridge Center","postalCode":"61825","city":"Champaign","state":"IL","email":"rmellyo3@ovh.net"}, -{"id":869,"firstName":"Cordi","lastName":"Martinovsky","street":"38 Forest Dale Terrace","postalCode":"50362","city":"Des Moines","state":"IA","email":"cmartinovskyo4@tuttocitta.it"}, -{"id":870,"firstName":"Humfrid","lastName":"Varne","street":"858 Farwell Street","postalCode":"06127","city":"West Hartford","state":"CT","email":"hvarneo5@yolasite.com"}, -{"id":871,"firstName":"Ford","lastName":"Pinchback","street":"363 Lien Pass","postalCode":"20599","city":"Washington","state":"DC","email":"fpinchbacko6@nytimes.com"}, -{"id":872,"firstName":"Maible","lastName":"Haresign","street":"809 Monica Point","postalCode":"28230","city":"Charlotte","state":"NC"}, -{"id":873,"firstName":"Rozamond","lastName":"Challis","street":"312 Mcbride Plaza","postalCode":"77266","city":"Houston","state":"TX","email":"rchalliso8@google.ca"}, -{"id":874,"firstName":"Myrah","lastName":"Menendez","street":"21 Garrison Plaza","postalCode":"23208","city":"Richmond","state":"VA","email":"mmenendezo9@msn.com"}, -{"id":875,"firstName":"Roberto","lastName":"Lamb","street":"3339 Cottonwood Pass","postalCode":"43699","city":"Toledo","state":"OH","phoneNumber":"419-633-9671"}, -{"id":876,"firstName":"Foster","lastName":"Delyth","street":"91500 Carpenter Point","postalCode":"79928","city":"El Paso","state":"TX","phoneNumber":"915-782-9005"}, -{"id":877,"firstName":"Nicholle","lastName":"Pickring","street":"8083 Talmadge Lane","postalCode":"14624","city":"Rochester","state":"NY","email":"npickringoc@tuttocitta.it"}, -{"id":878,"firstName":"Theodosia","lastName":"Bayliss","street":"6 Marcy Parkway","postalCode":"33954","city":"Port Charlotte","state":"FL"}, -{"id":879,"firstName":"Araldo","lastName":"Dowzell","street":"8376 Carpenter Court","postalCode":"71151","city":"Shreveport","state":"LA","email":"adowzelloe@army.mil"}, -{"id":880,"firstName":"Hugues","lastName":"McColgan","street":"990 Southridge Point","postalCode":"93591","city":"Palmdale","state":"CA","phoneNumber":"661-978-2646","email":"hmccolganof@netvibes.com"}, -{"id":881,"firstName":"Annissa","lastName":"Mordue","street":"62114 Ludington Lane","postalCode":"30911","city":"Augusta","state":"GA","phoneNumber":"706-152-3967","email":"amordueog@tripod.com"}, -{"id":882,"firstName":"Tierney","lastName":"Claughton","street":"3 Twin Pines Trail","postalCode":"88563","city":"El Paso","state":"TX","phoneNumber":"915-784-7980"}, -{"id":883,"firstName":"Rey","lastName":"Fleckno","street":"49 Oakridge Point","postalCode":"27605","city":"Raleigh","state":"NC"}, -{"id":884,"firstName":"Stacee","lastName":"Rewcastle","street":"19 Glendale Point","postalCode":"78278","city":"San Antonio","state":"TX","phoneNumber":"210-454-3087","email":"srewcastleoj@ustream.tv"}, -{"id":885,"firstName":"Delano","lastName":"Bragger","street":"0 Hoffman Center","postalCode":"47725","city":"Evansville","state":"IN","email":"dbraggerok@ifeng.com"}, -{"id":886,"firstName":"Redford","lastName":"Bare","street":"801 Garrison Court","postalCode":"08638","city":"Trenton","state":"NJ"}, -{"id":887,"firstName":"Grantham","lastName":"Arlidge","street":"69 Shelley Parkway","postalCode":"34210","city":"Bradenton","state":"FL","email":"garlidgeom@google.nl"}, -{"id":888,"firstName":"Debbie","lastName":"Tommaseo","street":"295 Crowley Alley","postalCode":"98516","city":"Olympia","state":"WA","email":"dtommaseoon@xrea.com"}, -{"id":889,"firstName":"Ragnar","lastName":"O' Byrne","street":"88163 Manitowish Terrace","postalCode":"20260","city":"Washington","state":"DC","phoneNumber":"202-982-3050","email":"robyrneoo@ft.com"}, -{"id":890,"firstName":"Leopold","lastName":"Woodington","street":"44 Vera Pass","postalCode":"24009","city":"Roanoke","state":"VA","email":"lwoodingtonop@engadget.com"}, -{"id":891,"firstName":"Farrah","lastName":"Conniam","street":"2078 Bunting Parkway","postalCode":"68134","city":"Omaha","state":"NE","email":"fconniamoq@github.com"}, -{"id":892,"firstName":"Augustus","lastName":"Morrish","street":"430 Sauthoff Plaza","postalCode":"27710","city":"Durham","state":"NC","phoneNumber":"919-266-8155","email":"amorrishor@naver.com"}, -{"id":893,"firstName":"Cassaundra","lastName":"Deaves","street":"32 Clarendon Way","postalCode":"40266","city":"Louisville","state":"KY","phoneNumber":"502-138-7158"}, -{"id":894,"firstName":"Glynn","lastName":"Shewan","street":"989 Susan Avenue","postalCode":"95194","city":"San Jose","state":"CA","email":"gshewanot@reuters.com"}, -{"id":895,"firstName":"Neils","lastName":"Niesing","street":"488 Jana Road","postalCode":"48232","city":"Detroit","state":"MI","email":"nniesingou@cafepress.com"}, -{"id":896,"firstName":"Alix","lastName":"Cleeton","street":"8 Merrick Crossing","postalCode":"18018","city":"Bethlehem","state":"PA","email":"acleetonov@ask.com"}, -{"id":897,"firstName":"Kyrstin","lastName":"Alejandro","street":"45487 Carey Way","postalCode":"37919","city":"Knoxville","state":"TN","email":"kalejandroow@scribd.com"}, -{"id":898,"firstName":"Waylin","lastName":"De Caroli","street":"9237 Ludington Plaza","postalCode":"77554","city":"Galveston","state":"TX","email":"wdecaroliox@washingtonpost.com"}, -{"id":899,"firstName":"Lian","lastName":"Brade","street":"704 Lotheville Drive","postalCode":"24014","city":"Roanoke","state":"VA","phoneNumber":"540-712-7147"}, -{"id":900,"firstName":"Griz","lastName":"Elgie","street":"435 Northridge Point","postalCode":"93399","city":"Bakersfield","state":"CA","email":"gelgieoz@hao123.com"}, -{"id":901,"firstName":"Georgeanna","lastName":"Gilberthorpe","street":"6 Tomscot Park","postalCode":"37931","city":"Knoxville","state":"TN","phoneNumber":"865-664-6191","email":"ggilberthorpep0@typepad.com"}, -{"id":902,"firstName":"Korrie","lastName":"Goldstraw","street":"00 Lindbergh Plaza","postalCode":"14225","city":"Buffalo","state":"NY","email":"kgoldstrawp1@yellowbook.com"}, -{"id":903,"firstName":"Hervey","lastName":"Wyse","street":"27 Buell Road","postalCode":"75044","city":"Garland","state":"TX","phoneNumber":"972-243-9031","email":"hwysep2@deliciousdays.com"}, -{"id":904,"firstName":"Georgeta","lastName":"Buckam","street":"0 Continental Hill","postalCode":"65810","city":"Springfield","state":"MO","phoneNumber":"417-682-2553","email":"gbuckamp3@java.com"}, -{"id":905,"firstName":"Hussein","lastName":"Jacson","street":"478 Vermont Court","postalCode":"95354","city":"Modesto","state":"CA","phoneNumber":"209-714-7362","email":"hjacsonp4@squarespace.com"}, -{"id":906,"firstName":"Chrysler","lastName":"Heddy","street":"913 Steensland Parkway","postalCode":"20709","city":"Laurel","state":"MD","phoneNumber":"410-691-9748"}, -{"id":907,"firstName":"Jourdan","lastName":"Frise","street":"35 Erie Point","postalCode":"94245","city":"Sacramento","state":"CA","email":"jfrisep6@eepurl.com"}, -{"id":908,"firstName":"Roxie","lastName":"Gimber","street":"9237 Vermont Pass","postalCode":"88553","city":"El Paso","state":"TX","email":"rgimberp7@mayoclinic.com"}, -{"id":909,"firstName":"Jenilee","lastName":"MacNab","street":"23 Union Alley","postalCode":"29579","city":"Myrtle Beach","state":"SC","email":"jmacnabp8@mit.edu"}, -{"id":910,"firstName":"Lola","lastName":"Bier","street":"371 Bartillon Avenue","postalCode":"71105","city":"Shreveport","state":"LA","phoneNumber":"318-818-1659","email":"lbierp9@goo.gl"}, -{"id":911,"firstName":"Fayina","lastName":"Brosel","street":"3255 Macpherson Pass","postalCode":"55166","city":"Saint Paul","state":"MN","email":"fbroselpa@rakuten.co.jp"}, -{"id":912,"firstName":"Ellerey","lastName":"Darell","street":"735 Leroy Road","postalCode":"07544","city":"Paterson","state":"NJ"}, -{"id":913,"firstName":"Lorianne","lastName":"McLanachan","street":"22 Alpine Point","postalCode":"77293","city":"Houston","state":"TX","email":"lmclanachanpc@dmoz.org"}, -{"id":914,"firstName":"Merrill","lastName":"Searson","street":"8447 Namekagon Hill","postalCode":"55114","city":"Saint Paul","state":"MN","phoneNumber":"651-567-8380","email":"msearsonpd@census.gov"}, -{"id":915,"firstName":"Nisse","lastName":"Larive","street":"976 Forest Dale Way","postalCode":"10004","city":"New York City","state":"NY","phoneNumber":"347-192-6897","email":"nlarivepe@drupal.org"}, -{"id":916,"firstName":"Cazzie","lastName":"Brenard","street":"647 Gulseth Plaza","postalCode":"02283","city":"Boston","state":"MA","phoneNumber":"781-248-3572","email":"cbrenardpf@uiuc.edu"}, -{"id":917,"firstName":"Gael","lastName":"Ramirez","street":"161 Basil Terrace","postalCode":"93786","city":"Fresno","state":"CA","phoneNumber":"559-692-2653","email":"gramirezpg@ucoz.ru"}, -{"id":918,"firstName":"Culver","lastName":"Le Brun","street":"73906 Muir Terrace","postalCode":"95973","city":"Chico","state":"CA","email":"clebrunph@jigsy.com"}, -{"id":919,"firstName":"Bordie","lastName":"Muskett","street":"27 Nobel Trail","postalCode":"20599","city":"Washington","state":"DC","phoneNumber":"202-872-5253"}, -{"id":920,"firstName":"Riccardo","lastName":"Miskin","street":"778 Eagan Place","postalCode":"55407","city":"Minneapolis","state":"MN","email":"rmiskinpj@slideshare.net"}, -{"id":921,"firstName":"Cristabel","lastName":"Gowlett","street":"5 Quincy Lane","postalCode":"62525","city":"Decatur","state":"IL","email":"cgowlettpk@cafepress.com"}, -{"id":922,"firstName":"Crawford","lastName":"Huby","street":"6 Gina Lane","postalCode":"94913","city":"San Rafael","state":"CA","phoneNumber":"415-133-8552","email":"chubypl@jugem.jp"}, -{"id":923,"firstName":"Cherish","lastName":"Mutch","street":"8 Oak Valley Lane","postalCode":"20719","city":"Bowie","state":"MD","phoneNumber":"240-982-9087"}, -{"id":924,"firstName":"Jerrie","lastName":"Latek","street":"9462 Moulton Terrace","postalCode":"52809","city":"Davenport","state":"IA","phoneNumber":"563-687-6664","email":"jlatekpn@gov.uk"}, -{"id":925,"firstName":"Lacey","lastName":"Maris","street":"1 Carpenter Hill","postalCode":"61605","city":"Peoria","state":"IL","phoneNumber":"309-570-3216"}, -{"id":926,"firstName":"Daffy","lastName":"Binion","street":"8 Milwaukee Parkway","postalCode":"33129","city":"Miami","state":"FL","phoneNumber":"305-579-9009"}, -{"id":927,"firstName":"Melita","lastName":"Valde","street":"629 Packers Crossing","postalCode":"06140","city":"Hartford","state":"CT","phoneNumber":"860-747-5927","email":"mvaldepq@storify.com"}, -{"id":928,"firstName":"Cherlyn","lastName":"Rosenshine","street":"764 Pepper Wood Place","postalCode":"72204","city":"Little Rock","state":"AR","phoneNumber":"501-823-8134"}, -{"id":929,"firstName":"Morty","lastName":"Stanger","street":"3286 Charing Cross Court","postalCode":"08603","city":"Trenton","state":"NJ","email":"mstangerps@yellowpages.com"}, -{"id":930,"firstName":"Bernete","lastName":"Hirth","street":"83 Granby Center","postalCode":"95194","city":"San Jose","state":"CA","phoneNumber":"408-738-2333","email":"bhirthpt@people.com.cn"}, -{"id":931,"firstName":"Elena","lastName":"Wace","street":"98 Grover Trail","postalCode":"33742","city":"Saint Petersburg","state":"FL","phoneNumber":"727-883-2239","email":"ewacepu@merriam-webster.com"}, -{"id":932,"firstName":"Giselbert","lastName":"Sisland","street":"2214 Sheridan Pass","postalCode":"40225","city":"Louisville","state":"KY"}, -{"id":933,"firstName":"Herb","lastName":"Voyce","street":"628 Basil Pass","postalCode":"21265","city":"Baltimore","state":"MD"}, -{"id":934,"firstName":"Vina","lastName":"Antonetti","street":"6 Springview Terrace","postalCode":"20430","city":"Washington","state":"DC","phoneNumber":"202-955-4578"}, -{"id":935,"firstName":"Bard","lastName":"De Avenell","street":"2775 Clarendon Avenue","postalCode":"53215","city":"Milwaukee","state":"WI"}, -{"id":936,"firstName":"Briana","lastName":"Pinshon","street":"43 Del Sol Street","postalCode":"33615","city":"Tampa","state":"FL","email":"bpinshonpz@java.com"}, -{"id":937,"firstName":"Hilly","lastName":"Aysh","street":"37 Doe Crossing Terrace","postalCode":"23705","city":"Portsmouth","state":"VA","phoneNumber":"757-992-8124"}, -{"id":938,"firstName":"Marylin","lastName":"Ciotto","street":"3957 Browning Pass","postalCode":"94807","city":"Richmond","state":"CA"}, -{"id":939,"firstName":"Cam","lastName":"Kurth","street":"155 Walton Point","postalCode":"92867","city":"Orange","state":"CA","phoneNumber":"949-955-2248"}, -{"id":940,"firstName":"Rawley","lastName":"Bickle","street":"54 Macpherson Point","postalCode":"93762","city":"Fresno","state":"CA","phoneNumber":"559-331-2187","email":"rbickleq3@delicious.com"}, -{"id":941,"firstName":"Merlina","lastName":"Dunster","street":"70557 Toban Trail","postalCode":"20005","city":"Washington","state":"DC","phoneNumber":"202-999-8731"}, -{"id":942,"firstName":"Kennie","lastName":"MacCoughan","street":"04566 Browning Parkway","postalCode":"75507","city":"Texarkana","state":"TX","phoneNumber":"903-622-7509","email":"kmaccoughanq5@reuters.com"}, -{"id":943,"firstName":"Jase","lastName":"Cholomin","street":"21497 Blaine Road","postalCode":"33777","city":"Largo","state":"FL","email":"jcholominq6@cocolog-nifty.com"}, -{"id":944,"firstName":"Cirstoforo","lastName":"Billingsley","street":"1306 Summer Ridge Court","postalCode":"02124","city":"Boston","state":"MA","email":"cbillingsleyq7@google.es"}, -{"id":945,"firstName":"Berkly","lastName":"Lawles","street":"80400 Milwaukee Way","postalCode":"64082","city":"Lees Summit","state":"MO","email":"blawlesq8@jiathis.com"}, -{"id":946,"firstName":"Otha","lastName":"Key","street":"59639 Center Circle","postalCode":"35405","city":"Tuscaloosa","state":"AL","email":"okeyq9@deliciousdays.com"}, -{"id":947,"firstName":"Anselma","lastName":"Debow","street":"5 Spohn Parkway","postalCode":"80241","city":"Denver","state":"CO","email":"adebowqa@yelp.com"}, -{"id":948,"firstName":"Auria","lastName":"Beric","street":"5 Anderson Way","postalCode":"20022","city":"Washington","state":"DC","email":"abericqb@a8.net"}, -{"id":949,"firstName":"Eirena","lastName":"Caswall","street":"4648 Fulton Street","postalCode":"64054","city":"Independence","state":"MO","phoneNumber":"816-406-0779","email":"ecaswallqc@i2i.jp"}, -{"id":950,"firstName":"Tracy","lastName":"Sperwell","street":"4 Heath Drive","postalCode":"91499","city":"Van Nuys","state":"CA"}, -{"id":951,"firstName":"Cherilyn","lastName":"Faint","street":"814 Anniversary Lane","postalCode":"24503","city":"Lynchburg","state":"VA","phoneNumber":"434-722-2344","email":"cfaintqe@amazon.de"}, -{"id":952,"firstName":"Sela","lastName":"Darcey","street":"002 Walton Hill","postalCode":"78703","city":"Austin","state":"TX","email":"sdarceyqf@lycos.com"}, -{"id":953,"firstName":"Freddie","lastName":"Klagge","street":"842 Schlimgen Road","postalCode":"29905","city":"Beaufort","state":"SC","email":"fklaggeqg@1und1.de"}, -{"id":954,"firstName":"Eunice","lastName":"Walrond","street":"4 Mifflin Terrace","postalCode":"68117","city":"Omaha","state":"NE","email":"ewalrondqh@arstechnica.com"}, -{"id":955,"firstName":"Adelbert","lastName":"Meuse","street":"971 Doe Crossing Court","postalCode":"27157","city":"Winston Salem","state":"NC"}, -{"id":956,"firstName":"Caitlin","lastName":"Windham","street":"29 Cordelia Alley","postalCode":"76210","city":"Denton","state":"TX","phoneNumber":"214-498-2801","email":"cwindhamqj@trellian.com"}, -{"id":957,"firstName":"Jere","lastName":"Presho","street":"7 Monica Plaza","postalCode":"75710","city":"Tyler","state":"TX","email":"jpreshoqk@e-recht24.de"}, -{"id":958,"firstName":"Lonny","lastName":"Cotter","street":"5686 Rutledge Place","postalCode":"40596","city":"Lexington","state":"KY","email":"lcotterql@last.fm"}, -{"id":959,"firstName":"Sarah","lastName":"Earnshaw","street":"69 Prentice Point","postalCode":"60669","city":"Chicago","state":"IL","email":"searnshawqm@ycombinator.com"}, -{"id":960,"firstName":"Claire","lastName":"Minette","street":"3145 Butterfield Terrace","postalCode":"43204","city":"Columbus","state":"OH","phoneNumber":"614-157-5341","email":"cminetteqn@upenn.edu"}, -{"id":961,"firstName":"Traci","lastName":"Farnes","street":"2 Service Circle","postalCode":"06905","city":"Stamford","state":"CT","phoneNumber":"203-311-5859","email":"tfarnesqo@merriam-webster.com"}, -{"id":962,"firstName":"Storm","lastName":"de Werk","street":"9 Jenifer Alley","postalCode":"98121","city":"Seattle","state":"WA","phoneNumber":"425-172-3688"}, -{"id":963,"firstName":"Neile","lastName":"Mackrill","street":"5046 Schurz Point","postalCode":"28299","city":"Charlotte","state":"NC"}, -{"id":964,"firstName":"Temple","lastName":"Howlings","street":"8831 Randy Street","postalCode":"71161","city":"Shreveport","state":"LA","phoneNumber":"318-859-6319","email":"thowlingsqr@smugmug.com"}, -{"id":965,"firstName":"Roda","lastName":"Drissell","street":"16621 Mandrake Lane","postalCode":"78744","city":"Austin","state":"TX","email":"rdrissellqs@mayoclinic.com"}, -{"id":966,"firstName":"Francoise","lastName":"Lawman","street":"7 Calypso Point","postalCode":"14614","city":"Rochester","state":"NY","phoneNumber":"585-995-3882"}, -{"id":967,"firstName":"Helen","lastName":"Kigelman","street":"613 Manley Plaza","postalCode":"01905","city":"Lynn","state":"MA","email":"hkigelmanqu@shutterfly.com"}, -{"id":968,"firstName":"Dudley","lastName":"Cansdall","street":"153 Schmedeman Place","postalCode":"93715","city":"Fresno","state":"CA","email":"dcansdallqv@naver.com"}, -{"id":969,"firstName":"Shelby","lastName":"Fayers","street":"94681 Knutson Point","postalCode":"10039","city":"New York City","state":"NY"}, -{"id":970,"firstName":"Sileas","lastName":"Jalland","street":"2199 Buhler Circle","postalCode":"10029","city":"New York City","state":"NY","phoneNumber":"917-902-1667","email":"sjallandqx@rakuten.co.jp"}, -{"id":971,"firstName":"Zeke","lastName":"Duffett","street":"5 Coolidge Park","postalCode":"37995","city":"Knoxville","state":"TN","phoneNumber":"865-814-8540","email":"zduffettqy@wikispaces.com"}, -{"id":972,"firstName":"Tabby","lastName":"Mathieu","street":"78 Donald Circle","postalCode":"55114","city":"Saint Paul","state":"MN","email":"tmathieuqz@rediff.com"}, -{"id":973,"firstName":"Zsa zsa","lastName":"Knights","street":"208 Kingsford Park","postalCode":"15250","city":"Pittsburgh","state":"PA","phoneNumber":"412-652-8956","email":"zknightsr0@privacy.gov.au"}, -{"id":974,"firstName":"Tildi","lastName":"Knewstub","street":"8572 Gina Hill","postalCode":"32909","city":"Palm Bay","state":"FL","email":"tknewstubr1@archive.org"}, -{"id":975,"firstName":"Eric","lastName":"Wharrier","street":"9 Marcy Alley","postalCode":"38126","city":"Memphis","state":"TN","phoneNumber":"901-378-1545","email":"ewharrierr2@people.com.cn"}, -{"id":976,"firstName":"Jilleen","lastName":"Durgan","street":"7 Lien Plaza","postalCode":"75241","city":"Dallas","state":"TX","email":"jdurganr3@google.pl"}, -{"id":977,"firstName":"Ingeberg","lastName":"Whipp","street":"489 Bartillon Street","postalCode":"22205","city":"Arlington","state":"VA","phoneNumber":"703-356-7728","email":"iwhippr4@un.org"}, -{"id":978,"firstName":"Drake","lastName":"McCreagh","street":"735 Mcguire Lane","postalCode":"20530","city":"Washington","state":"DC","email":"dmccreaghr5@mediafire.com"}, -{"id":979,"firstName":"Byron","lastName":"Eades","street":"931 Hollow Ridge Avenue","postalCode":"23285","city":"Richmond","state":"VA","phoneNumber":"804-728-5669","email":"beadesr6@npr.org"}, -{"id":980,"firstName":"Free","lastName":"Tungate","street":"7037 Ramsey Crossing","postalCode":"64153","city":"Kansas City","state":"MO","email":"ftungater7@macromedia.com"}, -{"id":981,"firstName":"Augustus","lastName":"Benardet","street":"398 Bultman Circle","postalCode":"70165","city":"New Orleans","state":"LA"}, -{"id":982,"firstName":"Sanders","lastName":"Sullens","street":"75785 Westend Terrace","postalCode":"43656","city":"Toledo","state":"OH","phoneNumber":"419-314-1134"}, -{"id":983,"firstName":"Ynes","lastName":"Troup","street":"328 Schurz Trail","postalCode":"98907","city":"Yakima","state":"WA","phoneNumber":"509-696-5645"}, -{"id":984,"firstName":"Siana","lastName":"Bernath","street":"968 Sommers Lane","postalCode":"55487","city":"Minneapolis","state":"MN","phoneNumber":"612-351-3016"}, -{"id":985,"firstName":"Ellary","lastName":"Enders","street":"2 Charing Cross Court","postalCode":"06505","city":"New Haven","state":"CT","phoneNumber":"203-608-5058"}, -{"id":986,"firstName":"Mariann","lastName":"Damerell","street":"885 Pennsylvania Crossing","postalCode":"15220","city":"Pittsburgh","state":"PA","phoneNumber":"412-667-1349","email":"mdamerellrd@moonfruit.com"}, -{"id":987,"firstName":"Timotheus","lastName":"Muncer","street":"293 Hoepker Center","postalCode":"32405","city":"Panama City","state":"FL","phoneNumber":"850-740-2501","email":"tmuncerre@ifeng.com"}, -{"id":988,"firstName":"Hermina","lastName":"Tetsall","street":"9354 Nobel Road","postalCode":"55585","city":"Monticello","state":"MN","phoneNumber":"763-292-3970","email":"htetsallrf@wsj.com"}, -{"id":989,"firstName":"Dorelia","lastName":"Howship","street":"747 Namekagon Way","postalCode":"14269","city":"Buffalo","state":"NY","phoneNumber":"716-470-3584","email":"dhowshiprg@un.org"}, -{"id":990,"firstName":"Peggy","lastName":"Coutts","street":"34 Village Green Road","postalCode":"19131","city":"Philadelphia","state":"PA"}, -{"id":991,"firstName":"Dacey","lastName":"Inglefield","street":"05227 Buell Avenue","postalCode":"45414","city":"Dayton","state":"OH"}, -{"id":992,"firstName":"Hollyanne","lastName":"Hobbema","street":"684 La Follette Drive","postalCode":"45218","city":"Cincinnati","state":"OH","phoneNumber":"513-346-0258"}, -{"id":993,"firstName":"Freedman","lastName":"Whorlow","street":"291 Maywood Pass","postalCode":"48098","city":"Troy","state":"MI","phoneNumber":"248-890-5937"}, -{"id":994,"firstName":"Karine","lastName":"Gerring","street":"163 Graceland Street","postalCode":"95397","city":"Modesto","state":"CA"}, -{"id":995,"firstName":"Sonya","lastName":"Giercke","street":"1801 Rowland Junction","postalCode":"66215","city":"Shawnee Mission","state":"KS","email":"sgierckerm@mapquest.com"}, -{"id":996,"firstName":"Fabiano","lastName":"O'Hear","street":"87555 Sunnyside Plaza","postalCode":"33330","city":"Fort Lauderdale","state":"FL","email":"fohearrn@china.com.cn"}, -{"id":997,"firstName":"Lelia","lastName":"Gillman","street":"29838 Eagan Junction","postalCode":"78783","city":"Austin","state":"TX","phoneNumber":"512-515-1461","email":"lgillmanro@amazon.co.jp"}, -{"id":998,"firstName":"Ophelie","lastName":"Richardet","street":"9 Bay Point","postalCode":"94042","city":"Mountain View","state":"CA"}, -{"id":999,"firstName":"Batholomew","lastName":"Janzen","street":"9 Rigney Alley","postalCode":"95113","city":"San Jose","state":"CA"}, -{"id":1000,"firstName":"Kirstyn","lastName":"Bixley","street":"2 Cascade Trail","postalCode":"80015","city":"Aurora","state":"CO","phoneNumber":"303-339-2309","email":"kbixleyrr@i2i.jp"}] \ No newline at end of file From 6947342212b484dcf530ae39ce9a358d7adc8ed6 Mon Sep 17 00:00:00 2001 From: Karsten Silz Date: Mon, 21 Sep 2020 20:44:47 +0100 Subject: [PATCH 108/260] Undoing another change. --- json/pom.xml | 5 ----- 1 file changed, 5 deletions(-) diff --git a/json/pom.xml b/json/pom.xml index 99fcfed362..bd901b526e 100644 --- a/json/pom.xml +++ b/json/pom.xml @@ -45,11 +45,6 @@ jackson-databind ${jackson.version} - - com.fasterxml.jackson.core - jackson-annotations - ${jackson.version} - javax.json.bind javax.json.bind-api From 9be17d36d21eb55f67e84521245f90a3896a1f16 Mon Sep 17 00:00:00 2001 From: Krzysztof Woyke Date: Tue, 22 Sep 2020 14:57:32 +0200 Subject: [PATCH 109/260] JAVA-2976: Get rid of the overriden spring-boot.version property --- .../spring-boot-property-exp/property-exp-custom-config/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml b/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml index e38a2742d5..f0df50cf76 100644 --- a/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml +++ b/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml @@ -78,7 +78,6 @@ - 2.2.6.RELEASE Custom Property Value 2.7 1.6.0 From 5590f2389673c7be59ceaf197ce2bc2966483291 Mon Sep 17 00:00:00 2001 From: fdpro Date: Tue, 22 Sep 2020 21:49:49 +0200 Subject: [PATCH 110/260] [JAVA-2587] Added spring-boot dependency for freemarker --- spring-mvc-basics-2/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-mvc-basics-2/pom.xml b/spring-mvc-basics-2/pom.xml index 6bcb1e90e5..c4688ffad6 100644 --- a/spring-mvc-basics-2/pom.xml +++ b/spring-mvc-basics-2/pom.xml @@ -84,6 +84,11 @@ spring-context-support ${spring.version} + + org.springframework.boot + spring-boot-starter-freemarker + ${spring-boot.version} + @@ -173,6 +178,7 @@ 5.1.0 20180130 1.6.1 + 2.3.4.RELEASE From 9f51e1c6e55bc55dbe69acf20179cc63fd7d0ddc Mon Sep 17 00:00:00 2001 From: Bruno Fontana Date: Tue, 22 Sep 2020 18:21:24 -0300 Subject: [PATCH 111/260] Assume Class examples redone. --- .../ConditionallyIgnoreTestsUnitTest.java | 64 ++++++++++++------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java b/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java index 0aa184f2e1..b3fd5e3b2c 100644 --- a/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java +++ b/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java @@ -5,37 +5,55 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assume.assumeFalse; import static org.junit.Assume.assumeThat; import static org.junit.Assume.assumeTrue; +import static org.junit.Assume.assumeNotNull; +import static org.junit.Assume.assumeNoException; + import org.junit.Test; public class ConditionallyIgnoreTestsUnitTest { + @Test public void whenAssumeThatAndOSIsLinux_thenRunTest() { + assumeThat(getOsName(), is("Linux")); + assertEquals("run", "RUN".toLowerCase()); + } - @Test - public void whenAssumeThatCodeVersionIsNot2_thenIgnore() { - final int codeVersion = 1; - assumeThat(codeVersion, is(2)); + @Test public void whenAssumeTrueAndOSIsLinux_thenRunTest() { + final int codeVersion = 1; + assumeTrue(isExpectedOS(getOsName())); + assertEquals("run", "RUN".toLowerCase()); + } - assertEquals("hello", "HELLO".toLowerCase()); + @Test public void whenAssumeFalseAndOSIsLinux_thenIgnore() { + assumeFalse(isExpectedOS(getOsName())); + assertEquals("run", "RUN".toLowerCase()); + } + + @Test public void whenAssumeNotNullAndNotNullOSVersion_thenIgnore() { + assumeNotNull(getOsName()); + assertEquals("run", "RUN".toLowerCase()); + } + + /** + * Let's use a different example here. + */ + @Test public void whenAssumeNoExceptionAndExceptionThrown_thenIgnore() { + assertEquals("everything ok", "EVERYTHING OK".toLowerCase()); + String t = null; + try { + t.charAt(0); + } catch (NullPointerException npe) { + assumeNoException(npe); } + assertEquals("run", "RUN".toLowerCase()); + } - @Test - public void whenAssumeTrueOnCondition_thenIgnore() { - final int codeVersion = 1; - assumeTrue(isCodeVersion2(codeVersion)); + private boolean isExpectedOS(final String osName) { + return "Linux".equals(osName); + } - assertEquals("hello", "HELLO".toLowerCase()); - } - - @Test - public void whenAssumeFalseOnCondition_thenIgnore() { - final int codeVersion = 2; - assumeFalse(isCodeVersion2(codeVersion)); - - assertEquals("hello", "HELLO".toLowerCase()); - } - - private boolean isCodeVersion2(final int codeVersion) { - return codeVersion == 2; - } + // This should use System.getProperty("os.name") in a real test. + private String getOsName() { + return "Linux"; + } } From 8b0b645e6fd48b5e6288f924625178ff0c9e5986 Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Tue, 22 Sep 2020 00:41:23 +0200 Subject: [PATCH 112/260] [BAEL-4612] get spring boot port at runtime --- .../serverport/GetServerPortApplication.java | 12 ++++ .../serverport/ServerPortService.java | 20 +++++++ .../GetServerFixedPortUnitTest.java | 37 +++++++++++++ .../GetServerRandomPortUnitTest.java | 55 +++++++++++++++++++ .../application-fixedport.properties | 1 + .../application-randomport.properties | 1 + 6 files changed, 126 insertions(+) create mode 100644 spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/GetServerPortApplication.java create mode 100644 spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/ServerPortService.java create mode 100644 spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerFixedPortUnitTest.java create mode 100644 spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerRandomPortUnitTest.java create mode 100644 spring-boot-modules/spring-boot-environment/src/test/resources/application-fixedport.properties create mode 100644 spring-boot-modules/spring-boot-environment/src/test/resources/application-randomport.properties diff --git a/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/GetServerPortApplication.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/GetServerPortApplication.java new file mode 100644 index 0000000000..d7658ad8d5 --- /dev/null +++ b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/GetServerPortApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.serverport; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GetServerPortApplication { + public static void main(String[] args) { + SpringApplication.run(GetServerPortApplication.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/ServerPortService.java b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/ServerPortService.java new file mode 100644 index 0000000000..59c0a0f333 --- /dev/null +++ b/spring-boot-modules/spring-boot-environment/src/main/java/com/baeldung/serverport/ServerPortService.java @@ -0,0 +1,20 @@ +package com.baeldung.serverport; + +import org.springframework.boot.web.servlet.context.ServletWebServerInitializedEvent; +import org.springframework.context.event.EventListener; +import org.springframework.stereotype.Service; + +@Service +public class ServerPortService { + private int port; + + public int getPort() { + return port; + } + + @EventListener + public void onApplicationEvent(final ServletWebServerInitializedEvent event) { + port = event.getWebServer().getPort(); + } + +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerFixedPortUnitTest.java b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerFixedPortUnitTest.java new file mode 100644 index 0000000000..81e663b7a1 --- /dev/null +++ b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerFixedPortUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.serverport; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = GetServerPortApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +@ActiveProfiles("fixedport") +public class GetServerFixedPortUnitTest { + private final static int EXPECTED_PORT = 7777; + + @Value("${server.port}") + private int serverPort; + + @Autowired + private ServerProperties serverProperties; + + @Test + public void givenFixedPortAsServerPort_whenReadServerPort_thenGetThePort() { + assertEquals("Reading fixed port by @Value(\"${server.port}\") will get the port.", EXPECTED_PORT, serverPort); + } + + @Test + public void givenFixedPortAsServerPort_whenReadServerProps_thenGetThePort() { + int port = serverProperties.getPort(); + assertEquals("Reading fixed port from serverProperties will get the port.", EXPECTED_PORT, port); + } + +} diff --git a/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerRandomPortUnitTest.java b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerRandomPortUnitTest.java new file mode 100644 index 0000000000..3ad7e0fdf1 --- /dev/null +++ b/spring-boot-modules/spring-boot-environment/src/test/java/com/baeldung/serverport/GetServerRandomPortUnitTest.java @@ -0,0 +1,55 @@ +package com.baeldung.serverport; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.web.ServerProperties; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = GetServerPortApplication.class, webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT) +@ActiveProfiles("randomport") +public class GetServerRandomPortUnitTest { + + @Value("${server.port}") + private int randomServerPort; + + @Autowired + private ServerPortService serverPortService; + + @Autowired + private ServerProperties serverProperties; + + @Autowired + private ServletWebServerApplicationContext webServerAppCtxt; + + @Test + public void given0AsServerPort_whenReadServerPort_thenGet0() { + assertEquals("Reading random port by @Value(\"${server.port}\") will get 0.", 0, randomServerPort); + } + + @Test + public void given0AsServerPort_whenReadServerProps_thenGet0() { + int port = serverProperties.getPort(); + assertEquals("Reading random port by serverProperties will get 0.", 0, port); + } + + @Test + public void given0AsServerPort_whenReadWebAppCtxt_thenGetThePort() { + int port = webServerAppCtxt.getWebServer().getPort(); + assertTrue("The random port should be greater than 1023", port > 1023); + } + + @Test + public void given0AsServerPort_whenReadFromListener_thenGetThePort() { + int port = serverPortService.getPort(); + assertTrue("The random port should be greater than 1023", port > 1023); + } +} diff --git a/spring-boot-modules/spring-boot-environment/src/test/resources/application-fixedport.properties b/spring-boot-modules/spring-boot-environment/src/test/resources/application-fixedport.properties new file mode 100644 index 0000000000..0c5e84f3a2 --- /dev/null +++ b/spring-boot-modules/spring-boot-environment/src/test/resources/application-fixedport.properties @@ -0,0 +1 @@ +server.port=7777 diff --git a/spring-boot-modules/spring-boot-environment/src/test/resources/application-randomport.properties b/spring-boot-modules/spring-boot-environment/src/test/resources/application-randomport.properties new file mode 100644 index 0000000000..cbe617ef03 --- /dev/null +++ b/spring-boot-modules/spring-boot-environment/src/test/resources/application-randomport.properties @@ -0,0 +1 @@ +server.port=0 From 9a8f92de763b47f08928c69d11b7aab5e4e85b05 Mon Sep 17 00:00:00 2001 From: Bruno Fontana Date: Tue, 22 Sep 2020 20:54:25 -0300 Subject: [PATCH 113/260] Fixing formatting issues. --- .../ConditionallyIgnoreTestsUnitTest.java | 86 ++++++++++--------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java b/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java index b3fd5e3b2c..9f927310b3 100644 --- a/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java +++ b/testing-modules/junit-4/src/test/java/com/baeldung/assume/ConditionallyIgnoreTestsUnitTest.java @@ -13,47 +13,51 @@ import org.junit.Test; public class ConditionallyIgnoreTestsUnitTest { - @Test public void whenAssumeThatAndOSIsLinux_thenRunTest() { - assumeThat(getOsName(), is("Linux")); - assertEquals("run", "RUN".toLowerCase()); - } - - @Test public void whenAssumeTrueAndOSIsLinux_thenRunTest() { - final int codeVersion = 1; - assumeTrue(isExpectedOS(getOsName())); - assertEquals("run", "RUN".toLowerCase()); - } - - @Test public void whenAssumeFalseAndOSIsLinux_thenIgnore() { - assumeFalse(isExpectedOS(getOsName())); - assertEquals("run", "RUN".toLowerCase()); - } - - @Test public void whenAssumeNotNullAndNotNullOSVersion_thenIgnore() { - assumeNotNull(getOsName()); - assertEquals("run", "RUN".toLowerCase()); - } - - /** - * Let's use a different example here. - */ - @Test public void whenAssumeNoExceptionAndExceptionThrown_thenIgnore() { - assertEquals("everything ok", "EVERYTHING OK".toLowerCase()); - String t = null; - try { - t.charAt(0); - } catch (NullPointerException npe) { - assumeNoException(npe); + @Test + public void whenAssumeThatAndOSIsLinux_thenRunTest() { + assumeThat(getOsName(), is("Linux")); + assertEquals("run", "RUN".toLowerCase()); } - assertEquals("run", "RUN".toLowerCase()); - } - private boolean isExpectedOS(final String osName) { - return "Linux".equals(osName); - } + @Test + public void whenAssumeTrueAndOSIsLinux_thenRunTest() { + assumeTrue(isExpectedOS(getOsName())); + assertEquals("run", "RUN".toLowerCase()); + } - // This should use System.getProperty("os.name") in a real test. - private String getOsName() { - return "Linux"; - } -} + @Test + public void whenAssumeFalseAndOSIsLinux_thenIgnore() { + assumeFalse(isExpectedOS(getOsName())); + assertEquals("run", "RUN".toLowerCase()); + } + + @Test + public void whenAssumeNotNullAndNotNullOSVersion_thenRun() { + assumeNotNull(getOsName()); + assertEquals("run", "RUN".toLowerCase()); + } + + /** + * Let's use a different example here. + */ + @Test + public void whenAssumeNoExceptionAndExceptionThrown_thenIgnore() { + assertEquals("everything ok", "EVERYTHING OK".toLowerCase()); + String t = null; + try { + t.charAt(0); + } catch (NullPointerException npe) { + assumeNoException(npe); + } + assertEquals("run", "RUN".toLowerCase()); + } + + private boolean isExpectedOS(final String osName) { + return "Linux".equals(osName); + } + + // This should use System.getProperty("os.name") in a real test. + private String getOsName() { + return "Linux"; + } +} \ No newline at end of file From 465a878d02e5f2b4140ffd6bce02beb76aa01e73 Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Wed, 23 Sep 2020 17:34:42 +0300 Subject: [PATCH 114/260] BAEL-4415 correct package name --- .../baeldung/trustedcert}/CertificatesUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java-modules/core-java-security-2/src/test/java/{certificates => com/baeldung/trustedcert}/CertificatesUnitTest.java (99%) diff --git a/core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java similarity index 99% rename from core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java rename to core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java index a631df086b..d99589a2ec 100644 --- a/core-java-modules/core-java-security-2/src/test/java/certificates/CertificatesUnitTest.java +++ b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java @@ -1,4 +1,4 @@ -package certificates; +package com.baeldung.trustedcert; import org.junit.jupiter.api.Test; From 478e6ccff6b60de96d4cabbaaa042d1ca45496ea Mon Sep 17 00:00:00 2001 From: Cristian Rosu Date: Wed, 23 Sep 2020 17:36:48 +0300 Subject: [PATCH 115/260] BAEL-4415 correct line continuations indent to 2 spaces --- .../baeldung/trustedcert/CertificatesUnitTest.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java index d99589a2ec..4f40c3c195 100644 --- a/core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java +++ b/core-java-modules/core-java-security-2/src/test/java/com/baeldung/trustedcert/CertificatesUnitTest.java @@ -39,8 +39,8 @@ public class CertificatesUnitTest { Set trustAnchors = params.getTrustAnchors(); List certificates = trustAnchors.stream() - .map(TrustAnchor::getTrustedCert) - .collect(Collectors.toList()); + .map(TrustAnchor::getTrustedCert) + .collect(Collectors.toList()); assertFalse(certificates.isEmpty()); } @@ -52,11 +52,11 @@ public class CertificatesUnitTest { List trustManagers = Arrays.asList(trustManagerFactory.getTrustManagers()); List certificates = trustManagers.stream() - .filter(X509TrustManager.class::isInstance) - .map(X509TrustManager.class::cast) - .map(trustManager -> Arrays.asList(trustManager.getAcceptedIssuers())) - .flatMap(Collection::stream) - .collect(Collectors.toList()); + .filter(X509TrustManager.class::isInstance) + .map(X509TrustManager.class::cast) + .map(trustManager -> Arrays.asList(trustManager.getAcceptedIssuers())) + .flatMap(Collection::stream) + .collect(Collectors.toList()); assertFalse(certificates.isEmpty()); } From 20a3070093b70bdc6b80c6cf1a8716537b366df8 Mon Sep 17 00:00:00 2001 From: Cristian Stancalau Date: Wed, 23 Sep 2020 19:23:50 +0300 Subject: [PATCH 116/260] BAEL-4156 Does a method's signature in Java include its return type? (#10049) * BAEL-4156 Does a method's signature in Java include its return type? * BAEL-4156 Add varargs * Update OverloadingErrors.java Co-authored-by: Cristian Stancalau --- .../baeldung/signature/OverloadingErrors.java | 72 +++++++++++++++++++ .../com/baeldung/signature/StaticBinding.java | 46 ++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/OverloadingErrors.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/StaticBinding.java diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/OverloadingErrors.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/OverloadingErrors.java new file mode 100644 index 0000000000..4c9d11d925 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/OverloadingErrors.java @@ -0,0 +1,72 @@ +package com.baeldung.signature; + +import java.io.Serializable; + +public class OverloadingErrors { + + public void print() { + System.out.println("Signature is: print()"); + } + + /* + // Uncommenting this method will lead to a compilation error: java: method print() is already defined in class + // The method signature is independent from return type + public int print() { + System.out.println("Signature is: print()"); + return 0; + } + */ + + /* + // Uncommenting this method will lead to a compilation error: java: method print() is already defined in class + // The method signature is independent from modifiers + private final void print() { + System.out.println("Signature is: print()"); + } + */ + + /* + // Uncommenting this method will lead to a compilation error: java: method print() is already defined in class + // The method signature is independent from thrown exception declaration + public void print() throws IllegalStateException { + System.out.println("Signature is: print()"); + throw new IllegalStateException(); + } + */ + + public void print(int parameter) { + System.out.println("Signature is: print(int)"); + } + + /* + // Uncommenting this method will lead to a compilation error: java: method print(int) is already defined in class + // The method signature is independent from parameter names + public void print(int anotherParameter) { + System.out.println("Signature is: print(int)"); + } + */ + + public void printElement(T t) { + System.out.println("Signature is: printElement(T)"); + } + + /* + // Uncommenting this method will lead to a compilation error: java: name clash: printElement(java.io.Serializable) and printElement(T) have the same erasure + // Even though the signatures appear different, the compiler cannot statically bind the correct method after type erasure + public void printElement(Serializable o) { + System.out.println("Signature is: printElement(Serializable)"); + } + */ + + public void print(Object... parameter) { + System.out.println("Signature is: print(Object...)"); + } + + /* + // Uncommenting this method will lead to a compilation error: java cannot declare both sum(Object...) and sum(Object[]) + // Even though the signatures appear different, after compilation they both resolve to sum(Object[]) + public void print(Object[] parameter) { + System.out.println("Signature is: print(Object[])"); + } + */ +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/StaticBinding.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/StaticBinding.java new file mode 100644 index 0000000000..01016812f0 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/signature/StaticBinding.java @@ -0,0 +1,46 @@ +package com.baeldung.signature; + +public class StaticBinding { + + public Number sum(Integer term1, Integer term2) { + System.out.println("Adding integers"); + return term1 + term2; + } + + public Number sum(Number term1, Number term2) { + System.out.println("Adding numbers"); + return term1.doubleValue() + term2.doubleValue(); + } + + public Number sum(Object term1, Object term2) { + System.out.println("Adding objects"); + return term1.hashCode() + term2.hashCode(); + } + + public Number sum(Object term1, Object... term2) { + System.out.println("Adding variable arguments: " + term2.length); + int result = term1.hashCode(); + for (Object o : term2) { + result += o.hashCode(); + } + return result; + } + + public static void main(String[] args) { + StaticBinding obj = new StaticBinding(); + + obj.sum(2, 3); // "Adding integers" due to auto-boxing from int to Integer + obj.sum(Integer.valueOf(2), Integer.valueOf(3)); // "Adding integers" due to exact parameter types + obj.sum(2, 0x1); // "Adding integers" due to type promotion from byte to int + + obj.sum((Number) 2, (Number) 3); // "Adding numbers" due to explicit cast to Number + obj.sum(2.0d, 3.0d); // "Adding numbers" due to auto-boxing from double to Double + obj.sum(Float.valueOf(2), Float.valueOf(3)); // "Adding numbers" due to polimorphism + + obj.sum((Object) 2, (Object) 3); // "Adding objects" due to explicit cast to Object + obj.sum(2, "John"); // "Adding objects" due to polimorphism + + obj.sum(new Object(), new Object(), new Object()); // "Adding variable arguments 2" + obj.sum(new Object(), new Object[]{new Object()}); // "Adding variable arguments 1" + } +} From a2751ea0d5ab98c72f0df508286948b5f6253e9c Mon Sep 17 00:00:00 2001 From: fdpro Date: Wed, 23 Sep 2020 19:31:59 +0200 Subject: [PATCH 117/260] [JAVA-2590] Added example of @JdbcTest usage --- .../template/testing/EmployeeApplication.java | 7 ++++++ .../jdbc/template/testing/EmployeeDAO.java | 4 ++++ .../testing/EmployeeDAOIntegrationTest.java | 24 +++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeApplication.java create mode 100644 persistence-modules/spring-jdbc/src/test/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAOIntegrationTest.java diff --git a/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeApplication.java b/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeApplication.java new file mode 100644 index 0000000000..a2917be105 --- /dev/null +++ b/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeApplication.java @@ -0,0 +1,7 @@ +package com.baeldung.spring.jdbc.template.testing; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class EmployeeApplication { +} diff --git a/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAO.java b/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAO.java index 64b146fd47..15da78ce35 100644 --- a/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAO.java +++ b/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAO.java @@ -13,6 +13,10 @@ public class EmployeeDAO { jdbcTemplate = new JdbcTemplate(dataSource); } + public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + public int getCountOfEmployees() { return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM EMPLOYEE", Integer.class); } diff --git a/persistence-modules/spring-jdbc/src/test/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAOIntegrationTest.java b/persistence-modules/spring-jdbc/src/test/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAOIntegrationTest.java new file mode 100644 index 0000000000..9634c3e0d7 --- /dev/null +++ b/persistence-modules/spring-jdbc/src/test/java/com/baeldung/spring/jdbc/template/testing/EmployeeDAOIntegrationTest.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.jdbc.template.testing; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.jdbc.JdbcTest; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.jdbc.Sql; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@JdbcTest +@Sql({"schema.sql", "test-data.sql"}) +class EmployeeDAOIntegrationTest { + @Autowired + private JdbcTemplate jdbcTemplate; + + @Test + void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() { + EmployeeDAO employeeDAO = new EmployeeDAO(); + employeeDAO.setJdbcTemplate(jdbcTemplate); + + assertEquals(4, employeeDAO.getCountOfEmployees()); + } +} From 49590633a82ff00541438c0d86f633426973ebae Mon Sep 17 00:00:00 2001 From: Sampada <46674082+sampada07@users.noreply.github.com> Date: Wed, 23 Sep 2020 23:34:51 +0530 Subject: [PATCH 118/260] JAVA-2421: Merge spring-ehcache module into spring-caching module (#10072) * JAVA-2421: Moved 1 article from spring-ehcache to spring-caching * JAVA-2421: Removed module spring-ehcache * JAVA-2421: Removed module spring-ehcache from main pom --- pom.xml | 2 - spring-caching/README.md | 1 + spring-caching/pom.xml | 4 + .../com/baeldung/cachetest/Application.java | 0 .../cachetest/config/CacheConfig.java | 0 .../cachetest/config/CacheEventLogger.java | 0 .../cachetest/rest/NumberController.java | 0 .../cachetest/service/NumberService.java | 0 .../springdatacaching/model/Book.java | 4 +- .../src/main/resources/application.properties | 5 +- .../src/main/resources/ehcache.xml | 23 +++++ spring-ehcache/.gitignore | 13 --- spring-ehcache/README.md | 8 -- spring-ehcache/checkstyle.xml | 11 --- spring-ehcache/pom.xml | 87 ------------------- .../src/main/resources/application.properties | 1 - 16 files changed, 35 insertions(+), 124 deletions(-) rename {spring-ehcache => spring-caching}/src/main/java/com/baeldung/cachetest/Application.java (100%) rename {spring-ehcache => spring-caching}/src/main/java/com/baeldung/cachetest/config/CacheConfig.java (100%) rename {spring-ehcache => spring-caching}/src/main/java/com/baeldung/cachetest/config/CacheEventLogger.java (100%) rename {spring-ehcache => spring-caching}/src/main/java/com/baeldung/cachetest/rest/NumberController.java (100%) rename {spring-ehcache => spring-caching}/src/main/java/com/baeldung/cachetest/service/NumberService.java (100%) rename {spring-ehcache => spring-caching}/src/main/resources/ehcache.xml (58%) delete mode 100644 spring-ehcache/.gitignore delete mode 100644 spring-ehcache/README.md delete mode 100644 spring-ehcache/checkstyle.xml delete mode 100644 spring-ehcache/pom.xml delete mode 100644 spring-ehcache/src/main/resources/application.properties diff --git a/pom.xml b/pom.xml index 9fd8f65a61..6553716d63 100644 --- a/pom.xml +++ b/pom.xml @@ -651,7 +651,6 @@ spring-dispatcher-servlet spring-drools - spring-ehcache spring-ejb spring-exceptions @@ -1152,7 +1151,6 @@ spring-dispatcher-servlet spring-drools - spring-ehcache spring-ejb spring-exceptions diff --git a/spring-caching/README.md b/spring-caching/README.md index 705d998b1e..e10d6080e8 100644 --- a/spring-caching/README.md +++ b/spring-caching/README.md @@ -5,3 +5,4 @@ - [Cache Eviction in Spring Boot](https://www.baeldung.com/spring-boot-evict-cache) - [Using Multiple Cache Managers in Spring](https://www.baeldung.com/spring-multiple-cache-managers) - [Testing @Cacheable on Spring Data Repositories](https://www.baeldung.com/spring-data-testing-cacheable) +- [Spring Boot Ehcache Example](https://www.baeldung.com/spring-boot-ehcache) diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml index b13755dafd..f58be35a76 100644 --- a/spring-caching/pom.xml +++ b/spring-caching/pom.xml @@ -36,6 +36,10 @@ org.springframework spring-webmvc + + javax.cache + cache-api + org.ehcache ehcache diff --git a/spring-ehcache/src/main/java/com/baeldung/cachetest/Application.java b/spring-caching/src/main/java/com/baeldung/cachetest/Application.java similarity index 100% rename from spring-ehcache/src/main/java/com/baeldung/cachetest/Application.java rename to spring-caching/src/main/java/com/baeldung/cachetest/Application.java diff --git a/spring-ehcache/src/main/java/com/baeldung/cachetest/config/CacheConfig.java b/spring-caching/src/main/java/com/baeldung/cachetest/config/CacheConfig.java similarity index 100% rename from spring-ehcache/src/main/java/com/baeldung/cachetest/config/CacheConfig.java rename to spring-caching/src/main/java/com/baeldung/cachetest/config/CacheConfig.java diff --git a/spring-ehcache/src/main/java/com/baeldung/cachetest/config/CacheEventLogger.java b/spring-caching/src/main/java/com/baeldung/cachetest/config/CacheEventLogger.java similarity index 100% rename from spring-ehcache/src/main/java/com/baeldung/cachetest/config/CacheEventLogger.java rename to spring-caching/src/main/java/com/baeldung/cachetest/config/CacheEventLogger.java diff --git a/spring-ehcache/src/main/java/com/baeldung/cachetest/rest/NumberController.java b/spring-caching/src/main/java/com/baeldung/cachetest/rest/NumberController.java similarity index 100% rename from spring-ehcache/src/main/java/com/baeldung/cachetest/rest/NumberController.java rename to spring-caching/src/main/java/com/baeldung/cachetest/rest/NumberController.java diff --git a/spring-ehcache/src/main/java/com/baeldung/cachetest/service/NumberService.java b/spring-caching/src/main/java/com/baeldung/cachetest/service/NumberService.java similarity index 100% rename from spring-ehcache/src/main/java/com/baeldung/cachetest/service/NumberService.java rename to spring-caching/src/main/java/com/baeldung/cachetest/service/NumberService.java diff --git a/spring-caching/src/main/java/com/baeldung/springdatacaching/model/Book.java b/spring-caching/src/main/java/com/baeldung/springdatacaching/model/Book.java index 7de567f0db..02285e3894 100644 --- a/spring-caching/src/main/java/com/baeldung/springdatacaching/model/Book.java +++ b/spring-caching/src/main/java/com/baeldung/springdatacaching/model/Book.java @@ -6,13 +6,15 @@ import lombok.NoArgsConstructor; import javax.persistence.Entity; import javax.persistence.Id; + +import java.io.Serializable; import java.util.UUID; @Data @Entity @NoArgsConstructor @AllArgsConstructor -public class Book { +public class Book implements Serializable { @Id private UUID id; diff --git a/spring-caching/src/main/resources/application.properties b/spring-caching/src/main/resources/application.properties index ee7b5e62c0..1039f85a42 100644 --- a/spring-caching/src/main/resources/application.properties +++ b/spring-caching/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= @@ -6,3 +6,6 @@ spring.datasource.password= # Enabling H2 Console spring.h2.console.enabled=true spring.h2.console.path=/h2 + +#ehcache +spring.cache.jcache.config=classpath:ehcache.xml diff --git a/spring-ehcache/src/main/resources/ehcache.xml b/spring-caching/src/main/resources/ehcache.xml similarity index 58% rename from spring-ehcache/src/main/resources/ehcache.xml rename to spring-caching/src/main/resources/ehcache.xml index caba0f2cc4..4b24394170 100644 --- a/spring-ehcache/src/main/resources/ehcache.xml +++ b/spring-caching/src/main/resources/ehcache.xml @@ -27,5 +27,28 @@ 10 + + + java.lang.String + com.baeldung.springdatacaching.model.Book + + 30 + + + + + com.baeldung.cachetest.config.CacheEventLogger + ASYNCHRONOUS + UNORDERED + CREATED + EXPIRED + + + + + 2 + 10 + + \ No newline at end of file diff --git a/spring-ehcache/.gitignore b/spring-ehcache/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/spring-ehcache/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/spring-ehcache/README.md b/spring-ehcache/README.md deleted file mode 100644 index da7376e476..0000000000 --- a/spring-ehcache/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## Spring Ehcache - -This module contains articles about Spring with Ehcache - -### Relevant Articles: - -- [Spring Boot Ehcache Example](https://www.baeldung.com/spring-boot-ehcache) - diff --git a/spring-ehcache/checkstyle.xml b/spring-ehcache/checkstyle.xml deleted file mode 100644 index 85063a7570..0000000000 --- a/spring-ehcache/checkstyle.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/spring-ehcache/pom.xml b/spring-ehcache/pom.xml deleted file mode 100644 index bf78e1392c..0000000000 --- a/spring-ehcache/pom.xml +++ /dev/null @@ -1,87 +0,0 @@ - - - 4.0.0 - spring-ehcache - 0.1-SNAPSHOT - spring-ehcache - jar - - - com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../parent-boot-2 - - - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework.boot - spring-boot-starter-cache - - - javax.cache - cache-api - - - org.ehcache - ehcache - - - - - spring-ehcache - - - src/main/resources - true - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-checkstyle-plugin - ${checkstyle-maven-plugin.version} - - checkstyle.xml - - - - - check - - - - - - - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - ${checkstyle-maven-plugin.version} - - checkstyle.xml - - - - - - - - 3.0.0 - false - - - diff --git a/spring-ehcache/src/main/resources/application.properties b/spring-ehcache/src/main/resources/application.properties deleted file mode 100644 index a5c2964d32..0000000000 --- a/spring-ehcache/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.cache.jcache.config=classpath:ehcache.xml \ No newline at end of file From 68287516fef69d735e1204792a446c1227454aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dupire?= Date: Wed, 23 Sep 2020 20:10:21 +0200 Subject: [PATCH 119/260] [JAVA-1669] Upgrading JUnit and Maven Surefire Plugin versions (#10018) * [JAVA-1669] Upgrading JUnit and Maven Surefire Plugin versions * Upgraded JUnit version for persistence-module and the modules that directly depends on it * Upgraded Maven Surefire Plugin version for these as well * Either made modules inheriting from persistence-modules instead of parent-modules or added relative paths when already inheriting persistence-modules * Upgraded versions in other modules * [JAVA-1669] Removed explicit relativePath in pom.xml when default value used * [JAVA-1669] Minor fix --- persistence-modules/apache-bookkeeper/pom.xml | 3 +-- persistence-modules/deltaspike/pom.xml | 7 ------- persistence-modules/flyway-repair/pom.xml | 5 +++++ persistence-modules/flyway/pom.xml | 5 +++++ persistence-modules/jpa-hibernate-cascade-type/pom.xml | 1 + persistence-modules/pom.xml | 5 +++++ persistence-modules/r2dbc/pom.xml | 5 +++++ persistence-modules/redis/pom.xml | 5 +++++ persistence-modules/spring-boot-mysql/pom.xml | 5 +++++ persistence-modules/spring-boot-persistence-2/pom.xml | 8 +++++++- persistence-modules/spring-boot-persistence-h2/pom.xml | 5 +++++ .../spring-boot-persistence-mongodb/pom.xml | 6 ++++++ persistence-modules/spring-boot-persistence/pom.xml | 5 +++++ .../spring-data-cassandra-reactive/pom.xml | 5 +++++ persistence-modules/spring-data-cassandra/pom.xml | 5 +++++ persistence-modules/spring-data-cosmosdb/pom.xml | 5 +++++ persistence-modules/spring-data-dynamodb/pom.xml | 5 +++++ persistence-modules/spring-data-elasticsearch/pom.xml | 5 +++++ persistence-modules/spring-data-jdbc/pom.xml | 7 +++++++ persistence-modules/spring-data-jpa-annotations/pom.xml | 5 +++++ persistence-modules/spring-data-jpa-crud/pom.xml | 5 +++++ persistence-modules/spring-data-jpa-enterprise/pom.xml | 5 +++++ persistence-modules/spring-data-jpa-filtering/pom.xml | 5 +++++ persistence-modules/spring-data-jpa-query-2/pom.xml | 6 ++++++ persistence-modules/spring-data-jpa-query/pom.xml | 5 +++++ persistence-modules/spring-data-jpa-repo-2/pom.xml | 5 +++++ persistence-modules/spring-data-jpa-repo/pom.xml | 6 ++++++ persistence-modules/spring-data-keyvalue/pom.xml | 6 ++++++ persistence-modules/spring-data-mongodb/pom.xml | 5 +++++ persistence-modules/spring-data-redis/pom.xml | 5 +++++ persistence-modules/spring-data-solr/pom.xml | 5 +++++ persistence-modules/spring-hibernate4/pom.xml | 5 +++++ persistence-modules/spring-jdbc/pom.xml | 5 +++++ 33 files changed, 160 insertions(+), 10 deletions(-) diff --git a/persistence-modules/apache-bookkeeper/pom.xml b/persistence-modules/apache-bookkeeper/pom.xml index 0beea7f1fc..32467b9997 100644 --- a/persistence-modules/apache-bookkeeper/pom.xml +++ b/persistence-modules/apache-bookkeeper/pom.xml @@ -11,9 +11,8 @@ com.baeldung - parent-modules + persistence-modules 1.0.0-SNAPSHOT - ../../ diff --git a/persistence-modules/deltaspike/pom.xml b/persistence-modules/deltaspike/pom.xml index 871bacd18b..955ad4abe8 100644 --- a/persistence-modules/deltaspike/pom.xml +++ b/persistence-modules/deltaspike/pom.xml @@ -188,13 +188,6 @@ provided - - - junit - junit - test - - org.apache.commons diff --git a/persistence-modules/flyway-repair/pom.xml b/persistence-modules/flyway-repair/pom.xml index 5a5c4103f6..82e5d705f9 100644 --- a/persistence-modules/flyway-repair/pom.xml +++ b/persistence-modules/flyway-repair/pom.xml @@ -75,6 +75,11 @@ src/main/resources/application-${spring-boot.run.profiles}.properties + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/flyway/pom.xml b/persistence-modules/flyway/pom.xml index f2e393abbf..2379f996d7 100644 --- a/persistence-modules/flyway/pom.xml +++ b/persistence-modules/flyway/pom.xml @@ -65,6 +65,11 @@ 5.2.3 5.0.2 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/jpa-hibernate-cascade-type/pom.xml b/persistence-modules/jpa-hibernate-cascade-type/pom.xml index 1fc119592c..e8117290b0 100644 --- a/persistence-modules/jpa-hibernate-cascade-type/pom.xml +++ b/persistence-modules/jpa-hibernate-cascade-type/pom.xml @@ -4,6 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 jpa-hibernate-cascade-type + com.baeldung persistence-modules diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 4e46c9204b..def2deb941 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -92,5 +92,10 @@ 5.2.17.Final + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/r2dbc/pom.xml b/persistence-modules/r2dbc/pom.xml index 119d0547e3..7083eea64d 100644 --- a/persistence-modules/r2dbc/pom.xml +++ b/persistence-modules/r2dbc/pom.xml @@ -68,6 +68,11 @@ 0.8.1.RELEASE 1.4.200 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/redis/pom.xml b/persistence-modules/redis/pom.xml index e4c5eb4002..9e00566767 100644 --- a/persistence-modules/redis/pom.xml +++ b/persistence-modules/redis/pom.xml @@ -61,6 +61,11 @@ 3.13.1 3.3.0 4.1.50.Final + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-boot-mysql/pom.xml b/persistence-modules/spring-boot-mysql/pom.xml index 9f6ec73522..9b8c6d0028 100644 --- a/persistence-modules/spring-boot-mysql/pom.xml +++ b/persistence-modules/spring-boot-mysql/pom.xml @@ -39,6 +39,11 @@ 8.0.12 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-boot-persistence-2/pom.xml b/persistence-modules/spring-boot-persistence-2/pom.xml index e90d61fda3..ca6ec93340 100644 --- a/persistence-modules/spring-boot-persistence-2/pom.xml +++ b/persistence-modules/spring-boot-persistence-2/pom.xml @@ -17,6 +17,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.boot spring-boot-dependencies @@ -36,7 +43,6 @@ jdbi3-sqlobject ${jdbi.version} - diff --git a/persistence-modules/spring-boot-persistence-h2/pom.xml b/persistence-modules/spring-boot-persistence-h2/pom.xml index 9e6c780931..23520a3fda 100644 --- a/persistence-modules/spring-boot-persistence-h2/pom.xml +++ b/persistence-modules/spring-boot-persistence-h2/pom.xml @@ -46,6 +46,11 @@ com.baeldung.h2db.demo.server.SpringBootApp 1.0.4 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-boot-persistence-mongodb/pom.xml b/persistence-modules/spring-boot-persistence-mongodb/pom.xml index de52a4b2d6..69ef09356d 100644 --- a/persistence-modules/spring-boot-persistence-mongodb/pom.xml +++ b/persistence-modules/spring-boot-persistence-mongodb/pom.xml @@ -36,4 +36,10 @@ + + + 2.22.2 + 5.6.2 + 4.13 + \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence/pom.xml b/persistence-modules/spring-boot-persistence/pom.xml index 9e44a7b9c1..b034f6dad9 100644 --- a/persistence-modules/spring-boot-persistence/pom.xml +++ b/persistence-modules/spring-boot-persistence/pom.xml @@ -76,6 +76,11 @@ 2.23.0 2.0.1.Final + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-cassandra-reactive/pom.xml b/persistence-modules/spring-data-cassandra-reactive/pom.xml index 16486bf380..42329e03f0 100644 --- a/persistence-modules/spring-data-cassandra-reactive/pom.xml +++ b/persistence-modules/spring-data-cassandra-reactive/pom.xml @@ -53,6 +53,11 @@ 2.2.6.RELEASE 3.11.2.0 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-cassandra/pom.xml b/persistence-modules/spring-data-cassandra/pom.xml index b44324dc46..a56d067a05 100644 --- a/persistence-modules/spring-data-cassandra/pom.xml +++ b/persistence-modules/spring-data-cassandra/pom.xml @@ -104,6 +104,11 @@ 2.1.9.2 2.1.9.2 2.0-0 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml index 75cc830578..0f9e8ac72f 100644 --- a/persistence-modules/spring-data-cosmosdb/pom.xml +++ b/persistence-modules/spring-data-cosmosdb/pom.xml @@ -16,6 +16,11 @@ 1.8 2.3.0 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-dynamodb/pom.xml b/persistence-modules/spring-data-dynamodb/pom.xml index 377e35b635..0f4b578088 100644 --- a/persistence-modules/spring-data-dynamodb/pom.xml +++ b/persistence-modules/spring-data-dynamodb/pom.xml @@ -182,6 +182,11 @@ 1.11.86 https://s3-us-west-2.amazonaws.com/dynamodb-local/release 3.1.1 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-elasticsearch/pom.xml b/persistence-modules/spring-data-elasticsearch/pom.xml index 6a983145ee..c94962d39d 100644 --- a/persistence-modules/spring-data-elasticsearch/pom.xml +++ b/persistence-modules/spring-data-elasticsearch/pom.xml @@ -69,5 +69,10 @@ 1.2.47 0.7 1.15.0 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jdbc/pom.xml b/persistence-modules/spring-data-jdbc/pom.xml index ff034104d7..eca8037e20 100644 --- a/persistence-modules/spring-data-jdbc/pom.xml +++ b/persistence-modules/spring-data-jdbc/pom.xml @@ -26,4 +26,11 @@ runtime + + + + 2.22.2 + 5.6.2 + 4.13 + diff --git a/persistence-modules/spring-data-jpa-annotations/pom.xml b/persistence-modules/spring-data-jpa-annotations/pom.xml index 67b788c404..ea2fe34f3c 100644 --- a/persistence-modules/spring-data-jpa-annotations/pom.xml +++ b/persistence-modules/spring-data-jpa-annotations/pom.xml @@ -72,6 +72,11 @@ 1.10.6 42.2.5 21.0 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-crud/pom.xml b/persistence-modules/spring-data-jpa-crud/pom.xml index 1708d14fc2..44944298e0 100644 --- a/persistence-modules/spring-data-jpa-crud/pom.xml +++ b/persistence-modules/spring-data-jpa-crud/pom.xml @@ -66,6 +66,11 @@ 1.4.1 21.0 1.12.2 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-jpa-enterprise/pom.xml b/persistence-modules/spring-data-jpa-enterprise/pom.xml index 093059ad78..6d9fc41df6 100644 --- a/persistence-modules/spring-data-jpa-enterprise/pom.xml +++ b/persistence-modules/spring-data-jpa-enterprise/pom.xml @@ -102,6 +102,11 @@ 1.3.1.Final 21.0 1.12.2 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-jpa-filtering/pom.xml b/persistence-modules/spring-data-jpa-filtering/pom.xml index 2039ef1a37..7448a5a818 100644 --- a/persistence-modules/spring-data-jpa-filtering/pom.xml +++ b/persistence-modules/spring-data-jpa-filtering/pom.xml @@ -72,6 +72,11 @@ 1.10.6 42.2.5 21.0 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/pom.xml b/persistence-modules/spring-data-jpa-query-2/pom.xml index 22cd373c95..231640284e 100644 --- a/persistence-modules/spring-data-jpa-query-2/pom.xml +++ b/persistence-modules/spring-data-jpa-query-2/pom.xml @@ -30,4 +30,10 @@ + + + 2.22.2 + 5.6.2 + 4.13 + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query/pom.xml b/persistence-modules/spring-data-jpa-query/pom.xml index 71498143c3..fe42d4b595 100644 --- a/persistence-modules/spring-data-jpa-query/pom.xml +++ b/persistence-modules/spring-data-jpa-query/pom.xml @@ -43,6 +43,11 @@ 1.4.1 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo-2/pom.xml b/persistence-modules/spring-data-jpa-repo-2/pom.xml index 855b441074..98ecdc6645 100644 --- a/persistence-modules/spring-data-jpa-repo-2/pom.xml +++ b/persistence-modules/spring-data-jpa-repo-2/pom.xml @@ -43,5 +43,10 @@ 29.0-jre + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo/pom.xml b/persistence-modules/spring-data-jpa-repo/pom.xml index 984bc1bdff..07514e9771 100644 --- a/persistence-modules/spring-data-jpa-repo/pom.xml +++ b/persistence-modules/spring-data-jpa-repo/pom.xml @@ -49,4 +49,10 @@ + + + 2.22.2 + 5.6.2 + 4.13 + \ No newline at end of file diff --git a/persistence-modules/spring-data-keyvalue/pom.xml b/persistence-modules/spring-data-keyvalue/pom.xml index b28773c414..190d6c7445 100644 --- a/persistence-modules/spring-data-keyvalue/pom.xml +++ b/persistence-modules/spring-data-keyvalue/pom.xml @@ -28,4 +28,10 @@ + + + 2.22.2 + 5.6.2 + 4.13 + \ No newline at end of file diff --git a/persistence-modules/spring-data-mongodb/pom.xml b/persistence-modules/spring-data-mongodb/pom.xml index 60e59f5186..a3a81fe450 100644 --- a/persistence-modules/spring-data-mongodb/pom.xml +++ b/persistence-modules/spring-data-mongodb/pom.xml @@ -107,6 +107,11 @@ 4.1.0 3.2.0.RELEASE 4.0.5 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-redis/pom.xml b/persistence-modules/spring-data-redis/pom.xml index d271df31c7..34674dc223 100644 --- a/persistence-modules/spring-data-redis/pom.xml +++ b/persistence-modules/spring-data-redis/pom.xml @@ -98,6 +98,11 @@ 3.2.4 0.10.0 0.6 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-data-solr/pom.xml b/persistence-modules/spring-data-solr/pom.xml index 5386c4f9e1..94a796c466 100644 --- a/persistence-modules/spring-data-solr/pom.xml +++ b/persistence-modules/spring-data-solr/pom.xml @@ -45,6 +45,11 @@ 2.0.5.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/pom.xml b/persistence-modules/spring-hibernate4/pom.xml index 5e931d5cff..3e5a6f913f 100644 --- a/persistence-modules/spring-hibernate4/pom.xml +++ b/persistence-modules/spring-hibernate4/pom.xml @@ -156,6 +156,11 @@ 19.0 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/persistence-modules/spring-jdbc/pom.xml b/persistence-modules/spring-jdbc/pom.xml index 4ac5239318..77200cd66e 100644 --- a/persistence-modules/spring-jdbc/pom.xml +++ b/persistence-modules/spring-jdbc/pom.xml @@ -37,5 +37,10 @@ 2.0.3.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file From b800a844fd4e7400ec69ea0be05aabec4456874d Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Wed, 23 Sep 2020 20:14:15 +0200 Subject: [PATCH 120/260] JAVA-2974: Clean up the pom.xml in spring-data-jpa-enterprise --- persistence-modules/spring-data-jpa-enterprise/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/persistence-modules/spring-data-jpa-enterprise/pom.xml b/persistence-modules/spring-data-jpa-enterprise/pom.xml index 093059ad78..756ea59702 100644 --- a/persistence-modules/spring-data-jpa-enterprise/pom.xml +++ b/persistence-modules/spring-data-jpa-enterprise/pom.xml @@ -95,10 +95,6 @@ - 2.1.9.RELEASE - com.baeldung.springdatageode.app.ClientCacheApp - 1.1.1.RELEASE - 2.1.9.RELEASE 1.3.1.Final 21.0 1.12.2 From 027cba8b8bdf26b9cf21254d08eb7f6e80c84ab1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 02:39:41 +0800 Subject: [PATCH 121/260] Update README.md --- java-collections-conversions-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-collections-conversions-2/README.md b/java-collections-conversions-2/README.md index 9d0ba88cbf..628421b0e2 100644 --- a/java-collections-conversions-2/README.md +++ b/java-collections-conversions-2/README.md @@ -7,4 +7,5 @@ This module contains articles about conversions among Collection types and array - [Array to String Conversions](https://www.baeldung.com/java-array-to-string) - [Mapping Lists with ModelMapper](https://www.baeldung.com/java-modelmapper-lists) - [Converting List to Map With a Custom Supplier](https://www.baeldung.com/list-to-map-supplier) +- [Arrays.asList vs new ArrayList(Arrays.asList())](https://www.baeldung.com/java-arrays-aslist-vs-new-arraylist) - More articles: [[<-- prev]](../java-collections-conversions) From 14965826eb20c8b08a9054451297af45375e82a6 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 02:49:18 +0800 Subject: [PATCH 122/260] Update README.md --- spring-boot-modules/spring-boot-mvc-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-mvc-3/README.md b/spring-boot-modules/spring-boot-mvc-3/README.md index 6627bd8eea..796ab72425 100644 --- a/spring-boot-modules/spring-boot-mvc-3/README.md +++ b/spring-boot-modules/spring-boot-mvc-3/README.md @@ -7,4 +7,5 @@ This module contains articles about Spring Web MVC in Spring Boot projects. - [Circular View Path Error](https://www.baeldung.com/spring-circular-view-path-error) - [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) - [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) +- [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) - More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) From 7e0a8329a255376e859a2ca288d6ff2403192fbf Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 02:53:02 +0800 Subject: [PATCH 123/260] Create README.md --- core-groovy-strings/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 core-groovy-strings/README.md diff --git a/core-groovy-strings/README.md b/core-groovy-strings/README.md new file mode 100644 index 0000000000..2f49f47cf9 --- /dev/null +++ b/core-groovy-strings/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [How to Remove a Prefix From Strings in Groovy](https://www.baeldung.com/groovy-remove-string-prefix) From 46c071b40bf68f394855dd4486e325a7cf0e15e3 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 02:55:21 +0800 Subject: [PATCH 124/260] Update README.md --- core-java-modules/core-java-networking-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md index dbda8bdc7c..fa49c35bf8 100644 --- a/core-java-modules/core-java-networking-2/README.md +++ b/core-java-modules/core-java-networking-2/README.md @@ -13,4 +13,5 @@ This module contains articles about networking in Java - [Download a File from an URL in Java](https://www.baeldung.com/java-download-file) - [Handling java.net.ConnectException](https://www.baeldung.com/java-net-connectexception) - [Getting MAC addresses in Java](https://www.baeldung.com/java-mac-address) +- [Sending Emails with Attachments in Java](https://www.baeldung.com/java-send-emails-attachments) - [[<-- Prev]](/core-java-modules/core-java-networking) From 95549836ec4476b1aaa837fbb33cf9b913e4f373 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 03:32:03 +0800 Subject: [PATCH 125/260] Update README.md --- spring-mvc-basics-4/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-mvc-basics-4/README.md b/spring-mvc-basics-4/README.md index 19cb9059ed..0da83540ad 100644 --- a/spring-mvc-basics-4/README.md +++ b/spring-mvc-basics-4/README.md @@ -8,4 +8,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Model, ModelMap, and ModelView in Spring MVC](https://www.baeldung.com/spring-mvc-model-model-map-model-view) - [Spring Web Contexts](https://www.baeldung.com/spring-web-contexts) - [Spring Optional Path variables](https://www.baeldung.com/spring-optional-path-variables) -- More articles: [[<-- prev]](/spring-mvc-basics-3) \ No newline at end of file +- [JSON Parameters with Spring MVC](https://www.baeldung.com/spring-mvc-send-json-parameters) +- More articles: [[<-- prev]](/spring-mvc-basics-3) From 2ba94bd15408e394ffeefc2d97315734f164d2a0 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 03:34:17 +0800 Subject: [PATCH 126/260] Create README.md --- testing-modules/testing-libraries-2/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 testing-modules/testing-libraries-2/README.md diff --git a/testing-modules/testing-libraries-2/README.md b/testing-modules/testing-libraries-2/README.md new file mode 100644 index 0000000000..3325600b5e --- /dev/null +++ b/testing-modules/testing-libraries-2/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Guide to the System Rules Library](https://www.baeldung.com/java-system-rules-junit) From 4575ad984632801664636dacf90e9b71308c62df Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 03:36:26 +0800 Subject: [PATCH 127/260] Update README.md --- json/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/json/README.md b/json/README.md index 0e50dcfddb..6ad4c8a29d 100644 --- a/json/README.md +++ b/json/README.md @@ -13,3 +13,4 @@ This module contains articles about JSON. - [Get a Value by Key in a JSONArray](https://www.baeldung.com/java-jsonarray-get-value-by-key) - [Iterating Over an Instance of org.json.JSONObject](https://www.baeldung.com/jsonobject-iteration) - [Escape JSON String in Java](https://www.baeldung.com/java-json-escaping) +- [Reducing JSON Data Size](https://www.baeldung.com/json-reduce-data-size) From bea5c242afe1405842ca5d391c8b8b5a0b773086 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 03:39:09 +0800 Subject: [PATCH 128/260] Update README.md --- core-java-modules/core-java-reflection-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-reflection-2/README.md b/core-java-modules/core-java-reflection-2/README.md index e5ddb7a8b8..1668eeade3 100644 --- a/core-java-modules/core-java-reflection-2/README.md +++ b/core-java-modules/core-java-reflection-2/README.md @@ -2,3 +2,4 @@ - [Reading the Value of ‘private’ Fields from a Different Class in Java](https://www.baeldung.com/java-reflection-read-private-field-value) - [Set Field Value With Reflection](https://www.baeldung.com/java-set-private-field-value) +- [Checking If a Method is Static Using Reflection in Java](https://www.baeldung.com/java-check-method-is-static) From 86876c57d1a94788991e19951fd77c056e21ceae Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 24 Sep 2020 03:40:31 +0800 Subject: [PATCH 129/260] Update README.md --- core-java-modules/core-java-lang-oop-methods/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-oop-methods/README.md b/core-java-modules/core-java-lang-oop-methods/README.md index afceaded9a..43eab24003 100644 --- a/core-java-modules/core-java-lang-oop-methods/README.md +++ b/core-java-modules/core-java-lang-oop-methods/README.md @@ -9,3 +9,4 @@ This module contains articles about methods in Java - [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) - [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) - [The Covariant Return Type in Java](https://www.baeldung.com/java-covariant-return-type) +- [Does a Method’s Signature Include the Return Type in Java?](https://www.baeldung.com/java-method-signature-return-type) From 17369c4b7733cfb09fd5be036faae1d350fddf07 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Thu, 24 Sep 2020 03:02:04 +0530 Subject: [PATCH 130/260] BAEL-4404|Updated test class name --- ...rollerTest.java => CharEncodingCheckControllerUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/{CharEncodingCheckControllerTest.java => CharEncodingCheckControllerUnitTest.java} (96%) diff --git a/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java b/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerUnitTest.java similarity index 96% rename from spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java rename to spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerUnitTest.java index 25f257eced..6dcbfe390f 100644 --- a/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerTest.java +++ b/spring-boot-modules/spring-boot-mvc-3/src/test/java/com/baeldung/charencoding/controller/CharEncodingCheckControllerUnitTest.java @@ -13,7 +13,7 @@ import javax.servlet.http.HttpServletResponse; import org.junit.jupiter.api.Test; import org.springframework.web.filter.CharacterEncodingFilter; -class CharEncodingCheckControllerTest { +class CharEncodingCheckControllerUnitTest { @Test void whenCharEncodingFilter_thenVerifyEncoding() throws ServletException, IOException { From bea3fccca7a72a9e1857aae9a4dbcdc25b6de3b0 Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Wed, 23 Sep 2020 21:50:39 -0500 Subject: [PATCH 131/260] BAEL-4327 update README (#10084) * BAEL-3336 BAEL-3058 add links * BAEL-3319: add link * BAEL-3284: add link * BAEL-3198: add link to article * BAEL-3479: add link to article * BAEL-3485: add article link * SCALA-38: move to new package and add link back to article * SCALA-38: add imports back into unit test * BAEL-3908: add link back to article * BAEL-2893 BAEL-3927 add link back to article * BAEL-3569: update README * BAEL-4327: update README --- spring-mvc-basics-4/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-mvc-basics-4/README.md b/spring-mvc-basics-4/README.md index 19cb9059ed..0da83540ad 100644 --- a/spring-mvc-basics-4/README.md +++ b/spring-mvc-basics-4/README.md @@ -8,4 +8,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Model, ModelMap, and ModelView in Spring MVC](https://www.baeldung.com/spring-mvc-model-model-map-model-view) - [Spring Web Contexts](https://www.baeldung.com/spring-web-contexts) - [Spring Optional Path variables](https://www.baeldung.com/spring-optional-path-variables) -- More articles: [[<-- prev]](/spring-mvc-basics-3) \ No newline at end of file +- [JSON Parameters with Spring MVC](https://www.baeldung.com/spring-mvc-send-json-parameters) +- More articles: [[<-- prev]](/spring-mvc-basics-3) From d100adc9c59ef660da247d4786ccfd45197ea09b Mon Sep 17 00:00:00 2001 From: Joe Boudreau Date: Thu, 24 Sep 2020 12:28:05 -0400 Subject: [PATCH 132/260] BAEL-4448: Added examples for setting TLS version in HttpClient (#9936) * [BAEL-4448] Added examples for setting TLS version in HttpClient (cherry picked from commit f4d40fc3f3140fd046ed957030e9a54582bd4a67) * [BAEL-4448] Simplified the code for one example * [BAEL-4448] Formatting fixes and moved to new package * [BAEL-4448] Forgot an import and fixed class name typo * [BAEL-4448] Created second module for httpclient and moved article code Co-authored-by: joe --- httpclient-2/.gitignore | 13 ++++ httpclient-2/README.md | 12 ++++ httpclient-2/pom.xml | 43 +++++++++++++ .../tlsversion/ClientTlsVersionExamples.java | 64 +++++++++++++++++++ httpclient/README.md | 1 + pom.xml | 2 + 6 files changed, 135 insertions(+) create mode 100644 httpclient-2/.gitignore create mode 100644 httpclient-2/README.md create mode 100644 httpclient-2/pom.xml create mode 100644 httpclient-2/src/main/java/com/baeldung/tlsversion/ClientTlsVersionExamples.java diff --git a/httpclient-2/.gitignore b/httpclient-2/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/httpclient-2/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/httpclient-2/README.md b/httpclient-2/README.md new file mode 100644 index 0000000000..52d8b8fcff --- /dev/null +++ b/httpclient-2/README.md @@ -0,0 +1,12 @@ +## HttpClient 4.x + +This module contains articles about HttpClient 4.x + +### The Course + +The "REST With Spring" Classes: http://bit.ly/restwithspring + +### Relevant Articles: + +- [How to Set TLS Version in Apache HttpClient](https://www.baeldung.com/TODO) +- More articles: [[<-- prev]](../httpclient) diff --git a/httpclient-2/pom.xml b/httpclient-2/pom.xml new file mode 100644 index 0000000000..1a27d9b5fe --- /dev/null +++ b/httpclient-2/pom.xml @@ -0,0 +1,43 @@ + + + 4.0.0 + httpclient-2 + 0.1-SNAPSHOT + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + + org.apache.httpcomponents + httpclient + ${httpclient.version} + + + commons-logging + commons-logging + + + + + + + httpclient-2 + + + src/main/resources + true + + + + + + 4.5.8 + + + \ No newline at end of file diff --git a/httpclient-2/src/main/java/com/baeldung/tlsversion/ClientTlsVersionExamples.java b/httpclient-2/src/main/java/com/baeldung/tlsversion/ClientTlsVersionExamples.java new file mode 100644 index 0000000000..c58763b1c0 --- /dev/null +++ b/httpclient-2/src/main/java/com/baeldung/tlsversion/ClientTlsVersionExamples.java @@ -0,0 +1,64 @@ +package com.baeldung.tlsversion; + +import javax.net.ssl.SSLSocket; + +import org.apache.http.HttpEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.conn.ssl.SSLConnectionSocketFactory; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.ssl.SSLContexts; +import org.apache.http.util.EntityUtils; + +import java.io.IOException; + +public class ClientTlsVersionExamples { + + public static CloseableHttpClient setViaSocketFactory() { + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory( + SSLContexts.createDefault(), + new String[] { "TLSv1.2", "TLSv1.3" }, + null, + SSLConnectionSocketFactory.getDefaultHostnameVerifier()); + + return HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } + + public static CloseableHttpClient setTlsVersionPerConnection() { + SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(SSLContexts.createDefault()) { + + @Override + protected void prepareSocket(SSLSocket socket) { + String hostname = socket.getInetAddress().getHostName(); + if (hostname.endsWith("internal.system.com")) { + socket.setEnabledProtocols(new String[] { "TLSv1", "TLSv1.1", "TLSv1.2", "TLSv1.3" }); + } else { + socket.setEnabledProtocols(new String[] { "TLSv1.3" }); + } + } + }; + + return HttpClients.custom().setSSLSocketFactory(sslsf).build(); + } + + // To configure the TLS versions for the client, set the https.protocols system property during runtime. + // For example: java -Dhttps.protocols=TLSv1.1,TLSv1.2,TLSv1.3 -jar webClient.jar + public static CloseableHttpClient setViaSystemProperties() { + return HttpClients.createSystem(); + // Alternatively: + // return HttpClients.custom().useSystemProperties().build(); + } + + public static void main(String[] args) throws IOException { + // Alternatively: + // CloseableHttpClient httpClient = setTlsVersionPerConnection(); + // CloseableHttpClient httpClient = setViaSystemProperties(); + try (CloseableHttpClient httpClient = setViaSocketFactory(); + CloseableHttpResponse response = httpClient.execute(new HttpGet("https://httpbin.org/"))) { + + HttpEntity entity = response.getEntity(); + EntityUtils.consume(entity); + } + } +} \ No newline at end of file diff --git a/httpclient/README.md b/httpclient/README.md index d88739e901..23fe7c7271 100644 --- a/httpclient/README.md +++ b/httpclient/README.md @@ -18,3 +18,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Advanced HttpClient Configuration](https://www.baeldung.com/httpclient-advanced-config) - [HttpClient 4 – Do Not Follow Redirects](https://www.baeldung.com/httpclient-stop-follow-redirect) - [Custom User-Agent in HttpClient 4](https://www.baeldung.com/httpclient-user-agent-header) +- More articles: [[next -->]](../httpclient-2) diff --git a/pom.xml b/pom.xml index 6553716d63..065d6abbdd 100644 --- a/pom.xml +++ b/pom.xml @@ -424,6 +424,7 @@ hazelcast helidon httpclient + httpclient-2 httpclient-simple hystrix @@ -935,6 +936,7 @@ hazelcast helidon httpclient + httpclient-2 httpclient-simple hystrix From 0fd213eb5d5874ccf1c93d38911e9e9c2ceab154 Mon Sep 17 00:00:00 2001 From: mikr Date: Thu, 24 Sep 2020 19:13:13 +0200 Subject: [PATCH 133/260] Java-82 Fix test (change port) --- .../baeldung/reactive/security/SpringSecurity5Application.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java index d315bf8238..bb0f007ada 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SpringSecurity5Application.java @@ -28,7 +28,7 @@ public class SpringSecurity5Application { HttpHandler handler = WebHttpHandlerBuilder.applicationContext(context) .build(); ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(handler); - HttpServer httpServer = HttpServer.create().host("localhost").port(8080); + HttpServer httpServer = HttpServer.create().host("localhost").port(8083); return httpServer.handle(adapter).bindNow(); } From b5d49958eb8a20250e774e872d037abee64972da Mon Sep 17 00:00:00 2001 From: Liu Chuang Date: Fri, 25 Sep 2020 15:12:35 +0800 Subject: [PATCH 134/260] Update MaxSizeConstraintValidator.java --- .../constraint/MaxSizeConstraintValidator.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java b/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java index 0154fb636a..7e725a3981 100644 --- a/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java +++ b/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java @@ -11,11 +11,7 @@ public class MaxSizeConstraintValidator implements ConstraintValidator values, ConstraintValidatorContext context) { - boolean isValid = true; - if (values.size() > 4) { - isValid = false; - } - return isValid; + return value.size()<=4 } } From c245528f3d78c400c0ccd9f91551af0d45455863 Mon Sep 17 00:00:00 2001 From: Liu Chuang Date: Fri, 25 Sep 2020 15:14:41 +0800 Subject: [PATCH 135/260] Update MaxSizeConstraintValidator.java --- .../listvalidation/constraint/MaxSizeConstraintValidator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java b/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java index 7e725a3981..524e98a39e 100644 --- a/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java +++ b/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java @@ -11,7 +11,7 @@ public class MaxSizeConstraintValidator implements ConstraintValidator values, ConstraintValidatorContext context) { - return value.size()<=4 + return values.size()<=4 } } From 68272ef58fde5cedff32e2d9f1dc8e27aacf1864 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Fri, 25 Sep 2020 13:17:43 +0200 Subject: [PATCH 136/260] BAEL-4641: Use MapStruct 1.3.1.Final (#10088) --- mapstruct/pom.xml | 2 +- .../mappingCollections/mapper/CompanyMapperAdderPreferred.java | 3 ++- .../mapstruct/mappingCollections/mapper/EmployeeMapper.java | 2 ++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 9fe6ab6485..9b416177e7 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -71,7 +71,7 @@ - 1.4.0.Beta1 + 1.3.1.Final 4.3.4.RELEASE 1.8 1.8 diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java index e5cc43074e..094d87351a 100644 --- a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/CompanyMapperAdderPreferred.java @@ -5,7 +5,8 @@ import com.baeldung.mapstruct.mappingCollections.model.Company; import org.mapstruct.CollectionMappingStrategy; import org.mapstruct.Mapper; -@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED) +@Mapper(collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED, + uses = EmployeeMapper.class) public interface CompanyMapperAdderPreferred { CompanyDTO map(Company company); diff --git a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java index 45bf76c5a4..4a723f049a 100644 --- a/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java +++ b/mapstruct/src/main/java/com/baeldung/mapstruct/mappingCollections/mapper/EmployeeMapper.java @@ -11,6 +11,8 @@ import java.util.Set; @Mapper public interface EmployeeMapper { + EmployeeDTO map(Employee employee); + List map(List employees); Set map(Set employees); From 725a7b2a7aba4ed53b614d4c306aabb3c5063a22 Mon Sep 17 00:00:00 2001 From: azhwani <> Date: Fri, 25 Sep 2020 18:40:26 +0100 Subject: [PATCH 137/260] Add cleanUp --- .../lastmodifiedfile/LastModifiedFileAppUnitTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java index 4e1f7719a9..fe704c3c40 100644 --- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/lastmodifiedfile/LastModifiedFileAppUnitTest.java @@ -9,6 +9,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import org.apache.commons.io.FileUtils; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -57,8 +58,7 @@ public class LastModifiedFileAppUnitTest { Path lastModPath = LastModifiedFileApp.findUsingNIOApi(SOURCEDIRECTORY); assertThat(lastModPath).isNotNull(); - assertThat(lastModPath.toFile() - .getName()).isEqualTo("file02.txt"); + assertThat(lastModPath.toFile().getName()).isEqualTo("file02.txt"); } @Test @@ -69,4 +69,10 @@ public class LastModifiedFileAppUnitTest { assertThat(lastModFile.getName()).isEqualTo("file02.txt"); } + @AfterAll + public static void cleanUp() throws IOException { + File srcDir = new File(SOURCEDIRECTORY); + FileUtils.deleteDirectory(srcDir); + } + } \ No newline at end of file From 32f4eeef0207f19f217c6c92b78e906fb6b65ed6 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Fri, 25 Sep 2020 23:39:32 +0200 Subject: [PATCH 138/260] BAEL-4520 Getting Started with jOOQ (#10086) * BAEL-4520 Getting Started with jOOQ * add generated sources * remove maven files * create tests Co-authored-by: Krzysztof Majewski --- persistence-modules/jooq/pom.xml | 46 ++++ .../src/main/java/com/baeldung/jooq/Crud.java | 57 ++++ .../java/com/baeldung/jooq/CrudExamples.java | 117 ++++++++ .../baeldung/jooq/model/DefaultCatalog.java | 44 +++ .../java/com/baeldung/jooq/model/Keys.java | 48 ++++ .../java/com/baeldung/jooq/model/Public.java | 59 ++++ .../java/com/baeldung/jooq/model/Tables.java | 25 ++ .../baeldung/jooq/model/tables/Article.java | 159 +++++++++++ .../baeldung/jooq/model/tables/Author.java | 149 ++++++++++ .../model/tables/records/ArticleRecord.java | 218 +++++++++++++++ .../model/tables/records/AuthorRecord.java | 217 +++++++++++++++ .../java/com/baeldung/jooq/CrudLiveTest.java | 257 ++++++++++++++++++ persistence-modules/pom.xml | 1 + 13 files changed, 1397 insertions(+) create mode 100644 persistence-modules/jooq/pom.xml create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/DefaultCatalog.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Keys.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Public.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Tables.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Article.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Author.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/ArticleRecord.java create mode 100644 persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/AuthorRecord.java create mode 100644 persistence-modules/jooq/src/test/java/com/baeldung/jooq/CrudLiveTest.java diff --git a/persistence-modules/jooq/pom.xml b/persistence-modules/jooq/pom.xml new file mode 100644 index 0000000000..f0c5a27a96 --- /dev/null +++ b/persistence-modules/jooq/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + jooq + 0.0.1-SNAPSHOT + jooq-examples + jar + jOOQ Examples + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + org.jooq + jooq + 3.13.4 + + + org.jooq + jooq-meta + 3.13.4 + + + org.jooq + jooq-codegen + 3.13.4 + + + org.postgresql + postgresql + 42.2.16 + + + com.h2database + h2 + 1.4.200 + + + + diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java new file mode 100644 index 0000000000..0427b71c25 --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java @@ -0,0 +1,57 @@ +package com.baeldung.jooq; + +import org.jooq.Condition; +import org.jooq.DSLContext; +import org.jooq.Field; +import org.jooq.Record; +import org.jooq.Result; +import org.jooq.SelectFieldOrAsterisk; +import org.jooq.Table; +import org.jooq.UpdatableRecord; + +import java.util.Map; + +public class Crud { + + public static > void save(UpdatableRecord record) { + record.store(); + } + + public static Result getAll(DSLContext context, Table table) { + return context.select() + .from(table) + .fetch(); + } + + public static Result getFields(DSLContext context, Table table, SelectFieldOrAsterisk... fields) { + return context.select(fields) + .from(table) + .fetch(); + } + + public static R getOne(DSLContext context, Table table, Condition condition) { + return context.fetchOne(table, condition); + } + + public static void update(DSLContext context, Table table, Map, T> values, Condition condition) { + context.update(table) + .set(values) + .where(condition) + .execute(); + } + + public static > void update(UpdatableRecord record) { + record.update(); + } + + public static void delete(DSLContext context, Table table, Condition condition) { + context.delete(table) + .where(condition) + .execute(); + } + + public static > void delete(UpdatableRecord record) { + record.delete(); + } + +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java new file mode 100644 index 0000000000..87a7b6439e --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java @@ -0,0 +1,117 @@ +package com.baeldung.jooq; + +import com.baeldung.jooq.model.tables.Article; +import com.baeldung.jooq.model.tables.Author; +import com.baeldung.jooq.model.tables.records.ArticleRecord; +import com.baeldung.jooq.model.tables.records.AuthorRecord; +import org.jooq.DSLContext; +import org.jooq.Field; +import org.jooq.Record; +import org.jooq.Result; +import org.jooq.SQLDialect; +import org.jooq.impl.DSL; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.HashMap; + +import static com.baeldung.jooq.Crud.delete; +import static com.baeldung.jooq.Crud.getAll; +import static com.baeldung.jooq.Crud.getFields; +import static com.baeldung.jooq.Crud.getOne; +import static com.baeldung.jooq.Crud.save; +import static com.baeldung.jooq.Crud.update; + +public class CrudExamples { + + public void crudExamples() throws SQLException { + String userName = "username"; + String password = "password"; + String url = "jdbc:postgresql://db_url:5432/baeldung_database"; + + Connection conn = DriverManager.getConnection(url, userName, password); + DSLContext context = DSL.using(conn, SQLDialect.POSTGRES); + + createValues(context); + readValues(context); + updateValues(context); + deleteValues(context); + } + + private void createValues(DSLContext context) { + ArticleRecord article = context.newRecord(Article.ARTICLE); + + article.setId(2); + article.setTitle("jOOQ examples"); + article.setDescription("A few examples of jOOQ CRUD operations"); + article.setAuthorId(1); + + save(article); + + AuthorRecord author = context.newRecord(Author.AUTHOR); + author.setId(1); + author.setFirstName("John"); + author.setLastName("Smith"); + author.setAge(40); + + save(author); + } + + private void readValues(DSLContext context) { + Result authors = getAll( + context, + Author.AUTHOR + ); + + authors.forEach(author -> { + Integer id = author.getValue(Author.AUTHOR.ID); + String firstName = author.getValue(Author.AUTHOR.FIRST_NAME); + String lastName = author.getValue(Author.AUTHOR.LAST_NAME); + Integer age = author.getValue(Author.AUTHOR.AGE); + System.out.printf("Author %s %s has id: %d and age: %d%n", firstName, lastName, id, age); + }); + + Result articles = getFields( + context, + Author.AUTHOR, + Article.ARTICLE.ID, Article.ARTICLE.TITLE + ); + + AuthorRecord author = getOne( + context, + Author.AUTHOR, + Author.AUTHOR.ID.eq(1) + ); + } + + private void updateValues(DSLContext context) { + HashMap, String> fieldsToUpdate = new HashMap<>(); + fieldsToUpdate.put(Author.AUTHOR.FIRST_NAME, "David"); + fieldsToUpdate.put(Author.AUTHOR.LAST_NAME, "Brown"); + update( + context, + Author.AUTHOR, + fieldsToUpdate, + Author.AUTHOR.ID.eq(1) + ); + + ArticleRecord article = context.fetchOne(Article.ARTICLE, Article.ARTICLE.ID.eq(1)); + article.setTitle("A New Article Title"); + update( + article + ); + } + + private void deleteValues(DSLContext context) { + delete( + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) + ); + + AuthorRecord author = context.fetchOne(Author.AUTHOR, Author.AUTHOR.ID.eq(1)); + delete(author); + } + +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/DefaultCatalog.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/DefaultCatalog.java new file mode 100644 index 0000000000..b18484877a --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/DefaultCatalog.java @@ -0,0 +1,44 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model; + + +import org.jooq.Schema; +import org.jooq.impl.CatalogImpl; + +import java.util.Arrays; +import java.util.List; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class DefaultCatalog extends CatalogImpl { + + private static final long serialVersionUID = 1035293962; + + /** + * The reference instance of DEFAULT_CATALOG + */ + public static final DefaultCatalog DEFAULT_CATALOG = new DefaultCatalog(); + + /** + * The schema public. + */ + public final Public PUBLIC = Public.PUBLIC; + + /** + * No further instances allowed + */ + private DefaultCatalog() { + super(""); + } + + @Override + public final List getSchemas() { + return Arrays.asList( + Public.PUBLIC); + } +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Keys.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Keys.java new file mode 100644 index 0000000000..461ffb58c7 --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Keys.java @@ -0,0 +1,48 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model; + + +import com.baeldung.jooq.model.tables.Article; +import com.baeldung.jooq.model.tables.Author; +import com.baeldung.jooq.model.tables.records.ArticleRecord; +import com.baeldung.jooq.model.tables.records.AuthorRecord; +import org.jooq.ForeignKey; +import org.jooq.TableField; +import org.jooq.UniqueKey; +import org.jooq.impl.Internal; + + +/** + * A class modelling foreign key relationships and constraints of tables of + * the public schema. + */ +@SuppressWarnings({"all", "unchecked", "rawtypes"}) +public class Keys { + + // ------------------------------------------------------------------------- + // UNIQUE and PRIMARY KEY definitions + // ------------------------------------------------------------------------- + + public static final UniqueKey ARTICLE_PKEY = UniqueKeys0.ARTICLE_PKEY; + public static final UniqueKey AUTHOR_PKEY = UniqueKeys0.AUTHOR_PKEY; + + // ------------------------------------------------------------------------- + // FOREIGN KEY definitions + // ------------------------------------------------------------------------- + public static final ForeignKey ARTICLE__XXX = ForeignKeys0.ARTICLE__XXX; + + // ------------------------------------------------------------------------- + // [#1459] distribute members to avoid static initialisers > 64kb + // ------------------------------------------------------------------------- + + private static class UniqueKeys0 { + public static final UniqueKey ARTICLE_PKEY = Internal.createUniqueKey(Article.ARTICLE, "article_pkey", new TableField[]{Article.ARTICLE.ID}, true); + public static final UniqueKey AUTHOR_PKEY = Internal.createUniqueKey(Author.AUTHOR, "author_pkey", new TableField[]{Author.AUTHOR.ID}, true); + } + + private static class ForeignKeys0 { + public static final ForeignKey ARTICLE__XXX = Internal.createForeignKey(Keys.AUTHOR_PKEY, Article.ARTICLE, "xxx", new TableField[]{Article.ARTICLE.AUTHOR_ID}, true); + } +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Public.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Public.java new file mode 100644 index 0000000000..02c664522b --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Public.java @@ -0,0 +1,59 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model; + +import com.baeldung.jooq.model.tables.Article; +import com.baeldung.jooq.model.tables.Author; +import org.jooq.Catalog; +import org.jooq.Table; +import org.jooq.impl.SchemaImpl; + +import java.util.Arrays; +import java.util.List; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({"all", "unchecked", "rawtypes"}) +public class Public extends SchemaImpl { + + private static final long serialVersionUID = -2049410122; + + /** + * The reference instance of public + */ + public static final Public PUBLIC = new Public(); + + /** + * The table public.article. + */ + public final Article ARTICLE = Article.ARTICLE; + + /** + * The table public.author. + */ + public final Author AUTHOR = Author.AUTHOR; + + /** + * No further instances allowed + */ + private Public() { + super("public", null); + } + + + @Override + public Catalog getCatalog() { + return DefaultCatalog.DEFAULT_CATALOG; + } + + @Override + public final List> getTables() { + return Arrays.>asList( + Article.ARTICLE, + Author.AUTHOR + ); + } +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Tables.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Tables.java new file mode 100644 index 0000000000..eb1f14e05a --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/Tables.java @@ -0,0 +1,25 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model; + +import com.baeldung.jooq.model.tables.Article; +import com.baeldung.jooq.model.tables.Author; + +/** + * Convenience access to all tables in public + */ +@SuppressWarnings({"all", "unchecked", "rawtypes"}) +public class Tables { + + /** + * The table public.article. + */ + public static final Article ARTICLE = Article.ARTICLE; + + /** + * The table public.author. + */ + public static final Author AUTHOR = Author.AUTHOR; + +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Article.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Article.java new file mode 100644 index 0000000000..3159c91aa8 --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Article.java @@ -0,0 +1,159 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model.tables; + + +import com.baeldung.jooq.model.Keys; +import com.baeldung.jooq.model.Public; +import com.baeldung.jooq.model.tables.records.ArticleRecord; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Name; +import org.jooq.Record; +import org.jooq.Row4; +import org.jooq.Schema; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.TableImpl; + +import java.util.Arrays; +import java.util.List; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Article extends TableImpl { + + private static final long serialVersionUID = -1401275800; + + /** + * The reference instance of public.article + */ + public static final Article ARTICLE = new Article(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return ArticleRecord.class; + } + + /** + * The column public.article.id. + */ + public final TableField ID = createField(DSL.name("id"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column public.article.title. + */ + public final TableField TITLE = createField(DSL.name("title"), org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, ""); + + /** + * The column public.article.description. + */ + public final TableField DESCRIPTION = createField(DSL.name("description"), org.jooq.impl.SQLDataType.VARCHAR(255), this, ""); + + /** + * The column public.article.author_id. + */ + public final TableField AUTHOR_ID = createField(DSL.name("author_id"), org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a public.article table reference + */ + public Article() { + this(DSL.name("article"), null); + } + + /** + * Create an aliased public.article table reference + */ + public Article(String alias) { + this(DSL.name(alias), ARTICLE); + } + + /** + * Create an aliased public.article table reference + */ + public Article(Name alias) { + this(alias, ARTICLE); + } + + private Article(Name alias, Table aliased) { + this(alias, aliased, null); + } + + private Article(Name alias, Table aliased, Field[] parameters) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + } + + public Article(Table child, ForeignKey key) { + super(child, key, ARTICLE); + } + + @Override + public Schema getSchema() { + return Public.PUBLIC; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.ARTICLE_PKEY; + } + + @Override + public List> getKeys() { + return Arrays.>asList(Keys.ARTICLE_PKEY); + } + + @Override + public List> getReferences() { + return Arrays.>asList(Keys.ARTICLE__XXX); + } + + public Author author() { + return new Author(this, Keys.ARTICLE__XXX); + } + + @Override + public Article as(String alias) { + return new Article(DSL.name(alias), this); + } + + @Override + public Article as(Name alias) { + return new Article(alias, this); + } + + /** + * Rename this table + */ + @Override + public Article rename(String name) { + return new Article(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Article rename(Name name) { + return new Article(name, null); + } + + // ------------------------------------------------------------------------- + // Row4 type methods + // ------------------------------------------------------------------------- + + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Author.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Author.java new file mode 100644 index 0000000000..9da9415109 --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/Author.java @@ -0,0 +1,149 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model.tables; + +import com.baeldung.jooq.model.Keys; +import com.baeldung.jooq.model.Public; +import com.baeldung.jooq.model.tables.records.AuthorRecord; +import org.jooq.Field; +import org.jooq.ForeignKey; +import org.jooq.Name; +import org.jooq.Record; +import org.jooq.Row4; +import org.jooq.Schema; +import org.jooq.Table; +import org.jooq.TableField; +import org.jooq.TableOptions; +import org.jooq.UniqueKey; +import org.jooq.impl.DSL; +import org.jooq.impl.TableImpl; + +import java.util.Arrays; +import java.util.List; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class Author extends TableImpl { + + private static final long serialVersionUID = -798376522; + + /** + * The reference instance of public.author + */ + public static final Author AUTHOR = new Author(); + + /** + * The class holding records for this type + */ + @Override + public Class getRecordType() { + return AuthorRecord.class; + } + + /** + * The column public.author.id. + */ + public final TableField ID = createField(DSL.name("id"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), AUTHOR, ""); + + /** + * The column public.author.first_name. + */ + public final TableField FIRST_NAME = createField(DSL.name("first_name"), org.jooq.impl.SQLDataType.VARCHAR(255), this, ""); + + /** + * The column public.author.last_name. + */ + public final TableField LAST_NAME = createField(DSL.name("last_name"), org.jooq.impl.SQLDataType.VARCHAR(255), this, ""); + + /** + * The column public.author.age. + */ + public final TableField AGE = createField(DSL.name("age"), org.jooq.impl.SQLDataType.INTEGER, this, ""); + + /** + * Create a public.author table reference + */ + public Author() { + this(DSL.name("author"), null); + } + + /** + * Create an aliased public.author table reference + */ + public Author(String alias) { + this(DSL.name(alias), AUTHOR); + } + + /** + * Create an aliased public.author table reference + */ + public Author(Name alias) { + this(alias, AUTHOR); + } + + private Author(Name alias, Table aliased) { + this(alias, aliased, null); + } + + private Author(Name alias, Table aliased, Field[] parameters) { + super(alias, null, aliased, parameters, DSL.comment(""), TableOptions.table()); + } + + public Author(Table child, ForeignKey key) { + super(child, key, AUTHOR); + } + + @Override + public Schema getSchema() { + return Public.PUBLIC; + } + + @Override + public UniqueKey getPrimaryKey() { + return Keys.AUTHOR_PKEY; + } + + @Override + public List> getKeys() { + return Arrays.>asList(Keys.AUTHOR_PKEY); + } + + @Override + public Author as(String alias) { + return new Author(DSL.name(alias), this); + } + + @Override + public Author as(Name alias) { + return new Author(alias, this); + } + + /** + * Rename this table + */ + @Override + public Author rename(String name) { + return new Author(DSL.name(name), null); + } + + /** + * Rename this table + */ + @Override + public Author rename(Name name) { + return new Author(name, null); + } + + // ------------------------------------------------------------------------- + // Row4 type methods + // ------------------------------------------------------------------------- + + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/ArticleRecord.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/ArticleRecord.java new file mode 100644 index 0000000000..cee17fe716 --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/ArticleRecord.java @@ -0,0 +1,218 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model.tables.records; + + +import com.baeldung.jooq.model.tables.Article; + +import org.jooq.Field; +import org.jooq.Record1; +import org.jooq.Record4; +import org.jooq.Row4; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class ArticleRecord extends UpdatableRecordImpl implements Record4 { + + private static final long serialVersionUID = 1297442421; + + /** + * Setter for public.article.id. + */ + public void setId(Integer value) { + set(0, value); + } + + /** + * Getter for public.article.id. + */ + public Integer getId() { + return (Integer) get(0); + } + + /** + * Setter for public.article.title. + */ + public void setTitle(String value) { + set(1, value); + } + + /** + * Getter for public.article.title. + */ + public String getTitle() { + return (String) get(1); + } + + /** + * Setter for public.article.description. + */ + public void setDescription(String value) { + set(2, value); + } + + /** + * Getter for public.article.description. + */ + public String getDescription() { + return (String) get(2); + } + + /** + * Setter for public.article.author_id. + */ + public void setAuthorId(Integer value) { + set(3, value); + } + + /** + * Getter for public.article.author_id. + */ + public Integer getAuthorId() { + return (Integer) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Record4 type implementation + // ------------------------------------------------------------------------- + + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } + + @Override + public Row4 valuesRow() { + return (Row4) super.valuesRow(); + } + + @Override + public Field field1() { + return Article.ARTICLE.ID; + } + + @Override + public Field field2() { + return Article.ARTICLE.TITLE; + } + + @Override + public Field field3() { + return Article.ARTICLE.DESCRIPTION; + } + + @Override + public Field field4() { + return Article.ARTICLE.AUTHOR_ID; + } + + @Override + public Integer component1() { + return getId(); + } + + @Override + public String component2() { + return getTitle(); + } + + @Override + public String component3() { + return getDescription(); + } + + @Override + public Integer component4() { + return getAuthorId(); + } + + @Override + public Integer value1() { + return getId(); + } + + @Override + public String value2() { + return getTitle(); + } + + @Override + public String value3() { + return getDescription(); + } + + @Override + public Integer value4() { + return getAuthorId(); + } + + @Override + public ArticleRecord value1(Integer value) { + setId(value); + return this; + } + + @Override + public ArticleRecord value2(String value) { + setTitle(value); + return this; + } + + @Override + public ArticleRecord value3(String value) { + setDescription(value); + return this; + } + + @Override + public ArticleRecord value4(Integer value) { + setAuthorId(value); + return this; + } + + @Override + public ArticleRecord values(Integer value1, String value2, String value3, Integer value4) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached ArticleRecord + */ + public ArticleRecord() { + super(Article.ARTICLE); + } + + /** + * Create a detached, initialised ArticleRecord + */ + public ArticleRecord(Integer id, String title, String description, Integer authorId) { + super(Article.ARTICLE); + + set(0, id); + set(1, title); + set(2, description); + set(3, authorId); + } +} diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/AuthorRecord.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/AuthorRecord.java new file mode 100644 index 0000000000..365de20747 --- /dev/null +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/model/tables/records/AuthorRecord.java @@ -0,0 +1,217 @@ +/* + * This file is generated by jOOQ. + */ +package com.baeldung.jooq.model.tables.records; + + +import com.baeldung.jooq.model.tables.Author; +import org.jooq.Field; +import org.jooq.Record1; +import org.jooq.Record4; +import org.jooq.Row4; +import org.jooq.impl.UpdatableRecordImpl; + + +/** + * This class is generated by jOOQ. + */ +@SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AuthorRecord extends UpdatableRecordImpl implements Record4 { + + private static final long serialVersionUID = -2120822720; + + /** + * Setter for public.author.id. + */ + public void setId(Integer value) { + set(0, value); + } + + /** + * Getter for public.author.id. + */ + public Integer getId() { + return (Integer) get(0); + } + + /** + * Setter for public.author.first_name. + */ + public void setFirstName(String value) { + set(1, value); + } + + /** + * Getter for public.author.first_name. + */ + public String getFirstName() { + return (String) get(1); + } + + /** + * Setter for public.author.last_name. + */ + public void setLastName(String value) { + set(2, value); + } + + /** + * Getter for public.author.last_name. + */ + public String getLastName() { + return (String) get(2); + } + + /** + * Setter for public.author.age. + */ + public void setAge(Integer value) { + set(3, value); + } + + /** + * Getter for public.author.age. + */ + public Integer getAge() { + return (Integer) get(3); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + @Override + public Record1 key() { + return (Record1) super.key(); + } + + // ------------------------------------------------------------------------- + // Record4 type implementation + // ------------------------------------------------------------------------- + + @Override + public Row4 fieldsRow() { + return (Row4) super.fieldsRow(); + } + + @Override + public Row4 valuesRow() { + return (Row4) super.valuesRow(); + } + + @Override + public Field field1() { + return Author.AUTHOR.ID; + } + + @Override + public Field field2() { + return Author.AUTHOR.FIRST_NAME; + } + + @Override + public Field field3() { + return Author.AUTHOR.LAST_NAME; + } + + @Override + public Field field4() { + return Author.AUTHOR.AGE; + } + + @Override + public Integer component1() { + return getId(); + } + + @Override + public String component2() { + return getFirstName(); + } + + @Override + public String component3() { + return getLastName(); + } + + @Override + public Integer component4() { + return getAge(); + } + + @Override + public Integer value1() { + return getId(); + } + + @Override + public String value2() { + return getFirstName(); + } + + @Override + public String value3() { + return getLastName(); + } + + @Override + public Integer value4() { + return getAge(); + } + + @Override + public AuthorRecord value1(Integer value) { + setId(value); + return this; + } + + @Override + public AuthorRecord value2(String value) { + setFirstName(value); + return this; + } + + @Override + public AuthorRecord value3(String value) { + setLastName(value); + return this; + } + + @Override + public AuthorRecord value4(Integer value) { + setAge(value); + return this; + } + + @Override + public AuthorRecord values(Integer value1, String value2, String value3, Integer value4) { + value1(value1); + value2(value2); + value3(value3); + value4(value4); + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AuthorRecord + */ + public AuthorRecord() { + super(Author.AUTHOR); + } + + /** + * Create a detached, initialised AuthorRecord + */ + public AuthorRecord(Integer id, String firstName, String lastName, Integer age) { + super(Author.AUTHOR); + + set(0, id); + set(1, firstName); + set(2, lastName); + set(3, age); + } +} diff --git a/persistence-modules/jooq/src/test/java/com/baeldung/jooq/CrudLiveTest.java b/persistence-modules/jooq/src/test/java/com/baeldung/jooq/CrudLiveTest.java new file mode 100644 index 0000000000..d41344c08e --- /dev/null +++ b/persistence-modules/jooq/src/test/java/com/baeldung/jooq/CrudLiveTest.java @@ -0,0 +1,257 @@ +package com.baeldung.jooq; + +import com.baeldung.jooq.model.tables.Article; +import com.baeldung.jooq.model.tables.Author; +import com.baeldung.jooq.model.tables.records.ArticleRecord; +import org.jooq.DSLContext; +import org.jooq.Field; +import org.jooq.Record; +import org.jooq.Result; +import org.jooq.SQLDialect; +import org.jooq.impl.DSL; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.HashMap; + +import static com.baeldung.jooq.Crud.delete; +import static com.baeldung.jooq.Crud.getAll; +import static com.baeldung.jooq.Crud.getFields; +import static com.baeldung.jooq.Crud.getOne; +import static com.baeldung.jooq.Crud.save; +import static com.baeldung.jooq.Crud.update; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +public class CrudLiveTest { + + static DSLContext context; + + @BeforeClass + public static void setup() throws SQLException { + Connection conn = DriverManager.getConnection("jdbc:h2:mem:tes;INIT=CREATE SCHEMA IF NOT EXISTS \"public\""); + context = DSL.using(conn, SQLDialect.H2); + + context.createTable(Author.AUTHOR) + .columns( + Author.AUTHOR.ID, + Author.AUTHOR.FIRST_NAME, + Author.AUTHOR.LAST_NAME, + Author.AUTHOR.AGE + ) + .execute(); + context.createTable(Article.ARTICLE) + .columns( + Article.ARTICLE.ID, + Article.ARTICLE.TITLE, + Article.ARTICLE.DESCRIPTION, + Article.ARTICLE.AUTHOR_ID + ) + .execute(); + } + + @Before + public void cleanup() { + context.truncateTable(Article.ARTICLE) + .execute(); + context.truncateTable(Author.AUTHOR) + .execute(); + } + + @Test + public void givenArticleRecord_whenSave_thenNewRecordInDb() { + // given + ArticleRecord article = article(); + + // when + save(article); + + // then + ArticleRecord savedArticle = getOne( + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) + ); + assertEquals(savedArticle.getId().intValue(), 1); + assertEquals(savedArticle.getTitle(), "jOOQ examples"); + assertEquals(savedArticle.getDescription(), "A few examples of jOOQ CRUD operations"); + assertEquals(savedArticle.getAuthorId().intValue(), 1); + } + + @Test + public void givenArticleRecord_whenGetAll_thenValidOneRecord() { + // given + ArticleRecord article = article(); + save(article); + + // when + Result articles = getAll( + context, + Article.ARTICLE + ); + + // then + assertEquals(articles.size(), 1); + + Record record = articles.get(0); + ArticleRecord savedArticle = record.into(Article.ARTICLE); + + assertEquals(savedArticle.getId().intValue(), 1); + assertEquals(savedArticle.getTitle(), "jOOQ examples"); + assertEquals(savedArticle.getDescription(), "A few examples of jOOQ CRUD operations"); + assertEquals(savedArticle.getAuthorId().intValue(), 1); + } + + @Test + public void givenArticleRecord_whenGetOnlyTitles_thenValidOneValue() { + // given + ArticleRecord article = article(); + save(article); + + // when + Result articles = getFields( + context, + Article.ARTICLE, + Article.ARTICLE.TITLE + ); + + // then + assertEquals(articles.size(), 1); + + Record record = articles.get(0); + ArticleRecord savedArticle = record.into(Article.ARTICLE); + + assertNull(savedArticle.getId()); + assertEquals(savedArticle.getTitle(), "jOOQ examples"); + assertNull(savedArticle.getDescription()); + assertNull(savedArticle.getAuthorId()); + } + + @Test + public void givenArticleRecord_whenGetOne_thenValidRecord() { + // given + ArticleRecord article = article(); + save(article); + + // when + ArticleRecord savedArticle = getOne( + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) + ); + + // then + assertEquals(savedArticle.getId().intValue(), 1); + assertEquals(savedArticle.getTitle(), "jOOQ examples"); + assertEquals(savedArticle.getDescription(), "A few examples of jOOQ CRUD operations"); + assertEquals(savedArticle.getAuthorId().intValue(), 1); + } + + @Test + public void givenArticleRecord_whenUpdateById_thenChangedValuesDbTable() { + // given + ArticleRecord article = article(); + save(article); + + HashMap, String> updateFields = new HashMap<>(); + updateFields.put(Article.ARTICLE.TITLE, "new title"); + updateFields.put(Article.ARTICLE.DESCRIPTION, "new description"); + + // when + update( + context, + Article.ARTICLE, + updateFields, + Article.ARTICLE.ID.eq(1) + ); + + // then + ArticleRecord updatedArticle = getOne( + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) + ); + assertEquals(updatedArticle.getId().intValue(), 1); + assertEquals(updatedArticle.getTitle(), "new title"); + assertEquals(updatedArticle.getDescription(), "new description"); + assertEquals(updatedArticle.getAuthorId().intValue(), 1); + } + + @Test + public void givenArticleRecord_whenUpdate_thenChangedValuesDbTable() { + // given + ArticleRecord article = article(); + save(article); + + article.setTitle("new title"); + article.setDescription("new description"); + + // when + update(article); + + // then + ArticleRecord updatedArticle = getOne( + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) + ); + assertEquals(updatedArticle.getId().intValue(), 1); + assertEquals(updatedArticle.getTitle(), "new title"); + assertEquals(updatedArticle.getDescription(), "new description"); + assertEquals(updatedArticle.getAuthorId().intValue(), 1); + } + + @Test + public void givenArticleRecord_whenDelete_thenEmptyDbTable() { + // given + ArticleRecord article = article(); + save(article); + + // when + delete(article); + + // then + Result articles = getAll( + context, + Article.ARTICLE + ); + assertTrue(articles.isEmpty()); + } + + @Test + public void givenArticleRecord_whenDeleteById_thenEmptyDbTable() { + // given + ArticleRecord article = article(); + save(article); + + // when + delete( + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) + ); + + // then + Result articles = getAll( + context, + Article.ARTICLE + ); + assertTrue(articles.isEmpty()); + } + + private ArticleRecord article() { + ArticleRecord article = context.newRecord(Article.ARTICLE); + article.setId(1); + article.setTitle("jOOQ examples"); + article.setDescription("A few examples of jOOQ CRUD operations"); + article.setAuthorId(1); + + return article; + } + +} diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index def2deb941..590e5da76e 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -39,6 +39,7 @@ java-jpa-2 java-mongodb jnosql + jooq jpa-hibernate-cascade-type liquibase orientdb From c6b1da41802030e665206c9c8bc3f22eabf1cc22 Mon Sep 17 00:00:00 2001 From: fdpro Date: Sat, 26 Sep 2020 08:23:21 +0200 Subject: [PATCH 139/260] [JAVA-1669] Added missing byte-buddy dependency --- persistence-modules/spring-jpa-2/pom.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/persistence-modules/spring-jpa-2/pom.xml b/persistence-modules/spring-jpa-2/pom.xml index 1c21f6b98d..8d8dfe3a7b 100644 --- a/persistence-modules/spring-jpa-2/pom.xml +++ b/persistence-modules/spring-jpa-2/pom.xml @@ -66,6 +66,11 @@ guava ${guava.version} + + net.bytebuddy + byte-buddy + ${byte-buddy.version} + @@ -85,13 +90,14 @@ 5.1.5.RELEASE + 2.2.6.RELEASE 9.0.0.M26 21.0 - 2.2.6.RELEASE + 1.10.16 \ No newline at end of file From ce9356179e75db29685d44577914bcfc0c3183d6 Mon Sep 17 00:00:00 2001 From: fdpro Date: Mon, 14 Sep 2020 20:49:03 +0200 Subject: [PATCH 140/260] [JAVA-1671] Upgraded JUnit and Maven Surefire Plugin versions * For modules inheriting from spring-cloud directly * Other modules as well --- spring-cloud/pom.xml | 24 +++++++++++++++++++ spring-cloud/spring-cloud-aws/pom.xml | 5 ++++ .../spring-cloud-bootstrap/config/pom.xml | 12 ++++++++++ .../customer-service/pom.xml | 5 ++++ .../spring-cloud-bootstrap/discovery/pom.xml | 5 ++++ .../spring-cloud-bootstrap/gateway/pom.xml | 5 ++++ .../order-service/order-client/pom.xml | 1 - .../order-service/pom.xml | 12 ++++++++++ .../spring-cloud-bootstrap/svc-book/pom.xml | 5 ++++ .../spring-cloud-bootstrap/svc-rating/pom.xml | 5 ++++ .../spring-cloud-bootstrap/zipkin/pom.xml | 12 ++++++++++ .../spring-cloud-config/client/pom.xml | 1 - spring-cloud/spring-cloud-config/pom.xml | 12 ++++++++++ .../spring-cloud-config/server/pom.xml | 1 - .../spring-cloud-connectors-heroku/pom.xml | 5 ++++ .../spring-cloud-eureka-client/pom.xml | 7 ++++++ .../spring-cloud-eureka-feign-client/pom.xml | 7 ++++++ .../spring-cloud-eureka-server/pom.xml | 7 ++++++ spring-cloud/spring-cloud-functions/pom.xml | 5 ++++ spring-cloud/spring-cloud-gateway/pom.xml | 15 +++++------- .../feign-rest-consumer/pom.xml | 7 ++++++ .../rest-consumer/pom.xml | 7 ++++++ .../kubernetes-minikube/demo-frontend/pom.xml | 1 - spring-cloud/spring-cloud-kubernetes/pom.xml | 6 +++++ .../spring-cloud-rest-books-api/pom.xml | 14 ++++++++++- .../spring-cloud-rest-config-server/pom.xml | 12 ++++++++++ .../pom.xml | 12 ++++++++++ .../spring-cloud-rest-reviews-api/pom.xml | 12 ++++++++++ .../spring-cloud-ribbon-client/pom.xml | 12 ++++++++++ .../spring-cloud-ribbon-retry/pom.xml | 12 ++++++++++ spring-cloud/spring-cloud-security/pom.xml | 6 +++++ .../spring-cloud-stream-kafka/pom.xml | 5 ++++ .../spring-cloud-stream-kinesis/pom.xml | 5 ++++ spring-cloud/spring-cloud-task/pom.xml | 12 ++++++++++ spring-cloud/spring-cloud-vault/pom.xml | 5 ++++ .../api-gateway/pom.xml | 8 +++++++ .../weather-service/pom.xml | 7 ++++++ spring-cloud/spring-cloud-zuul/pom.xml | 12 ++++++++++ .../spring-zuul-rate-limiting/pom.xml | 12 ---------- 39 files changed, 292 insertions(+), 26 deletions(-) diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index ee7b80ffc1..928db8adb7 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -58,6 +58,25 @@ + + + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + + + org.springframework.boot + spring-boot-dependencies + ${spring-boot.version} + pom + import + + + + Hoxton.SR4 2.2.3.RELEASE @@ -68,6 +87,11 @@ 3.0.6.RELEASE 2.3.1.RELEASE 2.3.1.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-aws/pom.xml b/spring-cloud/spring-cloud-aws/pom.xml index 2b05020888..3952ffdec1 100644 --- a/spring-cloud/spring-cloud-aws/pom.xml +++ b/spring-cloud/spring-cloud-aws/pom.xml @@ -67,6 +67,11 @@ com.baeldung.spring.cloud.aws.SpringCloudAwsApplication Dalston.SR4 2.2.1.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index 67831d0c7f..65a9830495 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -30,6 +30,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -42,6 +49,11 @@ Brixton.SR7 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml b/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml index 8fcf4adadb..026a7a1841 100644 --- a/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml @@ -78,5 +78,10 @@ 1.8 1.8 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index 46550031e1..eaebaacc4d 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -51,6 +51,11 @@ Edgware.SR5 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index 10a04db197..aacd2cdbf7 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -100,6 +100,11 @@ Dalston.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/order-service/order-client/pom.xml b/spring-cloud/spring-cloud-bootstrap/order-service/order-client/pom.xml index 4c8cf742b1..01e8afeec3 100644 --- a/spring-cloud/spring-cloud-bootstrap/order-service/order-client/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/order-service/order-client/pom.xml @@ -14,5 +14,4 @@ order-service 1.0.0-SNAPSHOT - diff --git a/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml b/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml index a1c6c1c39f..04901f9936 100644 --- a/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml @@ -23,6 +23,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.boot spring-boot-dependencies @@ -118,5 +125,10 @@ 1.8 1.8 com.baeldung.orderservice.OrderApplication + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml b/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml index 36227f93c6..cf34e44f24 100644 --- a/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml @@ -73,6 +73,11 @@ Dalston.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml b/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml index 0a01488628..a232861cad 100644 --- a/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml @@ -82,6 +82,11 @@ Dalston.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml b/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml index bf7525a8e4..134038b94a 100644 --- a/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml @@ -38,6 +38,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -50,6 +57,11 @@ Brixton.SR7 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-config/client/pom.xml b/spring-cloud/spring-cloud-config/client/pom.xml index 4f4a420238..805a50bfdb 100644 --- a/spring-cloud/spring-cloud-config/client/pom.xml +++ b/spring-cloud/spring-cloud-config/client/pom.xml @@ -36,5 +36,4 @@ - diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml index 8411a65500..e693bc7a29 100644 --- a/spring-cloud/spring-cloud-config/pom.xml +++ b/spring-cloud/spring-cloud-config/pom.xml @@ -22,6 +22,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -34,6 +41,11 @@ Hoxton.SR4 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-config/server/pom.xml b/spring-cloud/spring-cloud-config/server/pom.xml index 9574834457..e32a473cd6 100644 --- a/spring-cloud/spring-cloud-config/server/pom.xml +++ b/spring-cloud/spring-cloud-config/server/pom.xml @@ -40,5 +40,4 @@ - diff --git a/spring-cloud/spring-cloud-connectors-heroku/pom.xml b/spring-cloud/spring-cloud-connectors-heroku/pom.xml index 7d85e07bb8..2e84061be9 100644 --- a/spring-cloud/spring-cloud-connectors-heroku/pom.xml +++ b/spring-cloud/spring-cloud-connectors-heroku/pom.xml @@ -64,6 +64,11 @@ Hoxton.SR4 42.2.10 1.10.10 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml index d82ee6566d..dc6a1ae236 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-client/pom.xml @@ -17,6 +17,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml index 1ecc50a81f..e0d63dc15d 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-feign-client/pom.xml @@ -17,6 +17,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml index 627be513ba..9c0a933753 100644 --- a/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-eureka/spring-cloud-eureka-server/pom.xml @@ -17,6 +17,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-functions/pom.xml b/spring-cloud/spring-cloud-functions/pom.xml index 7e6f5dfbdc..19b5e3cd8d 100644 --- a/spring-cloud/spring-cloud-functions/pom.xml +++ b/spring-cloud/spring-cloud-functions/pom.xml @@ -86,6 +86,11 @@ 2.0.2 1.1.0 1.0.10.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-gateway/pom.xml b/spring-cloud/spring-cloud-gateway/pom.xml index bbacf7a8ce..c9c087d738 100644 --- a/spring-cloud/spring-cloud-gateway/pom.xml +++ b/spring-cloud/spring-cloud-gateway/pom.xml @@ -17,19 +17,16 @@ - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud-dependencies.version} + org.junit + junit-bom + ${junit-jupiter.version} pom import - - - org.junit - junit-bom - ${junit-bom.version} + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud-dependencies.version} pom import diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml index acb9993881..9b43542f02 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml @@ -17,6 +17,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml index ba03ad3348..7989b09ed4 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml @@ -16,6 +16,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-kubernetes/kubernetes-minikube/demo-frontend/pom.xml b/spring-cloud/spring-cloud-kubernetes/kubernetes-minikube/demo-frontend/pom.xml index 9a4924b903..004fabeb09 100644 --- a/spring-cloud/spring-cloud-kubernetes/kubernetes-minikube/demo-frontend/pom.xml +++ b/spring-cloud/spring-cloud-kubernetes/kubernetes-minikube/demo-frontend/pom.xml @@ -33,5 +33,4 @@ - diff --git a/spring-cloud/spring-cloud-kubernetes/pom.xml b/spring-cloud/spring-cloud-kubernetes/pom.xml index ed4bccbf78..c936024753 100644 --- a/spring-cloud/spring-cloud-kubernetes/pom.xml +++ b/spring-cloud/spring-cloud-kubernetes/pom.xml @@ -24,4 +24,10 @@ kubernetes-guide/travel-agency-service + + + 2.22.2 + 5.6.2 + 4.13 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml index 042f7657ab..1dcf14f104 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml @@ -18,6 +18,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -65,7 +72,12 @@ org.springframework.boot spring-boot-starter-data-redis - + + + 2.22.2 + 5.6.2 + 4.13 + diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml index 5fb9364752..736b8bdf78 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml @@ -18,6 +18,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -45,6 +52,11 @@ Camden.SR4 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml index 5e35a7c0f5..12f8b6ae6a 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml @@ -18,6 +18,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -53,6 +60,11 @@ Edgware.SR4 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml index 7503418ad2..0e7aed7f6a 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml @@ -18,6 +18,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -75,6 +82,11 @@ 3.0.1 0.6 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml index e19d3beaad..ce57cfd7d3 100644 --- a/spring-cloud/spring-cloud-ribbon-client/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml @@ -16,6 +16,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -39,6 +46,11 @@ Hoxton.SR4 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-ribbon-retry/pom.xml b/spring-cloud/spring-cloud-ribbon-retry/pom.xml index 27037d6710..198473d5e5 100644 --- a/spring-cloud/spring-cloud-ribbon-retry/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-retry/pom.xml @@ -23,6 +23,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent @@ -48,5 +55,10 @@ Hoxton.SR3 + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/pom.xml b/spring-cloud/spring-cloud-security/pom.xml index 498c88ac48..0997b1f3aa 100644 --- a/spring-cloud/spring-cloud-security/pom.xml +++ b/spring-cloud/spring-cloud-security/pom.xml @@ -20,4 +20,10 @@ auth-server + + + 2.22.2 + 5.6.2 + 4.13 + diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml index 669499efb7..3283d4d07c 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml @@ -105,6 +105,11 @@ Greenwich.SR1 4.0.0 1.8.2 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml index 9e706cc239..d3182433e9 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml @@ -43,6 +43,11 @@ 1.11.632 2.0.2.RELEASE 2.2.1.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-task/pom.xml b/spring-cloud/spring-cloud-task/pom.xml index e2006ee9d3..bb18c1390b 100644 --- a/spring-cloud/spring-cloud-task/pom.xml +++ b/spring-cloud/spring-cloud-task/pom.xml @@ -22,6 +22,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-task-dependencies @@ -42,6 +49,11 @@ Hoxton.SR4 2.2.3.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-vault/pom.xml b/spring-cloud/spring-cloud-vault/pom.xml index d9ae6b515f..a713e47fe2 100644 --- a/spring-cloud/spring-cloud-vault/pom.xml +++ b/spring-cloud/spring-cloud-vault/pom.xml @@ -83,6 +83,11 @@ Greenwich.RELEASE + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml index 136461ccb9..4e092736a5 100644 --- a/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml +++ b/spring-cloud/spring-cloud-zuul-fallback/api-gateway/pom.xml @@ -12,10 +12,18 @@ com.baeldung.spring.cloud spring-cloud-zuul-fallback 1.0.0-SNAPSHOT + ../pom.xml + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml b/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml index bafd4ffcd1..d2914b48bf 100644 --- a/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml +++ b/spring-cloud/spring-cloud-zuul-fallback/weather-service/pom.xml @@ -15,6 +15,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-starter-parent diff --git a/spring-cloud/spring-cloud-zuul/pom.xml b/spring-cloud/spring-cloud-zuul/pom.xml index b3c66dd1c6..3884e67388 100644 --- a/spring-cloud/spring-cloud-zuul/pom.xml +++ b/spring-cloud/spring-cloud-zuul/pom.xml @@ -24,6 +24,13 @@ + + org.junit + junit-bom + ${junit-jupiter.version} + pom + import + org.springframework.cloud spring-cloud-dependencies @@ -73,6 +80,11 @@ Hoxton.SR4 + + + 2.22.2 + 5.6.2 + 4.13 diff --git a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml index 8873282d1e..b42d32b6b3 100644 --- a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml +++ b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml @@ -13,18 +13,6 @@ 0.0.1-SNAPSHOT - - - - org.springframework.cloud - spring-cloud-dependencies - ${spring-cloud.version} - pom - import - - - - com.marcosbarbero.cloud From 428e8dac62b901208872dde784e7eb9379cb369d Mon Sep 17 00:00:00 2001 From: Kai Yuan Date: Thu, 17 Sep 2020 00:20:42 +0200 Subject: [PATCH 141/260] [BAEL-4532]a.getClass() vs A.class --- .../com/baeldung/getclassobject/Animal.java | 5 ++ .../com/baeldung/getclassobject/Monkey.java | 4 ++ .../getclassobject/SomeAbstractClass.java | 4 ++ .../getclassobject/SomeInterface.java | 4 ++ .../baeldung/getclassobject/SomeUtils.java | 9 +++ .../GetClassObjectUnitTest.java | 55 +++++++++++++++++++ 6 files changed, 81 insertions(+) create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Animal.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Monkey.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeAbstractClass.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeInterface.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeUtils.java create mode 100644 core-java-modules/core-java-lang-3/src/test/java/com/baeldung/getclassobject/GetClassObjectUnitTest.java diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Animal.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Animal.java new file mode 100644 index 0000000000..426f1403af --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Animal.java @@ -0,0 +1,5 @@ +package com.baeldung.getclassobject; + +public class Animal { + protected int numberOfEyes; +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Monkey.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Monkey.java new file mode 100644 index 0000000000..76ad8a96e3 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/Monkey.java @@ -0,0 +1,4 @@ +package com.baeldung.getclassobject; + +public class Monkey extends Animal { +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeAbstractClass.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeAbstractClass.java new file mode 100644 index 0000000000..7ee34cf62a --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeAbstractClass.java @@ -0,0 +1,4 @@ +package com.baeldung.getclassobject; + +public abstract class SomeAbstractClass { +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeInterface.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeInterface.java new file mode 100644 index 0000000000..eec8048481 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeInterface.java @@ -0,0 +1,4 @@ +package com.baeldung.getclassobject; + +interface SomeInterface { +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeUtils.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeUtils.java new file mode 100644 index 0000000000..294ef5bc9e --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/getclassobject/SomeUtils.java @@ -0,0 +1,9 @@ +package com.baeldung.getclassobject; + +public class SomeUtils { + private SomeUtils() { + throw new RuntimeException("This Util class is not allowed to be instantiated!"); + } + // public static utilMethods + // ... +} diff --git a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/getclassobject/GetClassObjectUnitTest.java b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/getclassobject/GetClassObjectUnitTest.java new file mode 100644 index 0000000000..20b5b8e0c8 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/getclassobject/GetClassObjectUnitTest.java @@ -0,0 +1,55 @@ +package com.baeldung.getclassobject; + +import org.junit.Test; + +import static org.junit.Assert.*; + +public class GetClassObjectUnitTest { + @Test + public void givenObjectAndType_whenGettingClassObject_thenTwoMethodsHaveTheSameResult() { + String str = "I am an object of the String class"; + Class fromStrObject = str.getClass(); + Class clazz = String.class; + assertSame(fromStrObject, clazz); + } + + @Test + public void givenClassInheritance_whenGettingRuntimeTypeAndStaticType_thenGetDifferentResult() { + Animal animal = new Monkey(); + Class runtimeType = animal.getClass(); + Class staticType = Animal.class; + //Not equals + assertNotEquals(staticType, runtimeType); + + Class monkeyClass = Monkey.class; + assertSame(runtimeType, monkeyClass); + } + + @Test + public void givenPrimitiveType_whenGettingClassObject_thenOnlyStaticTypeWorks() { + int number = 7; + // Class numberClass = number.getClass(); <-- compilation error + Class intType = int.class; + + assertNotNull(intType); + assertEquals("int", intType.getName()); + assertTrue(intType.isPrimitive()); + } + + @Test + public void givenTypeCannotInstantiate_whenGetTypeStatically_thenGetTypesSuccefully() { + Class interfaceType = SomeInterface.class; + Class abstractClassType = SomeAbstractClass.class; + Class utilClassType = SomeUtils.class; + + assertNotNull(interfaceType); + assertTrue(interfaceType.isInterface()); + assertEquals("SomeInterface", interfaceType.getSimpleName()); + + assertNotNull(abstractClassType); + assertEquals("SomeAbstractClass", abstractClassType.getSimpleName()); + + assertNotNull(utilClassType); + assertEquals("SomeUtils", utilClassType.getSimpleName()); + } +} From 70203a988b81a564cf281ed1b94efd6b0b6e9809 Mon Sep 17 00:00:00 2001 From: Ronald Dehuysser Date: Sat, 26 Sep 2020 23:14:11 +0200 Subject: [PATCH 142/260] [BAEL-4639] Running background jobs in Spring with JobRunr (#10089) * [BAEL-4639] Running background jobs in Spring with JobRunr * [BAEL-4639] Background jobs in Spring with JobRunr - update dependencies and readme * [BAEL-4639] Background jobs in Spring with JobRunr - add required newline to application.properties * [BAEL-4639] Background jobs in Spring with JobRunr - Make sure link is correct * [BAEL-4639] Background jobs in Spring with JobRunr - Cleanup and LiveTest added * [BAEL-4639] - Feedback * [BAEL-4639] Update test with feedback --- spring-boot-modules/pom.xml | 1 + .../spring-boot-libraries-2/README.md | 7 +++ .../spring-boot-libraries-2/pom.xml | 46 +++++++++++++++++++ .../jobrunr/JobRunrSpringBootApp.java | 37 +++++++++++++++ .../jobrunr/controller/JobRunrController.java | 43 +++++++++++++++++ .../jobrunr/service/SampleJobService.java | 36 +++++++++++++++ .../src/main/resources/application.properties | 2 + .../com/baeldung/jobrunr/JobRunrLiveTest.java | 46 +++++++++++++++++++ 8 files changed, 218 insertions(+) create mode 100644 spring-boot-modules/spring-boot-libraries-2/README.md create mode 100644 spring-boot-modules/spring-boot-libraries-2/pom.xml create mode 100644 spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/JobRunrSpringBootApp.java create mode 100644 spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/controller/JobRunrController.java create mode 100644 spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/service/SampleJobService.java create mode 100644 spring-boot-modules/spring-boot-libraries-2/src/main/resources/application.properties create mode 100644 spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/jobrunr/JobRunrLiveTest.java diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml index 527f7dcad8..fa70a9f058 100644 --- a/spring-boot-modules/pom.xml +++ b/spring-boot-modules/pom.xml @@ -46,6 +46,7 @@ spring-boot-jasypt spring-boot-keycloak spring-boot-libraries + spring-boot-libraries-2 spring-boot-logging-log4j2 spring-boot-kotlin spring-boot-mvc diff --git a/spring-boot-modules/spring-boot-libraries-2/README.md b/spring-boot-modules/spring-boot-libraries-2/README.md new file mode 100644 index 0000000000..b0840798e3 --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/README.md @@ -0,0 +1,7 @@ +## Spring Boot Libraries + +This module contains articles about various Spring Boot libraries + +### Relevant Articles: + +- Running background jobs in Spring with JobRunr diff --git a/spring-boot-modules/spring-boot-libraries-2/pom.xml b/spring-boot-modules/spring-boot-libraries-2/pom.xml new file mode 100644 index 0000000000..2633c8fad3 --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/pom.xml @@ -0,0 +1,46 @@ + + + + spring-boot-modules + com.baeldung.spring-boot-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + spring-boot-libraries-2 + + + + org.springframework.boot + spring-boot-starter-web + + + + + org.jobrunr + jobrunr-spring-boot-starter + ${jobrunr.version} + + + + org.springframework.boot + spring-boot-starter-test + test + + + + org.awaitility + awaitility + ${awaitility.version} + test + + + + + 1.0.0 + 4.0.3 + + + \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/JobRunrSpringBootApp.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/JobRunrSpringBootApp.java new file mode 100644 index 0000000000..d72e9464d9 --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/JobRunrSpringBootApp.java @@ -0,0 +1,37 @@ +package com.baeldung.jobrunr; + +import com.baeldung.jobrunr.service.SampleJobService; +import org.jobrunr.jobs.mappers.JobMapper; +import org.jobrunr.scheduling.JobScheduler; +import org.jobrunr.scheduling.cron.Cron; +import org.jobrunr.storage.InMemoryStorageProvider; +import org.jobrunr.storage.StorageProvider; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +import javax.annotation.PostConstruct; + +@SpringBootApplication +public class JobRunrSpringBootApp { + + @Autowired + private JobScheduler jobScheduler; + + public static void main(String[] args) { + SpringApplication.run(JobRunrSpringBootApp.class, args); + } + + @Bean + public StorageProvider storageProvider(JobMapper jobMapper) { + InMemoryStorageProvider storageProvider = new InMemoryStorageProvider(); + storageProvider.setJobMapper(jobMapper); + return storageProvider; + } + + @PostConstruct + public void scheduleRecurrently() { + jobScheduler.scheduleRecurrently(x -> x.executeSampleJob("a recurring job"), Cron.every5minutes()); + } +} diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/controller/JobRunrController.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/controller/JobRunrController.java new file mode 100644 index 0000000000..af5f0b1196 --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/controller/JobRunrController.java @@ -0,0 +1,43 @@ +package com.baeldung.jobrunr.controller; + +import com.baeldung.jobrunr.service.SampleJobService; +import org.jobrunr.scheduling.JobScheduler; +import org.springframework.boot.context.properties.bind.DefaultValue; +import org.springframework.format.annotation.DateTimeFormat; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.time.LocalDateTime; + +@RestController +@RequestMapping("/jobrunr") +public class JobRunrController { + + private JobScheduler jobScheduler; + private SampleJobService sampleJobService; + + private JobRunrController(JobScheduler jobScheduler, SampleJobService sampleJobService) { + this.jobScheduler = jobScheduler; + this.sampleJobService = sampleJobService; + } + + @GetMapping(value = "/enqueue/{input}", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity enqueue(@PathVariable("input") @DefaultValue("default-input") String input) { + jobScheduler.enqueue(() -> sampleJobService.executeSampleJob(input)); + return okResponse("job enqueued successfully"); + } + + @GetMapping(value = "/schedule/{input}", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity schedule( + @PathVariable("input") @DefaultValue("default-input") String input, + @RequestParam("scheduleAt") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) LocalDateTime scheduleAt) { + jobScheduler.schedule(() -> sampleJobService.executeSampleJob(input), scheduleAt); + return okResponse("job scheduled successfully"); + } + + private ResponseEntity okResponse(String feedback) { + return new ResponseEntity<>(feedback, HttpStatus.OK); + } +} diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/service/SampleJobService.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/service/SampleJobService.java new file mode 100644 index 0000000000..dff4309374 --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/jobrunr/service/SampleJobService.java @@ -0,0 +1,36 @@ +package com.baeldung.jobrunr.service; + +import org.jobrunr.jobs.annotations.Job; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.util.concurrent.atomic.AtomicInteger; + +@Service +public class SampleJobService { + + public static final long EXECUTION_TIME = 5000L; + + private Logger logger = LoggerFactory.getLogger(getClass()); + + private AtomicInteger count = new AtomicInteger(); + + @Job(name = "The sample job with variable %0", retries = 2) + public void executeSampleJob(String variable) { + + logger.info("The sample job has begun. The variable you passed is {}", variable); + try { + Thread.sleep(EXECUTION_TIME); + } catch (InterruptedException e) { + logger.error("Error while executing sample job", e); + } finally { + count.incrementAndGet(); + logger.info("Sample job has finished..."); + } + } + + public int getNumberOfInvocations() { + return count.get(); + } +} diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/resources/application.properties b/spring-boot-modules/spring-boot-libraries-2/src/main/resources/application.properties new file mode 100644 index 0000000000..69f5a7356e --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/src/main/resources/application.properties @@ -0,0 +1,2 @@ +org.jobrunr.background_job_server=true +org.jobrunr.dashboard=true diff --git a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/jobrunr/JobRunrLiveTest.java b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/jobrunr/JobRunrLiveTest.java new file mode 100644 index 0000000000..83222e7726 --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/jobrunr/JobRunrLiveTest.java @@ -0,0 +1,46 @@ +package com.baeldung.jobrunr; + +import org.awaitility.Awaitility; +import org.jobrunr.jobs.states.StateName; +import org.jobrunr.storage.StorageProvider; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.test.context.junit4.SpringRunner; + +import java.net.URI; +import java.util.concurrent.TimeUnit; + +import static org.awaitility.Awaitility.await; +import static org.junit.Assert.assertEquals; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.DEFINED_PORT; + +@RunWith(SpringRunner.class) +@SpringBootTest(webEnvironment = DEFINED_PORT, classes = JobRunrSpringBootApp.class) +public class JobRunrLiveTest { + + @Autowired + TestRestTemplate restTemplate; + + @Autowired + StorageProvider storageProvider; + + @Test + public void givenEndpoint_whenJobEnqueued_thenJobIsProcessedWithin30Seconds() { + String response = enqueueJobViaRest("some-input"); + assertEquals("job enqueued successfully", response); + + await().atMost(30, TimeUnit.SECONDS).until(() -> storageProvider.countJobs(StateName.SUCCEEDED) == 1); + } + + private String enqueueJobViaRest(String input) { + try { + return restTemplate.getForObject(new URI("http://localhost:8080/jobrunr/enqueue/" + input), String.class); + } catch (Exception ignored) { + ignored.printStackTrace(); + } + return null; + } +} From 76c4f84e641570c4f8e4044c52831fb4f541866a Mon Sep 17 00:00:00 2001 From: Lachezar Atanasov <53919277+lachezarat@users.noreply.github.com> Date: Sun, 27 Sep 2020 11:44:45 +0300 Subject: [PATCH 143/260] Update README.md --- algorithms-miscellaneous-1/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-1/README.md b/algorithms-miscellaneous-1/README.md index 25e2733538..77c621339a 100644 --- a/algorithms-miscellaneous-1/README.md +++ b/algorithms-miscellaneous-1/README.md @@ -10,4 +10,4 @@ This module contains articles about algorithms. Some classes of algorithms, e.g. - [Introduction to Minimax Algorithm](https://www.baeldung.com/java-minimax-algorithm) - [How to Calculate Levenshtein Distance in Java?](https://www.baeldung.com/java-levenshtein-distance) - [How to Find the Kth Largest Element in Java](https://www.baeldung.com/java-kth-largest-element) -- More articles: [[next -->]](/../algorithms-miscellaneous-2) +- More articles: [[next -->]](/algorithms-miscellaneous-2) From 60201640d966b0ead5d6f35c28c8f79948ba4bed Mon Sep 17 00:00:00 2001 From: Lachezar Atanasov <53919277+lachezarat@users.noreply.github.com> Date: Sun, 27 Sep 2020 11:45:13 +0300 Subject: [PATCH 144/260] Update README.md --- algorithms-miscellaneous-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-2/README.md b/algorithms-miscellaneous-2/README.md index 26737b61f0..265416534e 100644 --- a/algorithms-miscellaneous-2/README.md +++ b/algorithms-miscellaneous-2/README.md @@ -14,4 +14,4 @@ This module contains articles about algorithms. Some classes of algorithms, e.g. - [Displaying Money Amounts in Words](https://www.baeldung.com/java-money-into-words) - [A Collaborative Filtering Recommendation System in Java](https://www.baeldung.com/java-collaborative-filtering-recommendations) - [Implementing A* Pathfinding in Java](https://www.baeldung.com/java-a-star-pathfinding) -- More articles: [[<-- prev]](/../algorithms-miscellaneous-1) [[next -->]](/../algorithms-miscellaneous-3) +- More articles: [[<-- prev]](/algorithms-miscellaneous-1) [[next -->]](/algorithms-miscellaneous-3) From 0055fb2e1b9b27b102c69ba7502c7445d3b2ea0e Mon Sep 17 00:00:00 2001 From: Lachezar Atanasov <53919277+lachezarat@users.noreply.github.com> Date: Sun, 27 Sep 2020 11:45:57 +0300 Subject: [PATCH 145/260] Update README.md --- algorithms-miscellaneous-5/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-5/README.md b/algorithms-miscellaneous-5/README.md index 3e6eeb4c93..e5d46ace1c 100644 --- a/algorithms-miscellaneous-5/README.md +++ b/algorithms-miscellaneous-5/README.md @@ -15,5 +15,5 @@ This module contains articles about algorithms. Some classes of algorithms, e.g. - [Maximum Subarray Problem](https://www.baeldung.com/java-maximum-subarray) - [How to Merge Two Sorted Arrays](https://www.baeldung.com/java-merge-sorted-arrays) - [Median of Stream of Integers using Heap](https://www.baeldung.com/java-stream-integers-median-using-heap) -- More articles: [[<-- prev]](/../algorithms-miscellaneous-4) [[next -->]](/../algorithms-miscellaneous-6) +- More articles: [[<-- prev]](/algorithms-miscellaneous-4) [[next -->]](/algorithms-miscellaneous-6) From 0a9ccbfeddbc2cd33f85276f270bf64cd676911c Mon Sep 17 00:00:00 2001 From: Lachezar Atanasov <53919277+lachezarat@users.noreply.github.com> Date: Sun, 27 Sep 2020 11:46:14 +0300 Subject: [PATCH 146/260] Update README.md --- algorithms-miscellaneous-6/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/algorithms-miscellaneous-6/README.md b/algorithms-miscellaneous-6/README.md index 6ddae75f43..70acb69b6f 100644 --- a/algorithms-miscellaneous-6/README.md +++ b/algorithms-miscellaneous-6/README.md @@ -9,4 +9,4 @@ - [The Caesar Cipher in Java](https://www.baeldung.com/java-caesar-cipher) - [Implementing a 2048 Solver in Java](https://www.baeldung.com/2048-java-solver) - [Finding Top K Elements in an Array](https://www.baeldung.com/java-array-top-elements) -- More articles: [[<-- prev]](/../algorithms-miscellaneous-5) +- More articles: [[<-- prev]](/algorithms-miscellaneous-5) From 29c91cde2e39b7dbb8c29ffde57444da97e6914c Mon Sep 17 00:00:00 2001 From: Anirban Chatterjee Date: Mon, 28 Sep 2020 01:24:17 +0200 Subject: [PATCH 147/260] Added component scan and auto configuration annotations --- .../EmployeeApplication.java | 26 +++++++++++++++++++ .../doctor/Doctor.java | 7 +++++ .../employee/Employee.java | 7 +++++ .../employee/SeniorEmployee.java | 7 +++++ .../student/Student.java | 7 +++++ .../teacher/Teacher.java | 7 +++++ 6 files changed, 61 insertions(+) create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java new file mode 100644 index 0000000000..108dd1a695 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java @@ -0,0 +1,26 @@ +package com.baeldung.annotations.componentscanautoconfigure; + +import com.baeldung.annotations.componentscanautoconfigure.teacher.Teacher; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.autoconfigure.aop.AopAutoConfiguration; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackages = {"com.baeldung.annotations.componentscanautoconfigure.doctor", "com.baeldung.annotations.componentscanautoconfigure.employee"}, + basePackageClasses = Teacher.class) +@EnableAutoConfiguration(exclude={AopAutoConfiguration.class}) +//@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.aop"}) +public class EmployeeApplication { + + public static void main(String[] args) { + ApplicationContext context = SpringApplication.run(EmployeeApplication.class, args); + System.out.println("Configures Doctor: " + context.containsBeanDefinition("doctor")); + System.out.println("Configures Employee: " + context.containsBeanDefinition("employee")); + System.out.println("Configures Senior Employee: " + context.containsBeanDefinition("seniorEmployee")); + System.out.println("Configures Student: " + context.containsBeanDefinition("student")); + System.out.println("Configures Teacher: " + context.containsBeanDefinition("teacher")); + } +} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java new file mode 100644 index 0000000000..40bb68259a --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java @@ -0,0 +1,7 @@ +package com.baeldung.annotations.componentscanautoconfigure.doctor; + +import org.springframework.stereotype.Component; + +@Component("doctor") +public class Doctor { +} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java new file mode 100644 index 0000000000..bdc0b3f2d9 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java @@ -0,0 +1,7 @@ +package com.baeldung.annotations.componentscanautoconfigure.employee; + +import org.springframework.stereotype.Component; + +@Component("employee") +public class Employee { +} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java new file mode 100644 index 0000000000..fc02a17df6 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java @@ -0,0 +1,7 @@ +package com.baeldung.annotations.componentscanautoconfigure.employee; + +import org.springframework.stereotype.Component; + +@Component("seniorEmployee") +public class SeniorEmployee { +} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java new file mode 100644 index 0000000000..820d0bea10 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java @@ -0,0 +1,7 @@ +package com.baeldung.annotations.componentscanautoconfigure.student; + +import org.springframework.stereotype.Component; + +@Component("student") +public class Student { +} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java new file mode 100644 index 0000000000..699b8ccfb4 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java @@ -0,0 +1,7 @@ +package com.baeldung.annotations.componentscanautoconfigure.teacher; + +import org.springframework.stereotype.Component; + +@Component("teacher") +public class Teacher { +} From e134c020ceb050ecacfb23509f1a8418fe481e41 Mon Sep 17 00:00:00 2001 From: Oussama BEN MAHMOUD Date: Mon, 28 Sep 2020 10:43:07 +0200 Subject: [PATCH 148/260] BAEL-4443 Reading HTTP ResponseBody as a String --- httpclient-2/pom.xml | 29 ++++++++++++++++ .../ApacheHttpClientUnitTest.java | 26 ++++++++++++++ .../HttpClientUnitTest.java | 29 ++++++++++++++++ .../HttpUrlConnectionUnitTest.java | 34 +++++++++++++++++++ .../SpringRestTemplateUnitTest.java | 17 ++++++++++ pom.xml | 4 +-- 6 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/ApacheHttpClientUnitTest.java create mode 100644 httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpClientUnitTest.java create mode 100644 httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpUrlConnectionUnitTest.java create mode 100644 httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/SpringRestTemplateUnitTest.java diff --git a/httpclient-2/pom.xml b/httpclient-2/pom.xml index 1a27d9b5fe..7638c692dc 100644 --- a/httpclient-2/pom.xml +++ b/httpclient-2/pom.xml @@ -4,6 +4,7 @@ 4.0.0 httpclient-2 0.1-SNAPSHOT + httpclient-2 com.baeldung @@ -13,6 +14,7 @@ + org.apache.httpcomponents httpclient @@ -24,6 +26,19 @@ + + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot.version} + + + org.springframework.boot + spring-boot-starter-test + ${spring-boot.version} + test + @@ -34,10 +49,24 @@ true + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source.version} + ${maven.compiler.target.version} + + + 4.5.8 + 11 + 11 + 2.1.7.RELEASE \ No newline at end of file diff --git a/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/ApacheHttpClientUnitTest.java b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/ApacheHttpClientUnitTest.java new file mode 100644 index 0000000000..5a638b2bd5 --- /dev/null +++ b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/ApacheHttpClientUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.httpclient.readresponsebodystring; + +import org.apache.http.HttpEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.util.EntityUtils; +import org.junit.Test; + +import java.io.IOException; + +public class ApacheHttpClientUnitTest { + public static final String DUMMY_URL = "https://postman-echo.com/get"; + + @Test + public void whenUseApacheHttpClient_thenCorrect() throws IOException { + HttpGet request = new HttpGet(DUMMY_URL); + + try (CloseableHttpClient client = HttpClients.createDefault(); CloseableHttpResponse response = client.execute(request)) { + HttpEntity entity = response.getEntity(); + String result = EntityUtils.toString(entity); + System.out.println("Response -> " + result); + } + } +} diff --git a/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpClientUnitTest.java b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpClientUnitTest.java new file mode 100644 index 0000000000..1dca1bf7c6 --- /dev/null +++ b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpClientUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.httpclient.readresponsebodystring; + +import org.junit.Test; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +public class HttpClientUnitTest { + public static final String DUMMY_URL = "https://postman-echo.com/get"; + + @Test + public void whenUseHttpClient_thenCorrect() throws IOException, InterruptedException { + HttpClient client = HttpClient.newHttpClient(); + HttpRequest request = HttpRequest.newBuilder().uri(URI.create(DUMMY_URL)).build(); + + // synchronous response + HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString()); + System.out.println(response.body()); + + // asynchronous response + client.sendAsync(request, HttpResponse.BodyHandlers.ofString()) + .thenApply(HttpResponse::body) + .thenAccept(System.out::println) + .join(); + } +} diff --git a/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpUrlConnectionUnitTest.java b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpUrlConnectionUnitTest.java new file mode 100644 index 0000000000..54ae887eb4 --- /dev/null +++ b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/HttpUrlConnectionUnitTest.java @@ -0,0 +1,34 @@ +package com.baeldung.httpclient.readresponsebodystring; + +import org.junit.Assert; +import org.junit.Test; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +public class HttpUrlConnectionUnitTest { + + public static final String DUMMY_URL = "https://postman-echo.com/get"; + + @Test + public void whenUseHttpUrlConnection_thenCorrect() throws IOException { + HttpURLConnection connection = (HttpURLConnection) new URL(DUMMY_URL).openConnection(); + + InputStream inputStream = connection.getInputStream(); + + BufferedReader in = new BufferedReader(new InputStreamReader(inputStream)); + StringBuilder response = new StringBuilder(); + String currentLine; + + while ((currentLine = in.readLine()) != null) + response.append(currentLine); + + in.close(); + Assert.assertNotNull(response.toString()); + System.out.println("Response -> " + response.toString()); + } +} diff --git a/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/SpringRestTemplateUnitTest.java b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/SpringRestTemplateUnitTest.java new file mode 100644 index 0000000000..c59d7662f1 --- /dev/null +++ b/httpclient-2/src/test/java/com/baeldung/httpclient/readresponsebodystring/SpringRestTemplateUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.httpclient.readresponsebodystring; + +import org.junit.Test; +import org.springframework.web.client.RestTemplate; + +public class SpringRestTemplateUnitTest { + + public static final String DUMMY_URL = "https://postman-echo.com/get"; + + @Test + public void whenUseRestTemplate_thenCorrect() { + RestTemplate restTemplate = new RestTemplate(); + String response = restTemplate.getForObject(DUMMY_URL, String.class); + System.out.println(response); + } + +} diff --git a/pom.xml b/pom.xml index 065d6abbdd..c93aeffcbd 100644 --- a/pom.xml +++ b/pom.xml @@ -424,7 +424,7 @@ hazelcast helidon httpclient - httpclient-2 + httpclient-simple hystrix @@ -936,7 +936,7 @@ hazelcast helidon httpclient - httpclient-2 + httpclient-simple hystrix From 664d170cf45b392c23652aa443a945ba0beae5d0 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Mon, 28 Sep 2020 16:29:44 +0200 Subject: [PATCH 149/260] BAEL-4656: Get available port number for the test (#10096) --- .../PactConsumerDrivenContractUnitTest.java | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java b/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java index e4ac8a3a95..8d4918a3e7 100644 --- a/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/pact/PactConsumerDrivenContractUnitTest.java @@ -7,22 +7,38 @@ import au.com.dius.pact.consumer.dsl.PactDslWithProvider; import au.com.dius.pact.model.RequestResponsePact; import org.junit.Rule; import org.junit.Test; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpMethod; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; +import org.springframework.http.*; import org.springframework.web.client.RestTemplate; +import java.io.IOException; +import java.net.ServerSocket; import java.util.HashMap; import java.util.Map; +import java.util.Random; import static org.assertj.core.api.Assertions.assertThat; public class PactConsumerDrivenContractUnitTest { + private static int getAvailablePort() { + return new Random() + .ints(6000, 9000) + .filter(PactConsumerDrivenContractUnitTest::isFree) + .findFirst() + .orElse(8080); + } + + private static boolean isFree(int port) { + try { + new ServerSocket(port).close(); + return true; + } catch (IOException e) { + return false; + } + } + @Rule - public PactProviderRuleMk2 mockProvider = new PactProviderRuleMk2("test_provider", "localhost", 8080, this); + public PactProviderRuleMk2 mockProvider = new PactProviderRuleMk2("test_provider", "localhost", getAvailablePort(), this); @Pact(consumer = "test_consumer") public RequestResponsePact createPact(PactDslWithProvider builder) { From 7ee94d7455955233b462267d99366e0992e6306a Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 28 Sep 2020 23:10:40 +0530 Subject: [PATCH 150/260] JAVA-2432: Moved articles from here to other modules --- .../spring-hibernate4/.gitignore | 15 - .../spring-hibernate4/README.md | 24 -- persistence-modules/spring-hibernate4/pom.xml | 166 ----------- .../hibernate/audit/AuditorAwareImpl.java | 19 -- .../hibernate/criteria/model/Item.java | 81 ------ .../hibernate/fetching/model/OrderDetail.java | 58 ---- .../hibernate/fetching/model/UserEager.java | 71 ----- .../hibernate/fetching/model/UserLazy.java | 71 ----- .../fetching/util/HibernateUtil.java | 29 -- .../fetching/view/FetchingAppView.java | 68 ----- .../persistence/dao/IBarAuditableDao.java | 8 - .../persistence/dao/IBarCrudRepository.java | 10 - .../com/baeldung/persistence/dao/IBarDao.java | 8 - .../baeldung/persistence/dao/IChildDao.java | 8 - .../persistence/dao/IFooAuditableDao.java | 8 - .../com/baeldung/persistence/dao/IFooDao.java | 8 - .../baeldung/persistence/dao/IParentDao.java | 8 - .../persistence/dao/common/AbstractDao.java | 14 - .../common/AbstractHibernateAuditableDao.java | 37 --- .../dao/common/AbstractHibernateDao.java | 59 ---- .../dao/common/AbstractJpaDao.java | 56 ---- .../dao/common/GenericHibernateDao.java | 13 - .../dao/common/IAuditOperations.java | 14 - .../persistence/dao/common/IGenericDao.java | 7 - .../persistence/dao/common/IOperations.java | 20 -- .../persistence/dao/impl/BarAuditableDao.java | 28 -- .../baeldung/persistence/dao/impl/BarDao.java | 19 -- .../persistence/dao/impl/BarJpaDao.java | 19 -- .../persistence/dao/impl/ChildDao.java | 19 -- .../persistence/dao/impl/FooAuditableDao.java | 17 -- .../baeldung/persistence/dao/impl/FooDao.java | 19 -- .../persistence/dao/impl/ParentDao.java | 19 -- .../com/baeldung/persistence/model/Bar.java | 242 ---------------- .../com/baeldung/persistence/model/Child.java | 51 ---- .../com/baeldung/persistence/model/Foo.java | 105 ------- .../baeldung/persistence/model/Parent.java | 60 ---- .../baeldung/persistence/model/Person.java | 31 --- .../service/IBarAuditableService.java | 8 - .../persistence/service/IBarService.java | 8 - .../persistence/service/IChildService.java | 8 - .../service/IFooAuditableService.java | 8 - .../persistence/service/IFooService.java | 8 - .../persistence/service/IParentService.java | 8 - .../AbstractHibernateAuditableService.java | 30 -- .../common/AbstractHibernateService.java | 42 --- .../service/common/AbstractJpaService.java | 42 --- .../service/common/AbstractService.java | 42 --- .../common/AbstractSpringDataJpaService.java | 46 --- .../service/impl/BarAuditableService.java | 41 --- .../service/impl/BarJpaService.java | 30 -- .../persistence/service/impl/BarService.java | 30 -- .../service/impl/BarSpringDataJpaService.java | 26 -- .../service/impl/ChildService.java | 28 -- .../service/impl/FooAuditableService.java | 41 --- .../persistence/service/impl/FooService.java | 30 -- .../service/impl/ParentService.java | 28 -- .../baeldung/spring/PersistenceConfig.java | 186 ------------- .../baeldung/spring/PersistenceXmlConfig.java | 18 -- .../src/main/resources/fetching.cfg.xml | 20 -- .../src/main/resources/fetchingLazy.cfg.xml | 17 -- .../resources/fetching_create_queries.sql | 14 - .../src/main/resources/hibernate4Config.xml | 34 --- .../src/main/resources/immutable.cfg.xml | 38 --- .../src/main/resources/insert_statements.sql | 31 --- .../src/main/resources/logback.xml | 19 -- .../resources/persistence-mysql.properties | 13 - .../src/main/resources/stored_procedure.sql | 20 -- .../src/main/resources/webSecurityConfig.xml | 37 --- .../java/com/baeldung/SpringContextTest.java | 18 -- .../HibernateFetchingIntegrationTest.java | 42 --- .../persistence/IntegrationTestSuite.java | 25 -- .../persistence/audit/AuditTestSuite.java | 14 - .../EnversFooBarAuditIntegrationTest.java | 146 ---------- .../audit/JPABarAuditIntegrationTest.java | 103 ------- .../SpringDataJPABarAuditIntegrationTest.java | 77 ----- .../persistence/hibernate/FooFixtures.java | 101 ------- ...oPaginationPersistenceIntegrationTest.java | 185 ------------- .../FooSortingPersistenceIntegrationTest.java | 174 ------------ .../save/SaveMethodsIntegrationTest.java | 262 ------------------ ...erviceBasicPersistenceIntegrationTest.java | 55 ---- .../FooServicePersistenceIntegrationTest.java | 64 ----- .../service/FooStoredProceduresLiveTest.java | 121 -------- ...rentServicePersistenceIntegrationTest.java | 70 ----- .../spring/config/PersistenceTestConfig.java | 179 ------------ .../src/test/resources/.gitignore | 13 - .../src/test/resources/fetching.cfg.xml | 19 -- .../src/test/resources/fetchingLazy.cfg.xml | 19 -- .../test/resources/persistence-h2.properties | 13 - 88 files changed, 4160 deletions(-) delete mode 100644 persistence-modules/spring-hibernate4/.gitignore delete mode 100644 persistence-modules/spring-hibernate4/README.md delete mode 100644 persistence-modules/spring-hibernate4/pom.xml delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/criteria/model/Item.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IChildDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IParentDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IOperations.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Child.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Parent.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Person.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IChildService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IParentService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ChildService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ParentService.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceConfig.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceXmlConfig.java delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/fetching.cfg.xml delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/fetching_create_queries.sql delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/hibernate4Config.xml delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/immutable.cfg.xml delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/insert_statements.sql delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/logback.xml delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/persistence-mysql.properties delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/stored_procedure.sql delete mode 100644 persistence-modules/spring-hibernate4/src/main/resources/webSecurityConfig.xml delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/SpringContextTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java delete mode 100644 persistence-modules/spring-hibernate4/src/test/resources/.gitignore delete mode 100644 persistence-modules/spring-hibernate4/src/test/resources/fetching.cfg.xml delete mode 100644 persistence-modules/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml delete mode 100644 persistence-modules/spring-hibernate4/src/test/resources/persistence-h2.properties diff --git a/persistence-modules/spring-hibernate4/.gitignore b/persistence-modules/spring-hibernate4/.gitignore deleted file mode 100644 index d31cc4c619..0000000000 --- a/persistence-modules/spring-hibernate4/.gitignore +++ /dev/null @@ -1,15 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear -/target/ -/target/ diff --git a/persistence-modules/spring-hibernate4/README.md b/persistence-modules/spring-hibernate4/README.md deleted file mode 100644 index a5a72a9b7e..0000000000 --- a/persistence-modules/spring-hibernate4/README.md +++ /dev/null @@ -1,24 +0,0 @@ -## Spring with Hibernate 4 - -This module contains articles about Spring with Hibernate 4 - -### Relevant Articles: -- [Guide to Hibernate 4 with Spring](https://www.baeldung.com/hibernate-4-spring) -- [Hibernate Pagination](https://www.baeldung.com/hibernate-pagination) -- [Sorting with Hibernate](https://www.baeldung.com/hibernate-sort) -- [Stored Procedures with Hibernate](https://www.baeldung.com/stored-procedures-with-hibernate-tutorial) -- [Hibernate: save, persist, update, merge, saveOrUpdate](https://www.baeldung.com/hibernate-save-persist-update-merge-saveorupdate) -- [Eager/Lazy Loading In Hibernate](https://www.baeldung.com/hibernate-lazy-eager-loading) -- [Auditing with JPA, Hibernate, and Spring Data JPA](https://www.baeldung.com/database-auditing-jpa) - -### Quick Start - -``` -git clone git://github.com/eugenp/REST.git -cd REST -mvn install -mvn cargo:run -``` - -- **note**: starts on port `8082` - diff --git a/persistence-modules/spring-hibernate4/pom.xml b/persistence-modules/spring-hibernate4/pom.xml deleted file mode 100644 index 3e5a6f913f..0000000000 --- a/persistence-modules/spring-hibernate4/pom.xml +++ /dev/null @@ -1,166 +0,0 @@ - - - 4.0.0 - spring-hibernate4 - 0.1-SNAPSHOT - spring-hibernate4 - - - com.baeldung - parent-spring-4 - 0.0.1-SNAPSHOT - ../../parent-spring-4 - - - - - - - org.springframework - spring-context - ${org.springframework.version} - - - commons-logging - commons-logging - - - - - org.springframework - spring-aspects - ${org.springframework.version} - - - org.springframework.security - spring-security-core - ${org.springframework.security.version} - - - - - - org.springframework - spring-orm - ${org.springframework.version} - - - org.springframework.data - spring-data-jpa - ${org.springframework.data.version} - - - org.hibernate - hibernate-core - ${hibernate.version} - - - org.hibernate - hibernate-envers - ${hibernate-envers.version} - - - javax.transaction - jta - ${jta.version} - - - mysql - mysql-connector-java - ${mysql-connector-java.version} - - - - org.apache.tomcat - tomcat-dbcp - ${tomcat-dbcp.version} - - - - - - org.hibernate - hibernate-validator - ${hibernate-validator.version} - - - javax.el - javax.el-api - ${javax.el-api.version} - - - - - - com.google.guava - guava - ${guava.version} - - - - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - test - - - - org.springframework - spring-test - ${org.springframework.version} - test - - - - org.springframework.security - spring-security-test - ${org.springframework.security.version} - test - - - - org.hsqldb - hsqldb - ${hsqldb.version} - test - - - com.h2database - h2 - ${h2.version} - test - - - - - - - 4.3.4.RELEASE - 4.2.0.RELEASE - 1.10.5.RELEASE - - - 4.3.11.Final - ${hibernate.version} - 5.1.40 - 8.5.8 - 1.1 - 2.3.4 - - - 5.3.3.Final - 2.2.5 - - - 19.0 - - - 2.22.2 - 5.6.2 - 4.13 - - - diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java deleted file mode 100644 index 7aef08b2ce..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.hibernate.audit; - -import java.util.Optional; - -import org.springframework.data.domain.AuditorAware; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; - -public class AuditorAwareImpl implements AuditorAware { - - @Override - public String getCurrentAuditor() { - return Optional.ofNullable(SecurityContextHolder.getContext()) - .map(e -> e.getAuthentication()) - .map(Authentication::getName) - .orElse(null); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/criteria/model/Item.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/criteria/model/Item.java deleted file mode 100644 index 957207b7e6..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/criteria/model/Item.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.baeldung.hibernate.criteria.model; - -import java.io.Serializable; - -public class Item implements Serializable { - - private static final long serialVersionUID = 1L; - private Integer itemId; - private String itemName; - private String itemDescription; - private Integer itemPrice; - - // constructors - public Item() { - - } - - public Item(final Integer itemId, final String itemName, final String itemDescription) { - super(); - this.itemId = itemId; - this.itemName = itemName; - this.itemDescription = itemDescription; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((itemId == null) ? 0 : itemId.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final Item other = (Item) obj; - if (itemId == null) { - if (other.itemId != null) - return false; - } else if (!itemId.equals(other.itemId)) - return false; - return true; - } - - public Integer getItemId() { - return itemId; - } - - public void setItemId(final Integer itemId) { - this.itemId = itemId; - } - - public String getItemName() { - return itemName; - } - - public void setItemName(final String itemName) { - this.itemName = itemName; - } - - public String getItemDescription() { - return itemDescription; - } - - public Integer getItemPrice() { - return itemPrice; - } - - public void setItemPrice(final Integer itemPrice) { - this.itemPrice = itemPrice; - } - - public void setItemDescription(final String itemDescription) { - this.itemDescription = itemDescription; - } -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java deleted file mode 100644 index f4a9b8a678..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.baeldung.hibernate.fetching.model; - -import javax.persistence.*; -import java.io.Serializable; -import java.sql.Date; - -@Entity -@Table(name = "USER_ORDER") -public class OrderDetail implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue - @Column(name = "ORDER_ID") - private Long orderId; - - public OrderDetail() { - } - - public OrderDetail(Date orderDate, String orderDesc) { - super(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((orderId == null) ? 0 : orderId.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - OrderDetail other = (OrderDetail) obj; - if (orderId == null) { - if (other.orderId != null) - return false; - } else if (!orderId.equals(other.orderId)) - return false; - - return true; - } - - public Long getOrderId() { - return orderId; - } - - public void setOrderId(Long orderId) { - this.orderId = orderId; - } -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java deleted file mode 100644 index 9fda4c43bb..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.baeldung.hibernate.fetching.model; - -import javax.persistence.*; -import java.io.Serializable; -import java.util.HashSet; -import java.util.Set; - -@Entity -@Table(name = "USER") -public class UserEager implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue - @Column(name = "USER_ID") - private Long userId; - - @OneToMany(fetch = FetchType.EAGER) - private Set orderDetail = new HashSet(); - - public UserEager() { - } - - public UserEager(final Long userId) { - super(); - this.userId = userId; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((userId == null) ? 0 : userId.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final UserEager other = (UserEager) obj; - if (userId == null) { - if (other.userId != null) - return false; - } else if (!userId.equals(other.userId)) - return false; - return true; - } - - public Long getUserId() { - return userId; - } - - public void setUserId(final Long userId) { - this.userId = userId; - } - - public Set getOrderDetail() { - return orderDetail; - } - - public void setOrderDetail(Set orderDetail) { - this.orderDetail = orderDetail; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java deleted file mode 100644 index a78eaa4ac0..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.baeldung.hibernate.fetching.model; - -import javax.persistence.*; -import java.io.Serializable; -import java.util.HashSet; -import java.util.Set; - -@Entity -@Table(name = "USER") -public class UserLazy implements Serializable { - - private static final long serialVersionUID = 1L; - - @Id - @GeneratedValue - @Column(name = "USER_ID") - private Long userId; - - @OneToMany(fetch = FetchType.LAZY) - private Set orderDetail = new HashSet(); - - public UserLazy() { - } - - public UserLazy(final Long userId) { - super(); - this.userId = userId; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((userId == null) ? 0 : userId.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final UserLazy other = (UserLazy) obj; - if (userId == null) { - if (other.userId != null) - return false; - } else if (!userId.equals(other.userId)) - return false; - return true; - } - - public Long getUserId() { - return userId; - } - - public void setUserId(final Long userId) { - this.userId = userId; - } - - public Set getOrderDetail() { - return orderDetail; - } - - public void setOrderDetail(Set orderDetail) { - this.orderDetail = orderDetail; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java deleted file mode 100644 index c7be96abb7..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.hibernate.fetching.util; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.cfg.Configuration; - -public class HibernateUtil { - - @SuppressWarnings("deprecation") - public static Session getHibernateSession(String fetchMethod) { - // two config files are there - // one with lazy loading enabled - // another lazy = false - SessionFactory sf; - if ("lazy".equals(fetchMethod)) { - sf = new Configuration().configure("fetchingLazy.cfg.xml").buildSessionFactory(); - } else { - sf = new Configuration().configure("fetching.cfg.xml").buildSessionFactory(); - } - - // fetching.cfg.xml is used for this example - return sf.openSession(); - } - - public static Session getHibernateSession() { - return new Configuration().configure("fetching.cfg.xml").buildSessionFactory().openSession(); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java deleted file mode 100644 index 35cdd254e3..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.baeldung.hibernate.fetching.view; - -import com.baeldung.hibernate.fetching.model.OrderDetail; -import com.baeldung.hibernate.fetching.model.UserEager; -import com.baeldung.hibernate.fetching.model.UserLazy; -import com.baeldung.hibernate.fetching.util.HibernateUtil; -import org.hibernate.Session; -import org.hibernate.Transaction; - -import java.util.List; -import java.util.Set; - -public class FetchingAppView { - - public FetchingAppView() { - - } - - // lazily loaded - public Set lazyLoaded() { - final Session sessionLazy = HibernateUtil.getHibernateSession("lazy"); - List users = sessionLazy.createQuery("From UserLazy").list(); - UserLazy userLazyLoaded = users.get(0); - // since data is lazyloaded so data won't be initialized - return (userLazyLoaded.getOrderDetail()); - } - - // eagerly loaded - public Set eagerLoaded() { - final Session sessionEager = HibernateUtil.getHibernateSession(); - // data should be loaded in the following line - // also note the queries generated - List user = sessionEager.createQuery("From UserEager").list(); - UserEager userEagerLoaded = user.get(0); - return userEagerLoaded.getOrderDetail(); - } - - // creates test data - // call this method to create the data in the database - public void createTestData() { - - final Session session = HibernateUtil.getHibernateSession("lazy"); - Transaction tx = session.beginTransaction(); - final UserLazy user1 = new UserLazy(); - final UserLazy user2 = new UserLazy(); - final UserLazy user3 = new UserLazy(); - - session.save(user1); - session.save(user2); - session.save(user3); - - final OrderDetail order1 = new OrderDetail(); - final OrderDetail order2 = new OrderDetail(); - final OrderDetail order3 = new OrderDetail(); - final OrderDetail order4 = new OrderDetail(); - final OrderDetail order5 = new OrderDetail(); - - session.saveOrUpdate(order1); - session.saveOrUpdate(order2); - session.saveOrUpdate(order3); - session.saveOrUpdate(order4); - session.saveOrUpdate(order5); - - tx.commit(); - session.close(); - - } -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java deleted file mode 100644 index 182b493592..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.model.Bar; - -public interface IBarAuditableDao extends IBarDao, IAuditOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java deleted file mode 100644 index 4d7db64240..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.persistence.dao; - -import java.io.Serializable; - -import com.baeldung.persistence.model.Bar; -import org.springframework.data.repository.CrudRepository; - -public interface IBarCrudRepository extends CrudRepository { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarDao.java deleted file mode 100644 index 7896a2a84a..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IBarDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Bar; - -public interface IBarDao extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IChildDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IChildDao.java deleted file mode 100644 index a55a0b0598..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IChildDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Child; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IChildDao extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java deleted file mode 100644 index ddbb685988..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.model.Foo; - -public interface IFooAuditableDao extends IFooDao, IAuditOperations { - // -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooDao.java deleted file mode 100644 index 0935772dbd..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IFooDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IFooDao extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IParentDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IParentDao.java deleted file mode 100644 index 03680158bb..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/IParentDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Parent; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IParentDao extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java deleted file mode 100644 index 5a6c76a93a..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; - -import com.google.common.base.Preconditions; - -public abstract class AbstractDao implements IOperations { - - protected Class clazz; - - protected final void setClazz(final Class clazzToSet) { - clazz = Preconditions.checkNotNull(clazzToSet); - } -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java deleted file mode 100644 index 41184669ad..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; -import java.util.List; - -import org.hibernate.envers.AuditReader; -import org.hibernate.envers.AuditReaderFactory; -import org.hibernate.envers.query.AuditQuery; - -@SuppressWarnings("unchecked") -public class AbstractHibernateAuditableDao extends AbstractHibernateDao implements IAuditOperations { - - @Override - public List getEntitiesAtRevision(final Number revision) { - final AuditReader auditReader = AuditReaderFactory.get(getCurrentSession()); - final AuditQuery query = auditReader.createQuery().forEntitiesAtRevision(clazz, revision); - final List resultList = query.getResultList(); - return resultList; - } - - @Override - public List getEntitiesModifiedAtRevision(final Number revision) { - final AuditReader auditReader = AuditReaderFactory.get(getCurrentSession()); - final AuditQuery query = auditReader.createQuery().forEntitiesModifiedAtRevision(clazz, revision); - final List resultList = query.getResultList(); - return resultList; - } - - @Override - public List getRevisions() { - final AuditReader auditReader = AuditReaderFactory.get(getCurrentSession()); - final AuditQuery query = auditReader.createQuery().forRevisionsOfEntity(clazz, true, true); - final List resultList = query.getResultList(); - return resultList; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java deleted file mode 100644 index f3ade67f80..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; -import java.util.List; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.springframework.beans.factory.annotation.Autowired; - -import com.google.common.base.Preconditions; - -@SuppressWarnings("unchecked") -public abstract class AbstractHibernateDao extends AbstractDao implements IOperations { - - @Autowired - protected SessionFactory sessionFactory; - - // API - - @Override - public T findOne(final long id) { - return (T) getCurrentSession().get(clazz, id); - } - - @Override - public List findAll() { - return getCurrentSession().createQuery("from " + clazz.getName()).list(); - } - - @Override - public void create(final T entity) { - Preconditions.checkNotNull(entity); - getCurrentSession().saveOrUpdate(entity); - } - - @Override - public T update(final T entity) { - Preconditions.checkNotNull(entity); - return (T) getCurrentSession().merge(entity); - } - - @Override - public void delete(final T entity) { - Preconditions.checkNotNull(entity); - getCurrentSession().delete(entity); - } - - @Override - public void deleteById(final long entityId) { - final T entity = findOne(entityId); - Preconditions.checkState(entity != null); - delete(entity); - } - - protected Session getCurrentSession() { - return sessionFactory.getCurrentSession(); - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java deleted file mode 100644 index 69f8e58c25..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - -public class AbstractJpaDao extends AbstractDao implements IOperations { - - @PersistenceContext - private EntityManager em; - - // API - - @Override - public T findOne(final long id) { - return em.find(clazz, Long.valueOf(id).intValue()); - } - - @Override - public List findAll() { - final CriteriaBuilder cb = em.getCriteriaBuilder(); - final CriteriaQuery cq = cb.createQuery(clazz); - final Root rootEntry = cq.from(clazz); - final CriteriaQuery all = cq.select(rootEntry); - final TypedQuery allQuery = em.createQuery(all); - return allQuery.getResultList(); - } - - @Override - public void create(final T entity) { - em.persist(entity); - } - - @Override - public T update(final T entity) { - em.merge(entity); - return entity; - } - - @Override - public void delete(final T entity) { - em.remove(entity); - } - - @Override - public void deleteById(final long entityId) { - delete(findOne(entityId)); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java deleted file mode 100644 index 18b16fa033..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; - -import org.springframework.beans.factory.config.BeanDefinition; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Repository; - -@Repository -@Scope(BeanDefinition.SCOPE_PROTOTYPE) -public class GenericHibernateDao extends AbstractHibernateDao implements IGenericDao { - // -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java deleted file mode 100644 index 169d3fed72..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; -import java.util.List; - -public interface IAuditOperations { - - List getEntitiesAtRevision(Number revision); - - List getEntitiesModifiedAtRevision(Number revision); - - List getRevisions(); - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java deleted file mode 100644 index 8d8af18394..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; - -public interface IGenericDao extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IOperations.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IOperations.java deleted file mode 100644 index 4ef99221ab..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/common/IOperations.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.persistence.dao.common; - -import java.io.Serializable; -import java.util.List; - -public interface IOperations { - - T findOne(final long id); - - List findAll(); - - void create(final T entity); - - T update(final T entity); - - void delete(final T entity); - - void deleteById(final long entityId); - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java deleted file mode 100644 index e12b6ae2da..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import java.util.List; - -import com.baeldung.persistence.dao.IBarAuditableDao; -import com.baeldung.persistence.dao.common.AbstractHibernateAuditableDao; -import com.baeldung.persistence.model.Bar; - -public class BarAuditableDao extends AbstractHibernateAuditableDao implements IBarAuditableDao { - - public BarAuditableDao() { - super(); - - setClazz(Bar.class); - } - - // API - - @Override - public List getRevisions() { - final List resultList = super.getRevisions(); - for (final Bar bar : resultList) { - bar.getFooSet().size(); // force FooSet initialization - } - return resultList; - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java deleted file mode 100644 index 0ead802dc5..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.model.Bar; -import org.springframework.stereotype.Repository; - -@Repository -public class BarDao extends AbstractHibernateDao implements IBarDao { - - public BarDao() { - super(); - - setClazz(Bar.class); - } - - // API - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java deleted file mode 100644 index e0fa382d41..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.dao.common.AbstractJpaDao; -import com.baeldung.persistence.model.Bar; -import org.springframework.stereotype.Repository; - -@Repository -public class BarJpaDao extends AbstractJpaDao implements IBarDao { - - public BarJpaDao() { - super(); - - setClazz(Bar.class); - } - - // API - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java deleted file mode 100644 index b55da6e43a..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.model.Child; -import com.baeldung.persistence.dao.IChildDao; -import org.springframework.stereotype.Repository; - -@Repository -public class ChildDao extends AbstractHibernateDao implements IChildDao { - - public ChildDao() { - super(); - - setClazz(Child.class); - } - - // API - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java deleted file mode 100644 index 05064c1478..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import com.baeldung.persistence.dao.common.AbstractHibernateAuditableDao; -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.dao.IFooAuditableDao; - -public class FooAuditableDao extends AbstractHibernateAuditableDao implements IFooAuditableDao { - - public FooAuditableDao() { - super(); - - setClazz(Foo.class); - } - - // API - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java deleted file mode 100644 index 787c449b1d..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.dao.IFooDao; -import com.baeldung.persistence.model.Foo; -import org.springframework.stereotype.Repository; - -@Repository -public class FooDao extends AbstractHibernateDao implements IFooDao { - - public FooDao() { - super(); - - setClazz(Foo.class); - } - - // API - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java deleted file mode 100644 index 4602b5f30e..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.persistence.dao.impl; - -import com.baeldung.persistence.dao.IParentDao; -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.model.Parent; -import org.springframework.stereotype.Repository; - -@Repository -public class ParentDao extends AbstractHibernateDao implements IParentDao { - - public ParentDao() { - super(); - - setClazz(Parent.class); - } - - // API - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java deleted file mode 100644 index c7f05254cc..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Bar.java +++ /dev/null @@ -1,242 +0,0 @@ -package com.baeldung.persistence.model; - -import java.io.Serializable; -import java.util.Date; -import java.util.Set; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityListeners; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.NamedQuery; -import javax.persistence.OneToMany; -import javax.persistence.PrePersist; -import javax.persistence.PreRemove; -import javax.persistence.PreUpdate; - -import org.hibernate.annotations.OrderBy; -import org.hibernate.envers.Audited; -import org.jboss.logging.Logger; -import org.springframework.data.annotation.CreatedBy; -import org.springframework.data.annotation.CreatedDate; -import org.springframework.data.annotation.LastModifiedBy; -import org.springframework.data.annotation.LastModifiedDate; -import org.springframework.data.jpa.domain.support.AuditingEntityListener; - -import com.google.common.collect.Sets; - -@Entity -@NamedQuery(name = "Bar.findAll", query = "SELECT b FROM Bar b") -@Audited -@EntityListeners(AuditingEntityListener.class) -public class Bar implements Serializable { - - private static Logger logger = Logger.getLogger(Bar.class); - - public enum OPERATION { - INSERT, UPDATE, DELETE; - private String value; - - OPERATION() { - value = toString(); - } - - public String getValue() { - return value; - } - - public static OPERATION parse(final String value) { - OPERATION operation = null; - for (final OPERATION op : OPERATION.values()) { - if (op.getValue().equals(value)) { - operation = op; - break; - } - } - return operation; - } - }; - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id") - private int id; - - @Column(name = "name") - private String name; - - @OneToMany(mappedBy = "bar", cascade = CascadeType.ALL, fetch = FetchType.LAZY) - @OrderBy(clause = "NAME DESC") - // @NotAudited - private Set fooSet = Sets.newHashSet(); - - @Column(name = "operation") - private String operation; - - @Column(name = "timestamp") - private long timestamp; - - @Column(name = "created_date", updatable = false, nullable = false) - @CreatedDate - private long createdDate; - - @Column(name = "modified_date") - @LastModifiedDate - private long modifiedDate; - - @Column(name = "created_by") - @CreatedBy - private String createdBy; - - @Column(name = "modified_by") - @LastModifiedBy - private String modifiedBy; - - public Bar() { - super(); - } - - public Bar(final String name) { - super(); - - this.name = name; - } - - // API - - public Set getFooSet() { - return fooSet; - } - - public void setFooSet(final Set fooSet) { - this.fooSet = fooSet; - } - - public int getId() { - return id; - } - - public void setId(final int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - public OPERATION getOperation() { - return OPERATION.parse(operation); - } - - public void setOperation(final OPERATION operation) { - this.operation = operation.getValue(); - } - - public long getTimestamp() { - return timestamp; - } - - public void setTimestamp(final long timestamp) { - this.timestamp = timestamp; - } - - public long getCreatedDate() { - return createdDate; - } - - public void setCreatedDate(final long createdDate) { - this.createdDate = createdDate; - } - - public long getModifiedDate() { - return modifiedDate; - } - - public void setModifiedDate(final long modifiedDate) { - this.modifiedDate = modifiedDate; - } - - public String getCreatedBy() { - return createdBy; - } - - public void setCreatedBy(final String createdBy) { - this.createdBy = createdBy; - } - - public String getModifiedBy() { - return modifiedBy; - } - - public void setModifiedBy(final String modifiedBy) { - this.modifiedBy = modifiedBy; - } - - public void setOperation(final String operation) { - this.operation = operation; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final Bar other = (Bar) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Bar [name=").append(name).append("]"); - return builder.toString(); - } - - @PrePersist - public void onPrePersist() { - logger.info("@PrePersist"); - audit(OPERATION.INSERT); - } - - @PreUpdate - public void onPreUpdate() { - logger.info("@PreUpdate"); - audit(OPERATION.UPDATE); - } - - @PreRemove - public void onPreRemove() { - logger.info("@PreRemove"); - audit(OPERATION.DELETE); - } - - private void audit(final OPERATION operation) { - setOperation(operation); - setTimestamp((new Date()).getTime()); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Child.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Child.java deleted file mode 100644 index 19cfb2e237..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Child.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.baeldung.persistence.model; - -import java.io.Serializable; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.OneToOne; - -@Entity -public class Child implements Serializable { - - @Id - @GeneratedValue - private long id; - - @OneToOne(mappedBy = "child") - private Parent parent; - - public Child() { - super(); - } - - // API - - public long getId() { - return id; - } - - public void setId(final long id) { - this.id = id; - } - - public Parent getParent() { - return parent; - } - - public void setParent(final Parent parent) { - this.parent = parent; - } - - // - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Child [id=").append(id).append("]"); - return builder.toString(); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java deleted file mode 100644 index d36a1e58cf..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Foo.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.baeldung.persistence.model; - -import java.io.Serializable; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.FetchType; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.ManyToOne; -import javax.persistence.NamedNativeQueries; -import javax.persistence.NamedNativeQuery; - -import org.hibernate.envers.Audited; - -@NamedNativeQueries({ @NamedNativeQuery(name = "callGetAllFoos", query = "CALL GetAllFoos()", resultClass = Foo.class), @NamedNativeQuery(name = "callGetFoosByName", query = "CALL GetFoosByName(:fooName)", resultClass = Foo.class) }) -@Entity -@Audited -// @Proxy(lazy = false) -public class Foo implements Serializable { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - @Column(name = "id") - private long id; - - @Column(name = "name") - private String name; - - @ManyToOne(targetEntity = Bar.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) - @JoinColumn(name = "BAR_ID") - private Bar bar = new Bar(); - - public Foo() { - super(); - } - - public Foo(final String name) { - super(); - this.name = name; - } - - // - - public Bar getBar() { - return bar; - } - - public void setBar(final Bar bar) { - this.bar = bar; - } - - public long getId() { - return id; - } - - public void setId(final long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(final String name) { - this.name = name; - } - - // - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((name == null) ? 0 : name.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final Foo other = (Foo) obj; - if (name == null) { - if (other.name != null) - return false; - } else if (!name.equals(other.name)) - return false; - return true; - } - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Foo [name=").append(name).append("]"); - return builder.toString(); - } -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Parent.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Parent.java deleted file mode 100644 index fa6948990b..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Parent.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.baeldung.persistence.model; - -import java.io.Serializable; - -import javax.persistence.CascadeType; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.OneToOne; - -@Entity -public class Parent implements Serializable { - - @Id - @GeneratedValue - private long id; - - @OneToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH }) - @JoinColumn(name = "child_fk") - private Child child; - - public Parent() { - super(); - } - - public Parent(final Child child) { - super(); - - this.child = child; - } - - // API - - public long getId() { - return id; - } - - public void setId(final long id) { - this.id = id; - } - - public Child getChild() { - return child; - } - - public void setChild(final Child child) { - this.child = child; - } - - // - - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("Parent [id=").append(id).append("]"); - return builder.toString(); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Person.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Person.java deleted file mode 100644 index 6a95a7acf5..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/model/Person.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.baeldung.persistence.model; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; - -@Entity -public class Person { - - @Id - @GeneratedValue - private Long id; - - private String name; - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java deleted file mode 100644 index 33e5634d12..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.service; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.model.Bar; - -public interface IBarAuditableService extends IBarService, IAuditOperations { - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarService.java deleted file mode 100644 index 21185b5990..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IBarService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.service; - -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Bar; - -public interface IBarService extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IChildService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IChildService.java deleted file mode 100644 index afe67a70c2..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IChildService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.service; - -import com.baeldung.persistence.model.Child; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IChildService extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java deleted file mode 100644 index b787e7fe91..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.service; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.model.Foo; - -public interface IFooAuditableService extends IFooService, IAuditOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooService.java deleted file mode 100644 index ffdb53964a..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IFooService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.service; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IFooService extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IParentService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IParentService.java deleted file mode 100644 index f941416aac..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/IParentService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.service; - -import com.baeldung.persistence.model.Parent; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IParentService extends IOperations { - // -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java deleted file mode 100644 index 2695d7760a..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.persistence.service.common; - -import java.io.Serializable; -import java.util.List; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.dao.common.IOperations; -import org.springframework.transaction.annotation.Transactional; - -@Transactional(value = "hibernateTransactionManager") -public abstract class AbstractHibernateAuditableService extends AbstractHibernateService implements IOperations, IAuditOperations { - - @Override - public List getEntitiesAtRevision(final Number revision) { - return getAuditableDao().getEntitiesAtRevision(revision); - } - - @Override - public List getEntitiesModifiedAtRevision(final Number revision) { - return getAuditableDao().getEntitiesModifiedAtRevision(revision); - } - - @Override - public List getRevisions() { - return getAuditableDao().getRevisions(); - } - - abstract protected IAuditOperations getAuditableDao(); - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java deleted file mode 100644 index 02b8ccf48b..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.persistence.service.common; - -import java.io.Serializable; -import java.util.List; - -import com.baeldung.persistence.dao.common.IOperations; -import org.springframework.transaction.annotation.Transactional; - -@Transactional(value = "hibernateTransactionManager") -public abstract class AbstractHibernateService extends AbstractService implements IOperations { - - @Override - public T findOne(final long id) { - return super.findOne(id); - } - - @Override - public List findAll() { - return super.findAll(); - } - - @Override - public void create(final T entity) { - super.create(entity); - } - - @Override - public T update(final T entity) { - return super.update(entity); - } - - @Override - public void delete(final T entity) { - super.delete(entity); - } - - @Override - public void deleteById(final long entityId) { - super.deleteById(entityId); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java deleted file mode 100644 index a1c6fe9edf..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.persistence.service.common; - -import java.io.Serializable; -import java.util.List; - -import com.baeldung.persistence.dao.common.IOperations; -import org.springframework.transaction.annotation.Transactional; - -@Transactional(value = "jpaTransactionManager") -public abstract class AbstractJpaService extends AbstractService implements IOperations { - - @Override - public T findOne(final long id) { - return super.findOne(id); - } - - @Override - public List findAll() { - return super.findAll(); - } - - @Override - public void create(final T entity) { - super.create(entity); - } - - @Override - public T update(final T entity) { - return super.update(entity); - } - - @Override - public void delete(final T entity) { - super.delete(entity); - } - - @Override - public void deleteById(final long entityId) { - super.deleteById(entityId); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractService.java deleted file mode 100644 index 9b001b1fac..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractService.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.persistence.service.common; - -import java.io.Serializable; -import java.util.List; - -import com.baeldung.persistence.dao.common.IOperations; - -public abstract class AbstractService implements IOperations { - - @Override - public T findOne(final long id) { - return getDao().findOne(id); - } - - @Override - public List findAll() { - return getDao().findAll(); - } - - @Override - public void create(final T entity) { - getDao().create(entity); - } - - @Override - public T update(final T entity) { - return getDao().update(entity); - } - - @Override - public void delete(final T entity) { - getDao().delete(entity); - } - - @Override - public void deleteById(final long entityId) { - getDao().deleteById(entityId); - } - - protected abstract IOperations getDao(); - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java deleted file mode 100644 index cef483e6bf..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.persistence.service.common; - -import java.io.Serializable; -import java.util.List; - -import com.baeldung.persistence.dao.common.IOperations; -import org.springframework.data.repository.CrudRepository; -import org.springframework.transaction.annotation.Transactional; - -import com.google.common.collect.Lists; - -@Transactional(value = "jpaTransactionManager") -public abstract class AbstractSpringDataJpaService implements IOperations { - - @Override - public T findOne(final long id) { - return getDao().findOne(Long.valueOf(id)); - } - - @Override - public List findAll() { - return Lists.newArrayList(getDao().findAll()); - } - - @Override - public void create(final T entity) { - getDao().save(entity); - } - - @Override - public T update(final T entity) { - return getDao().save(entity); - } - - @Override - public void delete(final T entity) { - getDao().delete(entity); - } - - @Override - public void deleteById(final long entityId) { - getDao().delete(Long.valueOf(entityId)); - } - - protected abstract CrudRepository getDao(); -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java deleted file mode 100644 index d84c28caa5..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.service.common.AbstractHibernateAuditableService; -import com.baeldung.persistence.dao.IBarAuditableDao; -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.service.IBarAuditableService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -@Service -public class BarAuditableService extends AbstractHibernateAuditableService implements IBarAuditableService { - - @Autowired - @Qualifier("barHibernateDao") - private IBarDao dao; - - @Autowired - @Qualifier("barHibernateAuditableDao") - private IBarAuditableDao auditDao; - - public BarAuditableService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - - @Override - protected IAuditOperations getAuditableDao() { - return auditDao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java deleted file mode 100644 index 1c1b7a2274..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.service.IBarService; -import com.baeldung.persistence.service.common.AbstractJpaService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -@Service -public class BarJpaService extends AbstractJpaService implements IBarService { - - @Autowired - @Qualifier("barJpaDao") - private IBarDao dao; - - public BarJpaService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarService.java deleted file mode 100644 index 32d1f919c5..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.service.IBarService; -import com.baeldung.persistence.service.common.AbstractHibernateService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -@Service -public class BarService extends AbstractHibernateService implements IBarService { - - @Autowired - @Qualifier("barHibernateDao") - private IBarDao dao; - - public BarService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java deleted file mode 100644 index 4a55d08a35..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import java.io.Serializable; - -import com.baeldung.persistence.service.common.AbstractSpringDataJpaService; -import com.baeldung.persistence.dao.IBarCrudRepository; -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.service.IBarService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.repository.CrudRepository; - -public class BarSpringDataJpaService extends AbstractSpringDataJpaService implements IBarService { - - @Autowired - private IBarCrudRepository dao; - - public BarSpringDataJpaService() { - super(); - } - - @Override - protected CrudRepository getDao() { - return dao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ChildService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ChildService.java deleted file mode 100644 index 417fe2c49a..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ChildService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.model.Child; -import com.baeldung.persistence.service.IChildService; -import com.baeldung.persistence.dao.IChildDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.service.common.AbstractHibernateService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class ChildService extends AbstractHibernateService implements IChildService { - - @Autowired - private IChildDao dao; - - public ChildService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java deleted file mode 100644 index 45ad315c42..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.dao.common.IAuditOperations; -import com.baeldung.persistence.service.IFooAuditableService; -import com.baeldung.persistence.service.common.AbstractHibernateAuditableService; -import com.baeldung.persistence.dao.IFooAuditableDao; -import com.baeldung.persistence.dao.IFooDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Foo; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -@Service -public class FooAuditableService extends AbstractHibernateAuditableService implements IFooAuditableService { - - @Autowired - @Qualifier("fooHibernateDao") - private IFooDao dao; - - @Autowired - @Qualifier("fooHibernateAuditableDao") - private IFooAuditableDao auditDao; - - public FooAuditableService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - - @Override - protected IAuditOperations getAuditableDao() { - return auditDao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooService.java deleted file mode 100644 index 84cf018fee..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/FooService.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.dao.IFooDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.service.IFooService; -import com.baeldung.persistence.service.common.AbstractHibernateService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -@Service -public class FooService extends AbstractHibernateService implements IFooService { - - @Autowired - @Qualifier("fooHibernateDao") - private IFooDao dao; - - public FooService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ParentService.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ParentService.java deleted file mode 100644 index 078acfc369..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/persistence/service/impl/ParentService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.persistence.service.impl; - -import com.baeldung.persistence.model.Parent; -import com.baeldung.persistence.service.IParentService; -import com.baeldung.persistence.dao.IParentDao; -import com.baeldung.persistence.dao.common.IOperations; -import com.baeldung.persistence.service.common.AbstractHibernateService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class ParentService extends AbstractHibernateService implements IParentService { - - @Autowired - private IParentDao dao; - - public ParentService() { - super(); - } - - // API - - @Override - protected IOperations getDao() { - return dao; - } - -} diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceConfig.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceConfig.java deleted file mode 100644 index 4927c9957c..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceConfig.java +++ /dev/null @@ -1,186 +0,0 @@ -package com.baeldung.spring; - -import java.util.Properties; - -import javax.sql.DataSource; - -import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; -import org.springframework.data.domain.AuditorAware; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.orm.hibernate4.HibernateTransactionManager; -import org.springframework.orm.hibernate4.LocalSessionFactoryBean; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.JpaVendorAdapter; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import com.baeldung.hibernate.audit.AuditorAwareImpl; -import com.baeldung.persistence.dao.IBarAuditableDao; -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.dao.IFooAuditableDao; -import com.baeldung.persistence.dao.IFooDao; -import com.baeldung.persistence.dao.impl.BarAuditableDao; -import com.baeldung.persistence.dao.impl.BarDao; -import com.baeldung.persistence.dao.impl.BarJpaDao; -import com.baeldung.persistence.dao.impl.FooAuditableDao; -import com.baeldung.persistence.dao.impl.FooDao; -import com.baeldung.persistence.service.IBarAuditableService; -import com.baeldung.persistence.service.IBarService; -import com.baeldung.persistence.service.IFooAuditableService; -import com.baeldung.persistence.service.IFooService; -import com.baeldung.persistence.service.impl.BarAuditableService; -import com.baeldung.persistence.service.impl.BarJpaService; -import com.baeldung.persistence.service.impl.BarSpringDataJpaService; -import com.baeldung.persistence.service.impl.FooAuditableService; -import com.baeldung.persistence.service.impl.FooService; -import com.google.common.base.Preconditions; - -@Configuration -@EnableTransactionManagement -@EnableJpaRepositories(basePackages = { "com.baeldung.persistence" }, transactionManagerRef = "jpaTransactionManager") -@EnableJpaAuditing(auditorAwareRef = "auditorProvider") -@PropertySource({ "classpath:persistence-h2.properties" }) -@ComponentScan({ "com.baeldung.persistence" }) -public class PersistenceConfig { - - @Autowired - private Environment env; - - public PersistenceConfig() { - super(); - } - - @Bean("auditorProvider") - public AuditorAware auditorProvider() { - return new AuditorAwareImpl(); - } - - @Bean - public LocalSessionFactoryBean sessionFactory() { - final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); - sessionFactory.setDataSource(restDataSource()); - sessionFactory.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); - sessionFactory.setHibernateProperties(hibernateProperties()); - - return sessionFactory; - } - - @Bean - public LocalContainerEntityManagerFactoryBean entityManagerFactory() { - final LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); - emf.setDataSource(restDataSource()); - emf.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); - - final JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); - emf.setJpaVendorAdapter(vendorAdapter); - emf.setJpaProperties(hibernateProperties()); - - return emf; - } - - @Bean - public DataSource restDataSource() { - final BasicDataSource dataSource = new BasicDataSource(); - dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); - dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); - dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); - dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); - - return dataSource; - } - - @Bean - public PlatformTransactionManager hibernateTransactionManager() { - final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); - transactionManager.setSessionFactory(sessionFactory().getObject()); - return transactionManager; - } - - @Bean - public PlatformTransactionManager jpaTransactionManager() { - final JpaTransactionManager transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); - return transactionManager; - } - - @Bean - public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { - return new PersistenceExceptionTranslationPostProcessor(); - } - - @Bean - public IBarService barJpaService() { - return new BarJpaService(); - } - - @Bean - public IBarService barSpringDataJpaService() { - return new BarSpringDataJpaService(); - } - - @Bean - public IFooService fooHibernateService() { - return new FooService(); - } - - @Bean - public IBarAuditableService barHibernateAuditableService() { - return new BarAuditableService(); - } - - @Bean - public IFooAuditableService fooHibernateAuditableService() { - return new FooAuditableService(); - } - - @Bean - public IBarDao barJpaDao() { - return new BarJpaDao(); - } - - @Bean - public IBarDao barHibernateDao() { - return new BarDao(); - } - - @Bean - public IBarAuditableDao barHibernateAuditableDao() { - return new BarAuditableDao(); - } - - @Bean - public IFooDao fooHibernateDao() { - return new FooDao(); - } - - @Bean - public IFooAuditableDao fooHibernateAuditableDao() { - return new FooAuditableDao(); - } - - private final Properties hibernateProperties() { - final Properties hibernateProperties = new Properties(); - hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); - hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); - - hibernateProperties.setProperty("hibernate.show_sql", "true"); - // hibernateProperties.setProperty("hibernate.format_sql", "true"); - // hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true"); - - // Envers properties - hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", env.getProperty("envers.audit_table_suffix")); - - return hibernateProperties; - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceXmlConfig.java b/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceXmlConfig.java deleted file mode 100644 index 9cbeb8e1f8..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/java/com/baeldung/spring/PersistenceXmlConfig.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung.spring; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.ImportResource; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -@Configuration -@EnableTransactionManagement -@ComponentScan({ "com.baeldung.persistence.dao", "com.baeldung.persistence.service" }) -@ImportResource({ "classpath:hibernate4Config.xml" }) -public class PersistenceXmlConfig { - - public PersistenceXmlConfig() { - super(); - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/fetching.cfg.xml b/persistence-modules/spring-hibernate4/src/main/resources/fetching.cfg.xml deleted file mode 100644 index 1b9a4a191c..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/fetching.cfg.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - com.mysql.jdbc.Driver - jdbc:mysql://localhost:3306/test - root - iamtheking - org.hibernate.dialect.MySQLDialect - true - validate - - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml b/persistence-modules/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml deleted file mode 100644 index c5f608e1a7..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/fetchingLazy.cfg.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - com.mysql.jdbc.Driver - jdbc:mysql://localhost:3306/test - root - iamtheking - org.hibernate.dialect.MySQLDialect - true - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/fetching_create_queries.sql b/persistence-modules/spring-hibernate4/src/main/resources/fetching_create_queries.sql deleted file mode 100644 index b36d9828f1..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/fetching_create_queries.sql +++ /dev/null @@ -1,14 +0,0 @@ -CREATE TABLE `user` ( - `user_id` int(10) NOT NULL AUTO_INCREMENT, - PRIMARY KEY (`user_id`) -) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 ; - - -CREATE TABLE `user_order` ( - `ORDER_ID` int(10) NOT NULL AUTO_INCREMENT, - `USER_ID` int(10) NOT NULL DEFAULT '0', - PRIMARY KEY (`ORDER_ID`,`USER_ID`), - KEY `USER_ID` (`USER_ID`), - CONSTRAINT `user_order_ibfk_1` FOREIGN KEY (`USER_ID`) REFERENCES `USER` (`user_id`) -) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; - diff --git a/persistence-modules/spring-hibernate4/src/main/resources/hibernate4Config.xml b/persistence-modules/spring-hibernate4/src/main/resources/hibernate4Config.xml deleted file mode 100644 index ca507802cd..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/hibernate4Config.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - ${hibernate.hbm2ddl.auto} - ${hibernate.dialect} - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/immutable.cfg.xml b/persistence-modules/spring-hibernate4/src/main/resources/immutable.cfg.xml deleted file mode 100644 index fe1e3cb723..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/immutable.cfg.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - org.hsqldb.jdbcDriver - jdbc:hsqldb:hsql:mem://localhost/xdb - sa - - - - 1 - - - org.hibernate.dialect.HSQLDialect - - - thread - - - org.hibernate.cache.NoCacheProvider - - - true - - - update - - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/insert_statements.sql b/persistence-modules/spring-hibernate4/src/main/resources/insert_statements.sql deleted file mode 100644 index ae008f29bc..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/insert_statements.sql +++ /dev/null @@ -1,31 +0,0 @@ -insert into item (item_id, item_name, item_desc, item_price) -values(1,'item One', 'test 1', 35.12); - -insert into item (item_id, item_name, item_desc, item_price) -values(2,'Pogo stick', 'Pogo stick', 466.12); -insert into item (item_id, item_name, item_desc, item_price) -values(3,'Raft', 'Raft', 345.12); - -insert into item (item_id, item_name, item_desc, item_price) -values(4,'Skate Board', 'Skating', 135.71); - -insert into item (item_id, item_name, item_desc, item_price) -values(5,'Umbrella', 'Umbrella for Rain', 619.25); - -insert into item (item_id, item_name, item_desc, item_price) -values(6,'Glue', 'Glue for home', 432.73); - -insert into item (item_id, item_name, item_desc, item_price) -values(7,'Paint', 'Paint for Room', 1311.40); - -insert into item (item_id, item_name, item_desc, item_price) -values(8,'Red paint', 'Red paint for room', 1135.71); - -insert into item (item_id, item_name, item_desc, item_price) -values(9,'Household Chairs', 'Chairs for house', 25.71); - -insert into item (item_id, item_name, item_desc, item_price) -values(10,'Office Chairs', 'Chairs for office', 395.98); - -insert into item (item_id, item_name, item_desc, item_price) -values(11,'Outdoor Chairs', 'Chairs for outdoor activities', 1234.36); diff --git a/persistence-modules/spring-hibernate4/src/main/resources/logback.xml b/persistence-modules/spring-hibernate4/src/main/resources/logback.xml deleted file mode 100644 index 56af2d397e..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/persistence-mysql.properties b/persistence-modules/spring-hibernate4/src/main/resources/persistence-mysql.properties deleted file mode 100644 index f6b6ab6fca..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/persistence-mysql.properties +++ /dev/null @@ -1,13 +0,0 @@ -# jdbc.X -jdbc.driverClassName=com.mysql.jdbc.Driver -jdbc.url=jdbc:mysql://localhost:3306/spring_hibernate4_01?createDatabaseIfNotExist=true -jdbc.user=tutorialuser -jdbc.pass=tutorialmy5ql - -# hibernate.X -hibernate.dialect=org.hibernate.dialect.MySQL5Dialect -hibernate.show_sql=false -hibernate.hbm2ddl.auto=create-drop - -# envers.X -envers.audit_table_suffix=_audit_log diff --git a/persistence-modules/spring-hibernate4/src/main/resources/stored_procedure.sql b/persistence-modules/spring-hibernate4/src/main/resources/stored_procedure.sql deleted file mode 100644 index 9cedb75c37..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/stored_procedure.sql +++ /dev/null @@ -1,20 +0,0 @@ -DELIMITER // - CREATE PROCEDURE GetFoosByName(IN fooName VARCHAR(255)) - LANGUAGE SQL - DETERMINISTIC - SQL SECURITY DEFINER - BEGIN - SELECT * FROM foo WHERE name = fooName; - END // -DELIMITER ; - - -DELIMITER // - CREATE PROCEDURE GetAllFoos() - LANGUAGE SQL - DETERMINISTIC - SQL SECURITY DEFINER - BEGIN - SELECT * FROM foo; - END // -DELIMITER ; \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/main/resources/webSecurityConfig.xml b/persistence-modules/spring-hibernate4/src/main/resources/webSecurityConfig.xml deleted file mode 100644 index e5c19a4ad7..0000000000 --- a/persistence-modules/spring-hibernate4/src/main/resources/webSecurityConfig.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/SpringContextTest.java deleted file mode 100644 index e19965773e..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/SpringContextTest.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.spring.PersistenceConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) -public class SpringContextTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java deleted file mode 100644 index 65bf36f8bf..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.hibernate.fetching; - -import com.baeldung.hibernate.fetching.model.OrderDetail; -import com.baeldung.hibernate.fetching.view.FetchingAppView; -import org.hibernate.Hibernate; -import org.junit.Before; -import org.junit.Test; - -import java.util.Set; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -public class HibernateFetchingIntegrationTest { - - // this loads sample data in the database - @Before - public void addFecthingTestData() { - FetchingAppView fav = new FetchingAppView(); - fav.createTestData(); - } - - // testLazyFetching() tests the lazy loading - // Since it lazily loaded so orderDetalSetLazy won't - // be initialized - @Test - public void testLazyFetching() { - FetchingAppView fav = new FetchingAppView(); - Set orderDetalSetLazy = fav.lazyLoaded(); - assertFalse(Hibernate.isInitialized(orderDetalSetLazy)); - } - - // testEagerFetching() tests the eager loading - // Since it eagerly loaded so orderDetalSetLazy would - // be initialized - @Test - public void testEagerFetching() { - FetchingAppView fav = new FetchingAppView(); - Set orderDetalSetEager = fav.eagerLoaded(); - assertTrue(Hibernate.isInitialized(orderDetalSetEager)); - } -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java deleted file mode 100644 index f5c45a5d6f..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.persistence; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -import com.baeldung.persistence.audit.AuditTestSuite; -import com.baeldung.persistence.hibernate.FooPaginationPersistenceIntegrationTest; -import com.baeldung.persistence.hibernate.FooSortingPersistenceIntegrationTest; -import com.baeldung.persistence.service.FooServiceBasicPersistenceIntegrationTest; -import com.baeldung.persistence.service.FooServicePersistenceIntegrationTest; -import com.baeldung.persistence.service.ParentServicePersistenceIntegrationTest; - -@RunWith(Suite.class) -@Suite.SuiteClasses({ // @formatter:off - AuditTestSuite.class - ,FooServiceBasicPersistenceIntegrationTest.class - ,FooPaginationPersistenceIntegrationTest.class - ,FooServicePersistenceIntegrationTest.class - ,ParentServicePersistenceIntegrationTest.class - ,FooSortingPersistenceIntegrationTest.class - -}) // @formatter:on -public class IntegrationTestSuite { - // -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java deleted file mode 100644 index 34c725d62b..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.persistence.audit; - -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - -@RunWith(Suite.class) -@Suite.SuiteClasses({ // @formatter:off - EnversFooBarAuditIntegrationTest.class, - JPABarAuditIntegrationTest.class, - SpringDataJPABarAuditIntegrationTest.class -}) // @formatter:on -public class AuditTestSuite { - // -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java deleted file mode 100644 index 444324dafc..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java +++ /dev/null @@ -1,146 +0,0 @@ -package com.baeldung.persistence.audit; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.util.List; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.service.IBarAuditableService; -import com.baeldung.persistence.service.IFooAuditableService; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) -public class EnversFooBarAuditIntegrationTest { - - private static Logger logger = LoggerFactory.getLogger(EnversFooBarAuditIntegrationTest.class); - - @BeforeClass - public static void setUpBeforeClass() throws Exception { - logger.info("setUpBeforeClass()"); - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - logger.info("tearDownAfterClass()"); - } - - @Autowired - @Qualifier("fooHibernateAuditableService") - private IFooAuditableService fooService; - - @Autowired - @Qualifier("barHibernateAuditableService") - private IBarAuditableService barService; - - @Autowired - private SessionFactory sessionFactory; - - private Session session; - - @Before - public void setUp() throws Exception { - logger.info("setUp()"); - makeRevisions(); - session = sessionFactory.openSession(); - } - - @After - public void tearDown() throws Exception { - logger.info("tearDown()"); - session.close(); - } - - private void makeRevisions() { - final Bar bar = rev1(); - rev2(bar); - rev3(bar); - rev4(bar); - } - - // REV #1: insert BAR & FOO1 - private Bar rev1() { - final Bar bar = new Bar("BAR"); - final Foo foo1 = new Foo("FOO1"); - foo1.setBar(bar); - fooService.create(foo1); - return bar; - } - - // REV #2: insert FOO2 & update BAR - private void rev2(final Bar bar) { - final Foo foo2 = new Foo("FOO2"); - foo2.setBar(bar); - fooService.create(foo2); - } - - // REV #3: update BAR - private void rev3(final Bar bar) { - - bar.setName("BAR1"); - barService.update(bar); - } - - // REV #4: insert FOO3 & update BAR - private void rev4(final Bar bar) { - - final Foo foo3 = new Foo("FOO3"); - foo3.setBar(bar); - fooService.create(foo3); - } - - @Test - public final void whenFooBarsModified_thenFooBarsAudited() { - - List barRevisionList; - List fooRevisionList; - - // test Bar revisions - - barRevisionList = barService.getRevisions(); - - assertNotNull(barRevisionList); - assertEquals(4, barRevisionList.size()); - - assertEquals("BAR", barRevisionList.get(0).getName()); - assertEquals("BAR", barRevisionList.get(1).getName()); - assertEquals("BAR1", barRevisionList.get(2).getName()); - assertEquals("BAR1", barRevisionList.get(3).getName()); - - assertEquals(1, barRevisionList.get(0).getFooSet().size()); - assertEquals(2, barRevisionList.get(1).getFooSet().size()); - assertEquals(2, barRevisionList.get(2).getFooSet().size()); - assertEquals(3, barRevisionList.get(3).getFooSet().size()); - - // test Foo revisions - - fooRevisionList = fooService.getRevisions(); - assertNotNull(fooRevisionList); - assertEquals(3, fooRevisionList.size()); - assertEquals("FOO1", fooRevisionList.get(0).getName()); - assertEquals("FOO2", fooRevisionList.get(1).getName()); - assertEquals("FOO3", fooRevisionList.get(2).getName()); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java deleted file mode 100644 index 733074a6a3..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.baeldung.persistence.audit; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.model.Bar.OPERATION; -import com.baeldung.persistence.service.IBarService; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -public class JPABarAuditIntegrationTest { - - private static Logger logger = LoggerFactory.getLogger(JPABarAuditIntegrationTest.class); - - @BeforeClass - public static void setUpBeforeClass() throws Exception { - logger.info("setUpBeforeClass()"); - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - logger.info("tearDownAfterClass()"); - } - - @Autowired - @Qualifier("barJpaService") - private IBarService barService; - - @Autowired - private EntityManagerFactory entityManagerFactory; - - private EntityManager em; - - @Before - public void setUp() throws Exception { - logger.info("setUp()"); - em = entityManagerFactory.createEntityManager(); - } - - @After - public void tearDown() throws Exception { - logger.info("tearDown()"); - em.close(); - } - - @Test - public final void whenBarsModified_thenBarsAudited() { - - // insert BAR1 - Bar bar1 = new Bar("BAR1"); - barService.create(bar1); - - // update BAR1 - bar1.setName("BAR1a"); - barService.update(bar1); - - // insert BAR2 - Bar bar2 = new Bar("BAR2"); - barService.create(bar2); - - // update BAR1 - bar1.setName("BAR1b"); - barService.update(bar1); - - // get BAR1 and BAR2 from the DB and check the audit values - // detach instances from persistence context to make sure we fire db - em.detach(bar1); - em.detach(bar2); - bar1 = barService.findOne(bar1.getId()); - bar2 = barService.findOne(bar2.getId()); - - assertNotNull(bar1); - assertNotNull(bar2); - assertEquals(OPERATION.UPDATE, bar1.getOperation()); - assertEquals(OPERATION.INSERT, bar2.getOperation()); - assertTrue(bar1.getTimestamp() > bar2.getTimestamp()); - - barService.deleteById(bar1.getId()); - barService.deleteById(bar2.getId()); - - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java deleted file mode 100644 index 18227abd28..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.baeldung.persistence.audit; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; - -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.security.test.context.support.WithMockUser; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.service.IBarService; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -public class SpringDataJPABarAuditIntegrationTest { - - private static Logger logger = LoggerFactory.getLogger(SpringDataJPABarAuditIntegrationTest.class); - - @BeforeClass - public static void setUpBeforeClass() throws Exception { - logger.info("setUpBeforeClass()"); - } - - @AfterClass - public static void tearDownAfterClass() throws Exception { - logger.info("tearDownAfterClass()"); - } - - @Autowired - @Qualifier("barSpringDataJpaService") - private IBarService barService; - - @Autowired - private EntityManagerFactory entityManagerFactory; - - private EntityManager em; - - @Before - public void setUp() throws Exception { - logger.info("setUp()"); - em = entityManagerFactory.createEntityManager(); - } - - @After - public void tearDown() throws Exception { - logger.info("tearDown()"); - em.close(); - } - - @Test - @WithMockUser(username = "tutorialuser") - public final void whenBarsModified_thenBarsAudited() { - Bar bar = new Bar("BAR1"); - barService.create(bar); - assertEquals(bar.getCreatedDate(), bar.getModifiedDate()); - assertEquals("tutorialuser", bar.getCreatedBy(), bar.getModifiedBy()); - bar.setName("BAR2"); - bar = barService.update(bar); - assertTrue(bar.getCreatedDate() < bar.getModifiedDate()); - assertEquals("tutorialuser", bar.getCreatedBy(), bar.getModifiedBy()); - } -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java deleted file mode 100644 index da840dc027..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java +++ /dev/null @@ -1,101 +0,0 @@ -package com.baeldung.persistence.hibernate; - -import java.util.List; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.model.Bar; -import org.hibernate.HibernateException; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.Transaction; - -import com.google.common.collect.Lists; - -public class FooFixtures { - private SessionFactory sessionFactory; - - public FooFixtures(final SessionFactory sessionFactory) { - super(); - - this.sessionFactory = sessionFactory; - } - - // API - - public void createBars() { - Session session = null; - Transaction tx = null; - session = sessionFactory.openSession(); - tx = session.getTransaction(); - try { - tx.begin(); - for (int i = 156; i < 160; i++) { - final Bar bar = new Bar(); - bar.setName("Bar_" + i); - final Foo foo = new Foo("Foo_" + (i + 120)); - foo.setBar(bar); - session.save(foo); - final Foo foo2 = new Foo(null); - if (i % 2 == 0) - foo2.setName("LuckyFoo" + (i + 120)); - foo2.setBar(bar); - session.save(foo2); - bar.getFooSet().add(foo); - bar.getFooSet().add(foo2); - session.merge(bar); - } - tx.commit(); - session.flush(); - } catch (final HibernateException he) { - if (tx != null) - tx.rollback(); - System.out.println("Not able to open session"); - he.printStackTrace(); - } catch (final Exception e) { - e.printStackTrace(); - } finally { - if (session != null) - session.close(); - } - - } - - public void createFoos() { - Session session = null; - Transaction tx = null; - session = sessionFactory.openSession(); - tx = session.getTransaction(); - final List fooList = Lists.newArrayList(); - for (int i = 35; i < 46; i++) { - - final Foo foo = new Foo(); - foo.setName("Foo_" + (i + 120)); - final Bar bar = new Bar("bar_" + i); - bar.getFooSet().add(foo); - foo.setBar(bar); - fooList.add(foo); - - } - try { - tx.begin(); - for (final Foo foo : fooList) { - - session.save(foo.getBar()); - session.save(foo); - } - tx.commit(); - session.flush(); - } catch (final HibernateException he) { - if (tx != null) - tx.rollback(); - System.out.println("Not able to open session"); - he.printStackTrace(); - } catch (final Exception e) { - e.printStackTrace(); - } finally { - if (session != null) - session.close(); - } - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java deleted file mode 100644 index fd7bc4aabf..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java +++ /dev/null @@ -1,185 +0,0 @@ -package com.baeldung.persistence.hibernate; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.hamcrest.Matchers.hasSize; -import static org.hamcrest.Matchers.lessThan; -import static org.junit.Assert.assertThat; - -import java.util.List; - -import org.hibernate.Criteria; -import org.hibernate.Query; -import org.hibernate.ScrollMode; -import org.hibernate.ScrollableResults; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.criterion.Projections; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.persistence.service.IFooService; -import com.baeldung.spring.config.PersistenceTestConfig; -import com.google.common.collect.Lists; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -public class FooPaginationPersistenceIntegrationTest { - - @Autowired - private IFooService fooService; - - @Autowired - private SessionFactory sessionFactory; - - private Session session; - - // tests - - @Before - public final void before() { - final int minimalNumberOfEntities = 25; - if (fooService.findAll().size() <= minimalNumberOfEntities) { - for (int i = 0; i < minimalNumberOfEntities; i++) { - fooService.create(new Foo(randomAlphabetic(6))); - } - } - - session = sessionFactory.openSession(); - } - - @After - public final void after() { - session.close(); - } - - // tests - - @Test - public final void whenContextIsBootstrapped_thenNoExceptions() { - // - } - - @SuppressWarnings("unchecked") - @Test - public final void whenRetrievingPaginatedEntities_thenCorrectSize() { - final int pageNumber = 1; - final int pageSize = 10; - - final Query query = session.createQuery("From Foo"); - query.setFirstResult((pageNumber - 1) * pageSize); - query.setMaxResults(pageSize); - final List fooList = query.list(); - - assertThat(fooList, hasSize(pageSize)); - } - - @SuppressWarnings("unchecked") - @Test - public final void whenRetrievingAllPages_thenCorrect() { - int pageNumber = 1; - final int pageSize = 10; - - final String countQ = "Select count (f.id) from Foo f"; - final Query countQuery = session.createQuery(countQ); - final Long countResult = (Long) countQuery.uniqueResult(); - - final List fooList = Lists.newArrayList(); - int totalEntities = 0; - final Query query = session.createQuery("From Foo"); - while (totalEntities < countResult) { - query.setFirstResult((pageNumber - 1) * pageSize); - query.setMaxResults(pageSize); - fooList.addAll(query.list()); - totalEntities = fooList.size(); - pageNumber++; - } - } - - @SuppressWarnings("unchecked") - @Test - public final void whenRetrievingLastPage_thenCorrectSize() { - final int pageSize = 10; - - final String countQ = "Select count (f.id) from Foo f"; - final Query countQuery = session.createQuery(countQ); - final Long countResults = (Long) countQuery.uniqueResult(); - final int lastPageNumber = (int) (Math.ceil(countResults / pageSize)); - - final Query selectQuery = session.createQuery("From Foo"); - selectQuery.setFirstResult((lastPageNumber - 1) * pageSize); - selectQuery.setMaxResults(pageSize); - final List lastPage = selectQuery.list(); - - assertThat(lastPage, hasSize(lessThan(pageSize + 1))); - } - - // testing - scrollable - - @Test - public final void givenUsingTheScrollableApi_whenRetrievingPaginatedData_thenCorrect() { - final int pageSize = 10; - final String hql = "FROM Foo f order by f.name"; - final Query query = session.createQuery(hql); - - final ScrollableResults resultScroll = query.scroll(ScrollMode.FORWARD_ONLY); - - // resultScroll.last(); - // final int totalResults = resultScroll.getRowNumber() + 1; - - resultScroll.first(); - resultScroll.scroll(0); - final List fooPage = Lists.newArrayList(); - int i = 0; - while (pageSize > i++) { - fooPage.add((Foo) resultScroll.get(0)); - if (!resultScroll.next()) { - break; - } - } - - assertThat(fooPage, hasSize(lessThan(10 + 1))); - } - - @SuppressWarnings("unchecked") - @Test - public final void givenUsingTheCriteriaApi_whenRetrievingFirstPage_thenCorrect() { - final int pageSize = 10; - - final Criteria criteria = session.createCriteria(Foo.class); - criteria.setFirstResult(0); - criteria.setMaxResults(pageSize); - final List firstPage = criteria.list(); - - assertThat(firstPage, hasSize(pageSize)); - } - - @SuppressWarnings("unchecked") - @Test - public final void givenUsingTheCriteriaApi_whenRetrievingPaginatedData_thenCorrect() { - final Criteria criteriaCount = session.createCriteria(Foo.class); - criteriaCount.setProjection(Projections.rowCount()); - final Long count = (Long) criteriaCount.uniqueResult(); - - int pageNumber = 1; - final int pageSize = 10; - final List fooList = Lists.newArrayList(); - - final Criteria criteria = session.createCriteria(Foo.class); - int totalEntities = 0; - while (totalEntities < count.intValue()) { - criteria.setFirstResult((pageNumber - 1) * pageSize); - criteria.setMaxResults(pageSize); - fooList.addAll(criteria.list()); - totalEntities = fooList.size(); - pageNumber++; - } - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java deleted file mode 100644 index 8173088af0..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.baeldung.persistence.hibernate; - -import static org.junit.Assert.assertNull; - -import java.util.List; -import java.util.Set; - -import org.hibernate.Criteria; -import org.hibernate.NullPrecedence; -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.criterion.Order; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Bar; -import com.baeldung.persistence.model.Foo; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -@SuppressWarnings("unchecked") -public class FooSortingPersistenceIntegrationTest { - - @Autowired - private SessionFactory sessionFactory; - - private Session session; - - @Before - public void before() { - session = sessionFactory.openSession(); - - session.beginTransaction(); - - final FooFixtures fooData = new FooFixtures(sessionFactory); - fooData.createBars(); - } - - @After - public void after() { - session.getTransaction().commit(); - session.close(); - } - - @Test - public final void whenHQlSortingByOneAttribute_thenPrintSortedResults() { - final String hql = "FROM Foo f ORDER BY f.name"; - final Query query = session.createQuery(hql); - final List fooList = query.list(); - for (final Foo foo : fooList) { - System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); - } - } - - @Test - public final void whenHQlSortingByStringNullLast_thenLastNull() { - final String hql = "FROM Foo f ORDER BY f.name NULLS LAST"; - final Query query = session.createQuery(hql); - final List fooList = query.list(); - - assertNull(fooList.get(fooList.toArray().length - 1).getName()); - for (final Foo foo : fooList) { - System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); - } - } - - @Test - public final void whenSortingByStringNullsFirst_thenReturnNullsFirst() { - final String hql = "FROM Foo f ORDER BY f.name NULLS FIRST"; - final Query query = session.createQuery(hql); - final List fooList = query.list(); - assertNull(fooList.get(0).getName()); - for (final Foo foo : fooList) { - System.out.println("Name:" + foo.getName()); - - } - } - - @Test - public final void whenHQlSortingByOneAttribute_andOrderDirection_thenPrintSortedResults() { - final String hql = "FROM Foo f ORDER BY f.name ASC"; - final Query query = session.createQuery(hql); - final List fooList = query.list(); - for (final Foo foo : fooList) { - System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); - } - } - - @Test - public final void whenHQlSortingByMultipleAttributes_thenSortedResults() { - final String hql = "FROM Foo f ORDER BY f.name, f.id"; - final Query query = session.createQuery(hql); - final List fooList = query.list(); - for (final Foo foo : fooList) { - System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); - } - } - - @Test - public final void whenHQlSortingByMultipleAttributes_andOrderDirection_thenPrintSortedResults() { - final String hql = "FROM Foo f ORDER BY f.name DESC, f.id ASC"; - final Query query = session.createQuery(hql); - final List fooList = query.list(); - for (final Foo foo : fooList) { - System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); - } - } - - @Test - public final void whenHQLCriteriaSortingByOneAttr_thenPrintSortedResults() { - final Criteria criteria = session.createCriteria(Foo.class, "FOO"); - criteria.addOrder(Order.asc("id")); - final List fooList = criteria.list(); - for (final Foo foo : fooList) { - System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); - } - } - - @Test - public final void whenHQLCriteriaSortingByMultipAttr_thenSortedResults() { - final Criteria criteria = session.createCriteria(Foo.class, "FOO"); - criteria.addOrder(Order.asc("name")); - criteria.addOrder(Order.asc("id")); - final List fooList = criteria.list(); - for (final Foo foo : fooList) { - System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); - } - } - - @Test - public final void whenCriteriaSortingStringNullsLastAsc_thenNullsLast() { - final Criteria criteria = session.createCriteria(Foo.class, "FOO"); - criteria.addOrder(Order.asc("name").nulls(NullPrecedence.LAST)); - final List fooList = criteria.list(); - assertNull(fooList.get(fooList.toArray().length - 1).getName()); - for (final Foo foo : fooList) { - System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); - } - } - - @Test - public final void whenCriteriaSortingStringNullsFirstDesc_thenNullsFirst() { - final Criteria criteria = session.createCriteria(Foo.class, "FOO"); - criteria.addOrder(Order.desc("name").nulls(NullPrecedence.FIRST)); - final List fooList = criteria.list(); - assertNull(fooList.get(0).getName()); - for (final Foo foo : fooList) { - System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); - } - } - - @Test - public final void whenSortingBars_thenBarsWithSortedFoos() { - final String hql = "FROM Bar b ORDER BY b.id"; - final Query query = session.createQuery(hql); - final List barList = query.list(); - for (final Bar bar : barList) { - final Set fooSet = bar.getFooSet(); - System.out.println("Bar Id:" + bar.getId()); - for (final Foo foo : fooSet) { - System.out.println("FooName:" + foo.getName()); - } - } - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java deleted file mode 100644 index ef83af3a0d..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.baeldung.persistence.save; - -import com.baeldung.persistence.model.Person; -import org.hibernate.HibernateException; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.cfg.Configuration; -import org.hibernate.dialect.HSQLDialect; -import org.hibernate.service.ServiceRegistry; -import org.junit.*; - -import static org.junit.Assert.*; - -/** - * Testing specific implementation details for different methods: - * persist, save, merge, update, saveOrUpdate. - */ -public class SaveMethodsIntegrationTest { - - private static SessionFactory sessionFactory; - - private Session session; - - @BeforeClass - public static void beforeTests() { - Configuration configuration = new Configuration().addAnnotatedClass(Person.class).setProperty("hibernate.dialect", HSQLDialect.class.getName()).setProperty("hibernate.connection.driver_class", org.hsqldb.jdbcDriver.class.getName()) - .setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:test").setProperty("hibernate.connection.username", "sa").setProperty("hibernate.connection.password", "").setProperty("hibernate.hbm2ddl.auto", "update"); - ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); - sessionFactory = configuration.buildSessionFactory(serviceRegistry); - } - - @Before - public void setUp() { - session = sessionFactory.openSession(); - session.beginTransaction(); - } - - @Test - public void whenPersistTransient_thenSavedToDatabaseOnCommit() { - - Person person = new Person(); - person.setName("John"); - session.persist(person); - - session.getTransaction().commit(); - session.close(); - - session = sessionFactory.openSession(); - session.beginTransaction(); - - assertNotNull(session.get(Person.class, person.getId())); - - } - - @Test - public void whenPersistPersistent_thenNothingHappens() { - - Person person = new Person(); - person.setName("John"); - - session.persist(person); - Long id1 = person.getId(); - - session.persist(person); - Long id2 = person.getId(); - - assertEquals(id1, id2); - } - - @Test(expected = HibernateException.class) - public void whenPersistDetached_thenThrowsException() { - - Person person = new Person(); - person.setName("John"); - session.persist(person); - session.evict(person); - - session.persist(person); - - } - - @Test - public void whenSaveTransient_thenIdGeneratedImmediately() { - - Person person = new Person(); - person.setName("John"); - - assertNull(person.getId()); - - Long id = (Long) session.save(person); - - assertNotNull(id); - - session.getTransaction().commit(); - session.close(); - - assertEquals(id, person.getId()); - - session = sessionFactory.openSession(); - session.beginTransaction(); - - assertNotNull(session.get(Person.class, person.getId())); - - } - - @Test - public void whenSavePersistent_thenNothingHappens() { - - Person person = new Person(); - person.setName("John"); - Long id1 = (Long) session.save(person); - Long id2 = (Long) session.save(person); - assertEquals(id1, id2); - - } - - @Test - public void whenSaveDetached_thenNewInstancePersisted() { - - Person person = new Person(); - person.setName("John"); - Long id1 = (Long) session.save(person); - session.evict(person); - - Long id2 = (Long) session.save(person); - assertNotEquals(id1, id2); - - } - - @Test - public void whenMergeDetached_thenEntityUpdatedFromDatabase() { - - Person person = new Person(); - person.setName("John"); - session.save(person); - session.evict(person); - - person.setName("Mary"); - Person mergedPerson = (Person) session.merge(person); - - assertNotSame(person, mergedPerson); - assertEquals("Mary", mergedPerson.getName()); - - } - - @Test - public void whenMergeTransient_thenNewEntitySavedToDatabase() { - - Person person = new Person(); - person.setName("John"); - Person mergedPerson = (Person) session.merge(person); - - session.getTransaction().commit(); - session.beginTransaction(); - - assertNull(person.getId()); - assertNotNull(mergedPerson.getId()); - - } - - @Test - public void whenMergePersistent_thenReturnsSameObject() { - - Person person = new Person(); - person.setName("John"); - session.save(person); - - Person mergedPerson = (Person) session.merge(person); - - assertSame(person, mergedPerson); - - } - - @Test - public void whenUpdateDetached_thenEntityUpdatedFromDatabase() { - - Person person = new Person(); - person.setName("John"); - session.save(person); - session.evict(person); - - person.setName("Mary"); - session.update(person); - assertEquals("Mary", person.getName()); - - } - - @Test(expected = HibernateException.class) - public void whenUpdateTransient_thenThrowsException() { - - Person person = new Person(); - person.setName("John"); - session.update(person); - - } - - @Test - public void whenUpdatePersistent_thenNothingHappens() { - - Person person = new Person(); - person.setName("John"); - session.save(person); - - session.update(person); - - } - - @Test - public void whenSaveOrUpdateDetached_thenEntityUpdatedFromDatabase() { - - Person person = new Person(); - person.setName("John"); - session.save(person); - session.evict(person); - - person.setName("Mary"); - session.saveOrUpdate(person); - assertEquals("Mary", person.getName()); - - } - - @Test - public void whenSaveOrUpdateTransient_thenSavedToDatabaseOnCommit() { - - Person person = new Person(); - person.setName("John"); - session.saveOrUpdate(person); - - session.getTransaction().commit(); - session.close(); - - session = sessionFactory.openSession(); - session.beginTransaction(); - - assertNotNull(session.get(Person.class, person.getId())); - - } - - @Test - public void whenSaveOrUpdatePersistent_thenNothingHappens() { - - Person person = new Person(); - person.setName("John"); - session.save(person); - - session.saveOrUpdate(person); - - } - - @After - public void tearDown() { - session.getTransaction().commit(); - session.close(); - } - - @AfterClass - public static void afterTests() { - sessionFactory.close(); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java deleted file mode 100644 index 146f8e9622..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.baeldung.persistence.service; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; - -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -public class FooServiceBasicPersistenceIntegrationTest { - - @Autowired - private SessionFactory sessionFactory; - - @Autowired - private IFooService fooService; - - private Session session; - - // tests - - @Before - public final void before() { - session = sessionFactory.openSession(); - } - - @After - public final void after() { - session.close(); - } - - // tests - - @Test - public final void whenContextIsBootstrapped_thenNoExceptions() { - // - } - - @Test - public final void whenEntityIsCreated_thenNoExceptions() { - fooService.create(new Foo(randomAlphabetic(6))); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java deleted file mode 100644 index 6d426849a6..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.baeldung.persistence.service; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; - -import org.junit.Ignore; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.dao.DataAccessException; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.dao.InvalidDataAccessApiUsageException; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -public class FooServicePersistenceIntegrationTest { - - @Autowired - @Qualifier("fooHibernateService") - private IFooService service; - - // tests - - @Test - public final void whenContextIsBootstrapped_thenNoExceptions() { - // - } - - @Test - public final void whenEntityIsCreated_thenNoExceptions() { - service.create(new Foo(randomAlphabetic(6))); - } - - @Test(expected = DataIntegrityViolationException.class) - @Ignore("work in progress") - public final void whenInvalidEntityIsCreated_thenDataException() { - service.create(new Foo()); - } - - @Test(expected = DataIntegrityViolationException.class) - public final void whenEntityWithLongNameIsCreated_thenDataException() { - service.create(new Foo(randomAlphabetic(2048))); - } - - @Test(expected = InvalidDataAccessApiUsageException.class) - @Ignore("Right now, persist has saveOrUpdate semantics, so this will no longer fail") - public final void whenSameEntityIsCreatedTwice_thenDataException() { - final Foo entity = new Foo(randomAlphabetic(8)); - service.create(entity); - service.create(entity); - } - - @Test(expected = DataAccessException.class) - public final void temp_whenInvalidEntityIsCreated_thenDataException() { - service.create(new Foo(randomAlphabetic(2048))); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java deleted file mode 100644 index d9353f1ad1..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java +++ /dev/null @@ -1,121 +0,0 @@ -package com.baeldung.persistence.service; - -import java.util.List; - -import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; -import static org.junit.Assert.assertEquals; - -import org.hibernate.Query; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.hibernate.exception.SQLGrammarException; -import org.junit.After; -import org.junit.Assume; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Foo; -import com.baeldung.spring.PersistenceConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) -public class FooStoredProceduresLiveTest { - - private static final Logger LOGGER = LoggerFactory.getLogger(FooStoredProceduresLiveTest.class); - - @Autowired - private SessionFactory sessionFactory; - - @Autowired - private IFooService fooService; - - private Session session; - - @Before - public final void before() { - session = sessionFactory.openSession(); - Assume.assumeTrue(getAllFoosExists()); - Assume.assumeTrue(getFoosByNameExists()); - } - - private boolean getFoosByNameExists() { - try { - Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(Foo.class); - sqlQuery.list(); - return true; - } catch (SQLGrammarException e) { - LOGGER.error("WARNING : GetFoosByName() Procedure is may be missing ", e); - return false; - } - } - - private boolean getAllFoosExists() { - try { - Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(Foo.class); - sqlQuery.list(); - return true; - } catch (SQLGrammarException e) { - LOGGER.error("WARNING : GetAllFoos() Procedure is may be missing ", e); - return false; - } - } - - @After - public final void after() { - session.close(); - } - - @Test - public final void getAllFoosUsingStoredProcedures() { - - fooService.create(new Foo(randomAlphabetic(6))); - - // Stored procedure getAllFoos using createSQLQuery - Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(Foo.class); - @SuppressWarnings("unchecked") - List allFoos = sqlQuery.list(); - for (Foo foo : allFoos) { - LOGGER.info("getAllFoos() SQL Query result : {}", foo.getName()); - } - assertEquals(allFoos.size(), fooService.findAll().size()); - - // Stored procedure getAllFoos using a Named Query - Query namedQuery = session.getNamedQuery("callGetAllFoos"); - @SuppressWarnings("unchecked") - List allFoos2 = namedQuery.list(); - for (Foo foo : allFoos2) { - LOGGER.info("getAllFoos() NamedQuery result : {}", foo.getName()); - } - assertEquals(allFoos2.size(), fooService.findAll().size()); - } - - @Test - public final void getFoosByNameUsingStoredProcedures() { - - fooService.create(new Foo("NewFooName")); - - // Stored procedure getFoosByName using createSQLQuery() - Query sqlQuery = session.createSQLQuery("CALL GetFoosByName(:fooName)").addEntity(Foo.class).setParameter("fooName", "NewFooName"); - @SuppressWarnings("unchecked") - List allFoosByName = sqlQuery.list(); - for (Foo foo : allFoosByName) { - LOGGER.info("getFoosByName() using SQL Query : found => {}", foo.toString()); - } - - // Stored procedure getFoosByName using getNamedQuery() - Query namedQuery = session.getNamedQuery("callGetFoosByName").setParameter("fooName", "NewFooName"); - @SuppressWarnings("unchecked") - List allFoosByName2 = namedQuery.list(); - for (Foo foo : allFoosByName2) { - LOGGER.info("getFoosByName() using Native Query : found => {}", foo.toString()); - } - - } -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java deleted file mode 100644 index 5a73e39ca2..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung.persistence.service; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.persistence.model.Child; -import com.baeldung.persistence.model.Parent; -import com.baeldung.spring.config.PersistenceTestConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) -public class ParentServicePersistenceIntegrationTest { - - @Autowired - private IParentService service; - - @Autowired - private IChildService childService; - - // tests - - @Test - public final void whenContextIsBootstrapped_thenNoExceptions() { - // - } - - @Test - public final void whenOneToOneEntitiesAreCreated_thenNoExceptions() { - final Child childEntity = new Child(); - childService.create(childEntity); - - final Parent parentEntity = new Parent(childEntity); - service.create(parentEntity); - - System.out.println("Child = " + childService.findOne(childEntity.getId())); - System.out.println("Child - parent = " + childService.findOne(childEntity.getId()).getParent()); - - System.out.println("Parent = " + service.findOne(parentEntity.getId())); - System.out.println("Parent - child = " + service.findOne(parentEntity.getId()).getChild()); - } - - @Test(expected = DataIntegrityViolationException.class) - public final void whenChildIsDeletedWhileParentStillHasForeignKeyToIt_thenDataException() { - final Child childEntity = new Child(); - childService.create(childEntity); - - final Parent parentEntity = new Parent(childEntity); - service.create(parentEntity); - - childService.delete(childEntity); - } - - @Test - public final void whenChildIsDeletedAfterTheParent_thenNoExceptions() { - final Child childEntity = new Child(); - childService.create(childEntity); - - final Parent parentEntity = new Parent(childEntity); - service.create(parentEntity); - - service.delete(parentEntity); - childService.delete(childEntity); - } - -} diff --git a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java b/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java deleted file mode 100644 index 9bf55c902a..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.baeldung.spring.config; - -import java.util.Properties; - -import javax.sql.DataSource; - -import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; -import org.springframework.data.jpa.repository.config.EnableJpaAuditing; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.orm.hibernate4.HibernateTransactionManager; -import org.springframework.orm.hibernate4.LocalSessionFactoryBean; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.JpaVendorAdapter; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import com.baeldung.persistence.dao.IBarAuditableDao; -import com.baeldung.persistence.dao.IBarDao; -import com.baeldung.persistence.dao.IFooAuditableDao; -import com.baeldung.persistence.dao.IFooDao; -import com.baeldung.persistence.dao.impl.BarAuditableDao; -import com.baeldung.persistence.dao.impl.BarDao; -import com.baeldung.persistence.dao.impl.BarJpaDao; -import com.baeldung.persistence.dao.impl.FooAuditableDao; -import com.baeldung.persistence.dao.impl.FooDao; -import com.baeldung.persistence.service.IBarAuditableService; -import com.baeldung.persistence.service.IBarService; -import com.baeldung.persistence.service.IFooAuditableService; -import com.baeldung.persistence.service.IFooService; -import com.baeldung.persistence.service.impl.BarAuditableService; -import com.baeldung.persistence.service.impl.BarJpaService; -import com.baeldung.persistence.service.impl.BarSpringDataJpaService; -import com.baeldung.persistence.service.impl.FooAuditableService; -import com.baeldung.persistence.service.impl.FooService; -import com.google.common.base.Preconditions; - -@Configuration -@EnableTransactionManagement -@EnableJpaRepositories(basePackages = { "com.baeldung.persistence" }, transactionManagerRef = "jpaTransactionManager") -@EnableJpaAuditing -@PropertySource({ "classpath:persistence-h2.properties" }) -@ComponentScan({ "com.baeldung.persistence" }) -public class PersistenceTestConfig { - - @Autowired - private Environment env; - - public PersistenceTestConfig() { - super(); - } - - @Bean - public LocalSessionFactoryBean sessionFactory() { - final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); - sessionFactory.setDataSource(restDataSource()); - sessionFactory.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); - sessionFactory.setHibernateProperties(hibernateProperties()); - - return sessionFactory; - } - - @Bean - public LocalContainerEntityManagerFactoryBean entityManagerFactory() { - final LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); - emf.setDataSource(restDataSource()); - emf.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); - - final JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); - emf.setJpaVendorAdapter(vendorAdapter); - emf.setJpaProperties(hibernateProperties()); - - return emf; - } - - @Bean - public DataSource restDataSource() { - final BasicDataSource dataSource = new BasicDataSource(); - dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); - dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); - dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); - dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); - - return dataSource; - } - - @Bean - public PlatformTransactionManager hibernateTransactionManager() { - final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); - transactionManager.setSessionFactory(sessionFactory().getObject()); - return transactionManager; - } - - @Bean - public PlatformTransactionManager jpaTransactionManager() { - final JpaTransactionManager transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); - return transactionManager; - } - - @Bean - public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { - return new PersistenceExceptionTranslationPostProcessor(); - } - - @Bean - public IBarService barJpaService() { - return new BarJpaService(); - } - - @Bean - public IBarService barSpringDataJpaService() { - return new BarSpringDataJpaService(); - } - - @Bean - public IFooService fooHibernateService() { - return new FooService(); - } - - @Bean - public IBarAuditableService barHibernateAuditableService() { - return new BarAuditableService(); - } - - @Bean - public IFooAuditableService fooHibernateAuditableService() { - return new FooAuditableService(); - } - - @Bean - public IBarDao barJpaDao() { - return new BarJpaDao(); - } - - @Bean - public IBarDao barHibernateDao() { - return new BarDao(); - } - - @Bean - public IBarAuditableDao barHibernateAuditableDao() { - return new BarAuditableDao(); - } - - @Bean - public IFooDao fooHibernateDao() { - return new FooDao(); - } - - @Bean - public IFooAuditableDao fooHibernateAuditableDao() { - return new FooAuditableDao(); - } - - private final Properties hibernateProperties() { - final Properties hibernateProperties = new Properties(); - hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); - hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); - - hibernateProperties.setProperty("hibernate.show_sql", "true"); - // hibernateProperties.setProperty("hibernate.format_sql", "true"); - // hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true"); - - // Envers properties - hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", env.getProperty("envers.audit_table_suffix")); - - return hibernateProperties; - } - -} \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/resources/.gitignore b/persistence-modules/spring-hibernate4/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/resources/fetching.cfg.xml b/persistence-modules/spring-hibernate4/src/test/resources/fetching.cfg.xml deleted file mode 100644 index 55a3aeb51c..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/resources/fetching.cfg.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - org.h2.Driver - jdbc:h2:mem:testdb - sa - - org.hibernate.dialect.H2Dialect - update - true - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml b/persistence-modules/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml deleted file mode 100644 index 8fcf578660..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/resources/fetchingLazy.cfg.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - org.h2.Driver - jdbc:h2:mem:testdb - sa - - org.hibernate.dialect.H2Dialect - update - true - - - - - \ No newline at end of file diff --git a/persistence-modules/spring-hibernate4/src/test/resources/persistence-h2.properties b/persistence-modules/spring-hibernate4/src/test/resources/persistence-h2.properties deleted file mode 100644 index 911619193b..0000000000 --- a/persistence-modules/spring-hibernate4/src/test/resources/persistence-h2.properties +++ /dev/null @@ -1,13 +0,0 @@ -# jdbc.X -jdbc.driverClassName=org.h2.Driver -jdbc.url=jdbc:h2:mem:test -jdbc.user=sa -jdbc.pass= - -# hibernate.X -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.show_sql=false -hibernate.hbm2ddl.auto=create-drop - -# envers.X -envers.audit_table_suffix=_audit_log From 0ba96c9c43465a133934b244313e7e36433233d9 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 28 Sep 2020 23:12:26 +0530 Subject: [PATCH 151/260] JAVA-2432: Moved 1 article to hibernate-enterprise --- .../hibernate-enterprise/README.md | 3 ++- .../hibernate-enterprise/pom.xml | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/persistence-modules/hibernate-enterprise/README.md b/persistence-modules/hibernate-enterprise/README.md index c5606d0970..1a86c32afa 100644 --- a/persistence-modules/hibernate-enterprise/README.md +++ b/persistence-modules/hibernate-enterprise/README.md @@ -9,4 +9,5 @@ This module contains articles about enterprise concerns such as Multitenancy, Er - [Hibernate Aggregate Functions](https://www.baeldung.com/hibernate-aggregate-functions) - [Common Hibernate Exceptions](https://www.baeldung.com/hibernate-exceptions) - [Hibernate Error “Not all named parameters have been set”](https://www.baeldung.com/hibernate-error-named-parameters-not-set) -- [Various Logging Levels in Hibernate](https://www.baeldung.com/hibernate-logging-levels) \ No newline at end of file +- [Various Logging Levels in Hibernate](https://www.baeldung.com/hibernate-logging-levels) +- [Hibernate: save, persist, update, merge, saveOrUpdate](https://www.baeldung.com/hibernate-save-persist-update-merge-saveorupdate) \ No newline at end of file diff --git a/persistence-modules/hibernate-enterprise/pom.xml b/persistence-modules/hibernate-enterprise/pom.xml index ae58e409c4..c088cc1eca 100644 --- a/persistence-modules/hibernate-enterprise/pom.xml +++ b/persistence-modules/hibernate-enterprise/pom.xml @@ -61,13 +61,25 @@ ${byte-buddy.version} test + + org.hsqldb + hsqldb + ${hsqldb.version} + test + - geodb-repo - GeoDB repository - http://repo.boundlessgeo.com/main/ + osgeo + OSGeo Release Repository + https://repo.osgeo.org/repository/release/ + + false + + + true + @@ -77,6 +89,7 @@ 2.2.3 3.8.0 0.9 + 2.3.4 From d77c22b05f944119f7bde91af4b35deb9081f979 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 28 Sep 2020 23:13:14 +0530 Subject: [PATCH 152/260] JAVA-2432: Moved 1 article to hibernate-enterprise --- .../baeldung/persistence/model/Person.java | 31 ++ .../save/SaveMethodsIntegrationTest.java | 291 ++++++++++++++++++ 2 files changed, 322 insertions(+) create mode 100644 persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java create mode 100644 persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java diff --git a/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java new file mode 100644 index 0000000000..6a95a7acf5 --- /dev/null +++ b/persistence-modules/hibernate-enterprise/src/main/java/com/baeldung/persistence/model/Person.java @@ -0,0 +1,31 @@ +package com.baeldung.persistence.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Person { + + @Id + @GeneratedValue + private Long id; + + private String name; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java new file mode 100644 index 0000000000..8c571428b4 --- /dev/null +++ b/persistence-modules/hibernate-enterprise/src/test/java/com/baeldung/persistence/save/SaveMethodsIntegrationTest.java @@ -0,0 +1,291 @@ +package com.baeldung.persistence.save; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNotSame; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; + +import javax.persistence.PersistenceException; + +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.dialect.HSQLDialect; +import org.hibernate.service.ServiceRegistry; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.baeldung.persistence.model.Person; + +/** + * Testing specific implementation details for different methods: + * persist, save, merge, update, saveOrUpdate. + */ +public class SaveMethodsIntegrationTest { + + private static SessionFactory sessionFactory; + + private Session session; + private boolean doNotCommit = false; + + @BeforeClass + public static void beforeTests() { + Configuration configuration = new Configuration().addAnnotatedClass(Person.class) + .setProperty("hibernate.dialect", HSQLDialect.class.getName()) + .setProperty("hibernate.connection.driver_class", org.hsqldb.jdbcDriver.class.getName()) + .setProperty("hibernate.connection.url", "jdbc:hsqldb:mem:test") + .setProperty("hibernate.connection.username", "sa") + .setProperty("hibernate.connection.password", "") + .setProperty("hibernate.hbm2ddl.auto", "update"); + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()) + .build(); + sessionFactory = configuration.buildSessionFactory(serviceRegistry); + } + + @Before + public void setUp() { + session = sessionFactory.openSession(); + session.beginTransaction(); + doNotCommit = false; + } + + @Test + public void whenPersistTransient_thenSavedToDatabaseOnCommit() { + + Person person = new Person(); + person.setName("John"); + session.persist(person); + + session.getTransaction() + .commit(); + session.close(); + + session = sessionFactory.openSession(); + session.beginTransaction(); + + assertNotNull(session.get(Person.class, person.getId())); + + } + + @Test + public void whenPersistPersistent_thenNothingHappens() { + + Person person = new Person(); + person.setName("John"); + + session.persist(person); + Long id1 = person.getId(); + + session.persist(person); + Long id2 = person.getId(); + + assertEquals(id1, id2); + } + + @Test(expected = PersistenceException.class) + public void whenPersistDetached_thenThrowsException() { + + doNotCommit = true; + + Person person = new Person(); + person.setName("John"); + session.persist(person); + session.evict(person); + + session.persist(person); + } + + @Test + public void whenMergeDetached_thenEntityUpdatedFromDatabase() { + + Person person = new Person(); + person.setName("John"); + session.save(person); + session.flush(); + session.evict(person); + + person.setName("Mary"); + Person mergedPerson = (Person) session.merge(person); + + assertNotSame(person, mergedPerson); + assertEquals("Mary", mergedPerson.getName()); + + } + + @Test + public void whenSaveTransient_thenIdGeneratedImmediately() { + + Person person = new Person(); + person.setName("John"); + + assertNull(person.getId()); + + Long id = (Long) session.save(person); + + assertNotNull(id); + + session.getTransaction() + .commit(); + session.close(); + + assertEquals(id, person.getId()); + + session = sessionFactory.openSession(); + session.beginTransaction(); + + assertNotNull(session.get(Person.class, person.getId())); + + } + + @Test + public void whenSavePersistent_thenNothingHappens() { + + Person person = new Person(); + person.setName("John"); + Long id1 = (Long) session.save(person); + Long id2 = (Long) session.save(person); + assertEquals(id1, id2); + + } + + @Test + public void whenSaveDetached_thenNewInstancePersisted() { + + Person person = new Person(); + person.setName("John"); + Long id1 = (Long) session.save(person); + session.evict(person); + + Long id2 = (Long) session.save(person); + assertNotEquals(id1, id2); + + } + + @Test + public void whenMergeTransient_thenNewEntitySavedToDatabase() { + + Person person = new Person(); + person.setName("John"); + Person mergedPerson = (Person) session.merge(person); + + session.getTransaction() + .commit(); + session.beginTransaction(); + + assertNull(person.getId()); + assertNotNull(mergedPerson.getId()); + + } + + @Test + public void whenMergePersistent_thenReturnsSameObject() { + + Person person = new Person(); + person.setName("John"); + session.save(person); + + Person mergedPerson = (Person) session.merge(person); + + assertSame(person, mergedPerson); + + } + + @Test + public void whenUpdateDetached_thenEntityUpdatedFromDatabase() { + + Person person = new Person(); + person.setName("John"); + session.save(person); + session.evict(person); + + person.setName("Mary"); + session.update(person); + assertEquals("Mary", person.getName()); + + } + + @Test(expected = HibernateException.class) + public void whenUpdateTransient_thenThrowsException() { + + Person person = new Person(); + person.setName("John"); + session.update(person); + + } + + @Test + public void whenUpdatePersistent_thenNothingHappens() { + + Person person = new Person(); + person.setName("John"); + session.save(person); + + session.update(person); + + } + + @Test + public void whenSaveOrUpdateDetached_thenEntityUpdatedFromDatabase() { + + Person person = new Person(); + person.setName("John"); + session.save(person); + session.evict(person); + + person.setName("Mary"); + session.saveOrUpdate(person); + assertEquals("Mary", person.getName()); + + } + + @Test + public void whenSaveOrUpdateTransient_thenSavedToDatabaseOnCommit() { + + Person person = new Person(); + person.setName("John"); + session.saveOrUpdate(person); + + session.getTransaction() + .commit(); + session.close(); + + session = sessionFactory.openSession(); + session.beginTransaction(); + + assertNotNull(session.get(Person.class, person.getId())); + + } + + @Test + public void whenSaveOrUpdatePersistent_thenNothingHappens() { + + Person person = new Person(); + person.setName("John"); + session.save(person); + + session.saveOrUpdate(person); + + } + + @After + public void tearDown() { + if (!doNotCommit) { + session.getTransaction() + .commit(); + } + session.close(); + } + + @AfterClass + public static void afterTests() { + sessionFactory.close(); + } + +} From 7de65d1211d54e5b15fdd6ee4c432e04b1c74e2a Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 28 Sep 2020 23:13:49 +0530 Subject: [PATCH 153/260] JAVA-2432: removed unused module from parent pom --- persistence-modules/pom.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index def2deb941..0e9c04f55d 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -80,8 +80,7 @@ spring-data-redis spring-data-solr spring-hibernate-3 - spring-hibernate-5 - spring-hibernate4 + spring-hibernate-5 spring-jpa spring-jpa-2 spring-jdbc From 2dd77a259db8eaa15f1a61b2752fee17d85611d4 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 28 Sep 2020 23:17:31 +0530 Subject: [PATCH 154/260] JAVA-2432: Moved 5 articles to spring-data-jpa-query-2 --- .../spring-data-jpa-query-2/README.md | 6 + .../spring-data-jpa-query-2/pom.xml | 58 +++++ .../baeldung/config/PersistenceConfig.java | 186 ++++++++++++++ .../baeldung/config/PersistenceXmlConfig.java | 18 ++ .../hibernate/audit/AuditorAwareImpl.java | 18 ++ .../hibernate/fetching/model/OrderDetail.java | 58 +++++ .../hibernate/fetching/model/UserEager.java | 71 +++++ .../hibernate/fetching/model/UserLazy.java | 71 +++++ .../fetching/util/HibernateUtil.java | 29 +++ .../fetching/view/FetchingAppView.java | 68 +++++ .../persistence/dao/BookRepository.java | 9 - .../persistence/dao/BookRepositoryCustom.java | 11 - .../persistence/dao/BookRepositoryImpl.java | 44 ---- .../baeldung/persistence/dao/BookService.java | 25 -- .../persistence/dao/BookSpecifications.java | 16 -- .../persistence/dao/IBarAuditableDao.java | 8 + .../persistence/dao/IBarCrudRepository.java | 10 + .../com/baeldung/persistence/dao/IBarDao.java | 8 + .../baeldung/persistence/dao/IChildDao.java | 8 + .../persistence/dao/IFooAuditableDao.java | 8 + .../com/baeldung/persistence/dao/IFooDao.java | 8 + .../baeldung/persistence/dao/IParentDao.java | 8 + .../persistence/dao/common/AbstractDao.java | 14 + .../common/AbstractHibernateAuditableDao.java | 37 +++ .../dao/common/AbstractHibernateDao.java | 59 +++++ .../dao/common/AbstractJpaDao.java | 56 ++++ .../dao/common/GenericHibernateDao.java | 13 + .../dao/common/IAuditOperations.java | 14 + .../persistence/dao/common/IGenericDao.java | 7 + .../persistence/dao/common/IOperations.java | 20 ++ .../persistence/dao/impl/BarAuditableDao.java | 28 ++ .../baeldung/persistence/dao/impl/BarDao.java | 19 ++ .../persistence/dao/impl/BarJpaDao.java | 19 ++ .../persistence/dao/impl/ChildDao.java | 19 ++ .../persistence/dao/impl/FooAuditableDao.java | 17 ++ .../baeldung/persistence/dao/impl/FooDao.java | 19 ++ .../persistence/dao/impl/ParentDao.java | 19 ++ .../com/baeldung/persistence/model/Bar.java | 242 ++++++++++++++++++ .../com/baeldung/persistence/model/Book.java | 36 --- .../com/baeldung/persistence/model/Child.java | 51 ++++ .../com/baeldung/persistence/model/Foo.java | 105 ++++++++ .../baeldung/persistence/model/Parent.java | 60 +++++ .../baeldung/persistence/model/Person.java | 31 +++ .../service/IBarAuditableService.java | 8 + .../persistence/service/IBarService.java | 8 + .../persistence/service/IChildService.java | 8 + .../service/IFooAuditableService.java | 8 + .../persistence/service/IFooService.java | 8 + .../persistence/service/IParentService.java | 8 + .../AbstractHibernateAuditableService.java | 30 +++ .../common/AbstractHibernateService.java | 42 +++ .../service/common/AbstractJpaService.java | 42 +++ .../service/common/AbstractService.java | 42 +++ .../common/AbstractSpringDataJpaService.java | 48 ++++ .../service/impl/BarAuditableService.java | 41 +++ .../service/impl/BarJpaService.java | 30 +++ .../persistence/service/impl/BarService.java | 30 +++ .../service/impl/BarSpringDataJpaService.java | 26 ++ .../service/impl/ChildService.java | 28 ++ .../service/impl/FooAuditableService.java | 41 +++ .../persistence/service/impl/FooService.java | 30 +++ .../service/impl/ParentService.java | 28 ++ .../src/main/resources/fetching.cfg.xml | 20 ++ .../src/main/resources/fetchingLazy.cfg.xml | 17 ++ .../resources/fetching_create_queries.sql | 14 + .../src/main/resources/hibernate5Config.xml | 34 +++ .../resources/hibernate5Configuration.xml | 30 +++ .../src/main/resources/immutable.cfg.xml | 38 +++ .../src/main/resources/insert_statements.sql | 31 +++ .../src/main/resources/logback.xml | 19 ++ .../resources/persistence-mysql.properties | 13 + .../src/main/resources/stored_procedure.sql | 20 ++ .../src/main/resources/webSecurityConfig.xml | 37 +++ .../HibernateFetchingIntegrationTest.java | 42 +++ .../persistence/IntegrationTestSuite.java | 25 ++ .../persistence/audit/AuditTestSuite.java | 14 + .../EnversFooBarAuditIntegrationTest.java | 146 +++++++++++ .../audit/JPABarAuditIntegrationTest.java | 104 ++++++++ .../SpringDataJPABarAuditIntegrationTest.java | 78 ++++++ .../persistence/hibernate/FooFixtures.java | 101 ++++++++ ...oPaginationPersistenceIntegrationTest.java | 185 +++++++++++++ .../FooSortingPersistenceIntegrationTest.java | 174 +++++++++++++ ...erviceBasicPersistenceIntegrationTest.java | 55 ++++ .../FooServicePersistenceIntegrationTest.java | 64 +++++ .../service/FooStoredProceduresLiveTest.java | 121 +++++++++ ...rentServicePersistenceIntegrationTest.java | 70 +++++ .../spring/config/PersistenceTestConfig.java | 179 +++++++++++++ .../ArticleRepositoryIntegrationTest.java | 3 + .../src/test/resources/fetching.cfg.xml | 19 ++ .../src/test/resources/fetchingLazy.cfg.xml | 19 ++ .../test/resources/persistence-h2.properties | 13 + 91 files changed, 3681 insertions(+), 141 deletions(-) create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceConfig.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceXmlConfig.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java delete mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java delete mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java delete mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java delete mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java delete mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IChildDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IParentDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IOperations.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Bar.java delete mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Child.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Foo.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Parent.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Person.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IChildService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IParentService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ChildService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ParentService.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching.cfg.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/fetchingLazy.cfg.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching_create_queries.sql create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Config.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Configuration.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/immutable.cfg.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_statements.sql create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/logback.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/persistence-mysql.properties create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/stored_procedure.sql create mode 100644 persistence-modules/spring-data-jpa-query-2/src/main/resources/webSecurityConfig.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/resources/fetching.cfg.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/resources/fetchingLazy.cfg.xml create mode 100644 persistence-modules/spring-data-jpa-query-2/src/test/resources/persistence-h2.properties diff --git a/persistence-modules/spring-data-jpa-query-2/README.md b/persistence-modules/spring-data-jpa-query-2/README.md index fdb4ce3db7..bdc8d7cb32 100644 --- a/persistence-modules/spring-data-jpa-query-2/README.md +++ b/persistence-modules/spring-data-jpa-query-2/README.md @@ -6,6 +6,12 @@ This module contains articles about querying data using Spring Data JPA - [Spring Data JPA @Query Annotation](https://www.baeldung.com/spring-data-jpa-query) - [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries) - [Query Entities by Dates and Times with Spring Data JPA](https://www.baeldung.com/spring-data-jpa-query-by-date) +- [Hibernate Pagination](https://www.baeldung.com/hibernate-pagination) +- [Sorting with Hibernate](https://www.baeldung.com/hibernate-sort) +- [Stored Procedures with Hibernate](https://www.baeldung.com/stored-procedures-with-hibernate-tutorial) +- [Eager/Lazy Loading In Hibernate](https://www.baeldung.com/hibernate-lazy-eager-loading) +- [Auditing with JPA, Hibernate, and Spring Data JPA](https://www.baeldung.com/database-auditing-jpa) + - More articles: [[<-- prev]](../spring-data-jpa-query) ### Eclipse Config diff --git a/persistence-modules/spring-data-jpa-query-2/pom.xml b/persistence-modules/spring-data-jpa-query-2/pom.xml index 231640284e..abac7b28da 100644 --- a/persistence-modules/spring-data-jpa-query-2/pom.xml +++ b/persistence-modules/spring-data-jpa-query-2/pom.xml @@ -18,6 +18,10 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.springframework.security + spring-security-core + com.h2database @@ -28,6 +32,55 @@ com.fasterxml.jackson.core jackson-databind + + + org.hibernate + hibernate-envers + + + javax.transaction + jta + ${jta.version} + + + mysql + mysql-connector-java + + + com.google.guava + guava + ${guava.version} + + + org.apache.tomcat + tomcat-dbcp + ${tomcat-dbcp.version} + + + org.hibernate + hibernate-core + ${hibernate.version} + + + org.hibernate + hibernate-envers + ${hibernate.version} + + + org.springframework + spring-test + test + + + org.springframework.security + spring-security-test + test + + + org.hsqldb + hsqldb + test + @@ -35,5 +88,10 @@ 2.22.2 5.6.2 4.13 + 9.0.0.M26 + 1.1 + 21.0 + + 5.2.10.Final \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceConfig.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceConfig.java new file mode 100644 index 0000000000..a0d70ed006 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceConfig.java @@ -0,0 +1,186 @@ +package com.baeldung.config; + +import java.util.Properties; + +import javax.sql.DataSource; + +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; +import org.springframework.data.domain.AuditorAware; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.JpaVendorAdapter; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.baeldung.hibernate.audit.AuditorAwareImpl; +import com.baeldung.persistence.dao.IBarAuditableDao; +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.dao.IFooAuditableDao; +import com.baeldung.persistence.dao.IFooDao; +import com.baeldung.persistence.dao.impl.BarAuditableDao; +import com.baeldung.persistence.dao.impl.BarDao; +import com.baeldung.persistence.dao.impl.BarJpaDao; +import com.baeldung.persistence.dao.impl.FooAuditableDao; +import com.baeldung.persistence.dao.impl.FooDao; +import com.baeldung.persistence.service.IBarAuditableService; +import com.baeldung.persistence.service.IBarService; +import com.baeldung.persistence.service.IFooAuditableService; +import com.baeldung.persistence.service.IFooService; +import com.baeldung.persistence.service.impl.BarAuditableService; +import com.baeldung.persistence.service.impl.BarJpaService; +import com.baeldung.persistence.service.impl.BarSpringDataJpaService; +import com.baeldung.persistence.service.impl.FooAuditableService; +import com.baeldung.persistence.service.impl.FooService; +import com.google.common.base.Preconditions; + +@Configuration +@EnableTransactionManagement +@EnableJpaRepositories(basePackages = { "com.baeldung.persistence" }, transactionManagerRef = "jpaTransactionManager", entityManagerFactoryRef = "jpaEntityManager") +@EnableJpaAuditing(auditorAwareRef = "auditorProvider") +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.persistence" }) +public class PersistenceConfig { + + @Autowired + private Environment env; + + public PersistenceConfig() { + super(); + } + + @Bean("auditorProvider") + public AuditorAware auditorProvider() { + return new AuditorAwareImpl(); + } + + @Bean + public LocalSessionFactoryBean sessionFactory() { + final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); + sessionFactory.setDataSource(restDataSource()); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); + sessionFactory.setHibernateProperties(hibernateProperties()); + + return sessionFactory; + } + + @Bean("jpaEntityManager") + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + final LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); + emf.setDataSource(restDataSource()); + emf.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); + + final JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); + emf.setJpaVendorAdapter(vendorAdapter); + emf.setJpaProperties(hibernateProperties()); + + return emf; + } + + @Bean + public DataSource restDataSource() { + final BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); + dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); + dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); + + return dataSource; + } + + @Bean + public PlatformTransactionManager hibernateTransactionManager() { + final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); + transactionManager.setSessionFactory(sessionFactory().getObject()); + return transactionManager; + } + + @Bean + public PlatformTransactionManager jpaTransactionManager() { + final JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); + return transactionManager; + } + + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + @Bean + public IBarService barJpaService() { + return new BarJpaService(); + } + + @Bean + public IBarService barSpringDataJpaService() { + return new BarSpringDataJpaService(); + } + + @Bean + public IFooService fooHibernateService() { + return new FooService(); + } + + @Bean + public IBarAuditableService barHibernateAuditableService() { + return new BarAuditableService(); + } + + @Bean + public IFooAuditableService fooHibernateAuditableService() { + return new FooAuditableService(); + } + + @Bean + public IBarDao barJpaDao() { + return new BarJpaDao(); + } + + @Bean + public IBarDao barHibernateDao() { + return new BarDao(); + } + + @Bean + public IBarAuditableDao barHibernateAuditableDao() { + return new BarAuditableDao(); + } + + @Bean + public IFooDao fooHibernateDao() { + return new FooDao(); + } + + @Bean + public IFooAuditableDao fooHibernateAuditableDao() { + return new FooAuditableDao(); + } + + private final Properties hibernateProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + + hibernateProperties.setProperty("hibernate.show_sql", "true"); + // hibernateProperties.setProperty("hibernate.format_sql", "true"); + // hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true"); + + // Envers properties + hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", env.getProperty("envers.audit_table_suffix")); + + return hibernateProperties; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceXmlConfig.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceXmlConfig.java new file mode 100644 index 0000000000..388494b21a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/config/PersistenceXmlConfig.java @@ -0,0 +1,18 @@ +package com.baeldung.config; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.ImportResource; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +@Configuration +@EnableTransactionManagement +@ComponentScan({ "com.baeldung.persistence.dao", "com.baeldung.persistence.service" }) +@ImportResource({ "classpath:hibernate4Config.xml" }) +public class PersistenceXmlConfig { + + public PersistenceXmlConfig() { + super(); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java new file mode 100644 index 0000000000..5dd12e6841 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/audit/AuditorAwareImpl.java @@ -0,0 +1,18 @@ +package com.baeldung.hibernate.audit; + +import java.util.Optional; + +import org.springframework.data.domain.AuditorAware; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +public class AuditorAwareImpl implements AuditorAware { + + @Override + public Optional getCurrentAuditor() { + return Optional.ofNullable(SecurityContextHolder.getContext()) + .map(e -> e.getAuthentication()) + .map(Authentication::getName); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java new file mode 100644 index 0000000000..f4a9b8a678 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/OrderDetail.java @@ -0,0 +1,58 @@ +package com.baeldung.hibernate.fetching.model; + +import javax.persistence.*; +import java.io.Serializable; +import java.sql.Date; + +@Entity +@Table(name = "USER_ORDER") +public class OrderDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue + @Column(name = "ORDER_ID") + private Long orderId; + + public OrderDetail() { + } + + public OrderDetail(Date orderDate, String orderDesc) { + super(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((orderId == null) ? 0 : orderId.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + OrderDetail other = (OrderDetail) obj; + if (orderId == null) { + if (other.orderId != null) + return false; + } else if (!orderId.equals(other.orderId)) + return false; + + return true; + } + + public Long getOrderId() { + return orderId; + } + + public void setOrderId(Long orderId) { + this.orderId = orderId; + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java new file mode 100644 index 0000000000..9fda4c43bb --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserEager.java @@ -0,0 +1,71 @@ +package com.baeldung.hibernate.fetching.model; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "USER") +public class UserEager implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue + @Column(name = "USER_ID") + private Long userId; + + @OneToMany(fetch = FetchType.EAGER) + private Set orderDetail = new HashSet(); + + public UserEager() { + } + + public UserEager(final Long userId) { + super(); + this.userId = userId; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((userId == null) ? 0 : userId.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final UserEager other = (UserEager) obj; + if (userId == null) { + if (other.userId != null) + return false; + } else if (!userId.equals(other.userId)) + return false; + return true; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(final Long userId) { + this.userId = userId; + } + + public Set getOrderDetail() { + return orderDetail; + } + + public void setOrderDetail(Set orderDetail) { + this.orderDetail = orderDetail; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java new file mode 100644 index 0000000000..a78eaa4ac0 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/model/UserLazy.java @@ -0,0 +1,71 @@ +package com.baeldung.hibernate.fetching.model; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.HashSet; +import java.util.Set; + +@Entity +@Table(name = "USER") +public class UserLazy implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue + @Column(name = "USER_ID") + private Long userId; + + @OneToMany(fetch = FetchType.LAZY) + private Set orderDetail = new HashSet(); + + public UserLazy() { + } + + public UserLazy(final Long userId) { + super(); + this.userId = userId; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((userId == null) ? 0 : userId.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final UserLazy other = (UserLazy) obj; + if (userId == null) { + if (other.userId != null) + return false; + } else if (!userId.equals(other.userId)) + return false; + return true; + } + + public Long getUserId() { + return userId; + } + + public void setUserId(final Long userId) { + this.userId = userId; + } + + public Set getOrderDetail() { + return orderDetail; + } + + public void setOrderDetail(Set orderDetail) { + this.orderDetail = orderDetail; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java new file mode 100644 index 0000000000..c7be96abb7 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/util/HibernateUtil.java @@ -0,0 +1,29 @@ +package com.baeldung.hibernate.fetching.util; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.cfg.Configuration; + +public class HibernateUtil { + + @SuppressWarnings("deprecation") + public static Session getHibernateSession(String fetchMethod) { + // two config files are there + // one with lazy loading enabled + // another lazy = false + SessionFactory sf; + if ("lazy".equals(fetchMethod)) { + sf = new Configuration().configure("fetchingLazy.cfg.xml").buildSessionFactory(); + } else { + sf = new Configuration().configure("fetching.cfg.xml").buildSessionFactory(); + } + + // fetching.cfg.xml is used for this example + return sf.openSession(); + } + + public static Session getHibernateSession() { + return new Configuration().configure("fetching.cfg.xml").buildSessionFactory().openSession(); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java new file mode 100644 index 0000000000..35cdd254e3 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/hibernate/fetching/view/FetchingAppView.java @@ -0,0 +1,68 @@ +package com.baeldung.hibernate.fetching.view; + +import com.baeldung.hibernate.fetching.model.OrderDetail; +import com.baeldung.hibernate.fetching.model.UserEager; +import com.baeldung.hibernate.fetching.model.UserLazy; +import com.baeldung.hibernate.fetching.util.HibernateUtil; +import org.hibernate.Session; +import org.hibernate.Transaction; + +import java.util.List; +import java.util.Set; + +public class FetchingAppView { + + public FetchingAppView() { + + } + + // lazily loaded + public Set lazyLoaded() { + final Session sessionLazy = HibernateUtil.getHibernateSession("lazy"); + List users = sessionLazy.createQuery("From UserLazy").list(); + UserLazy userLazyLoaded = users.get(0); + // since data is lazyloaded so data won't be initialized + return (userLazyLoaded.getOrderDetail()); + } + + // eagerly loaded + public Set eagerLoaded() { + final Session sessionEager = HibernateUtil.getHibernateSession(); + // data should be loaded in the following line + // also note the queries generated + List user = sessionEager.createQuery("From UserEager").list(); + UserEager userEagerLoaded = user.get(0); + return userEagerLoaded.getOrderDetail(); + } + + // creates test data + // call this method to create the data in the database + public void createTestData() { + + final Session session = HibernateUtil.getHibernateSession("lazy"); + Transaction tx = session.beginTransaction(); + final UserLazy user1 = new UserLazy(); + final UserLazy user2 = new UserLazy(); + final UserLazy user3 = new UserLazy(); + + session.save(user1); + session.save(user2); + session.save(user3); + + final OrderDetail order1 = new OrderDetail(); + final OrderDetail order2 = new OrderDetail(); + final OrderDetail order3 = new OrderDetail(); + final OrderDetail order4 = new OrderDetail(); + final OrderDetail order5 = new OrderDetail(); + + session.saveOrUpdate(order1); + session.saveOrUpdate(order2); + session.saveOrUpdate(order3); + session.saveOrUpdate(order4); + session.saveOrUpdate(order5); + + tx.commit(); + session.close(); + + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java deleted file mode 100644 index 48620f4ff1..0000000000 --- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Book; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.JpaSpecificationExecutor; - -public interface BookRepository extends JpaRepository, BookRepositoryCustom, JpaSpecificationExecutor { - -} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java deleted file mode 100644 index eda34542df..0000000000 --- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryCustom.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Book; - -import java.util.List; - -public interface BookRepositoryCustom { - - List findBooksByAuthorNameAndTitle(String authorName, String title); - -} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java deleted file mode 100644 index 7f5bedd018..0000000000 --- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookRepositoryImpl.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Book; -import org.springframework.stereotype.Repository; - -import javax.persistence.EntityManager; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; -import java.util.ArrayList; -import java.util.List; - -@Repository -public class BookRepositoryImpl implements BookRepositoryCustom { - - private EntityManager em; - - public BookRepositoryImpl(EntityManager em) { - this.em = em; - } - - @Override - public List findBooksByAuthorNameAndTitle(String authorName, String title) { - CriteriaBuilder cb = em.getCriteriaBuilder(); - CriteriaQuery cq = cb.createQuery(Book.class); - - Root book = cq.from(Book.class); - List predicates = new ArrayList<>(); - - if (authorName != null) { - predicates.add(cb.equal(book.get("author"), authorName)); - } - if (title != null) { - predicates.add(cb.like(book.get("title"), "%" + title + "%")); - } - cq.where(predicates.toArray(new Predicate[0])); - - TypedQuery query = em.createQuery(cq); - return query.getResultList(); - } - -} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java deleted file mode 100644 index 4165cd8eb9..0000000000 --- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookService.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Book; -import org.springframework.stereotype.Service; - -import java.util.List; - -import static com.baeldung.persistence.dao.BookSpecifications.hasAuthor; -import static com.baeldung.persistence.dao.BookSpecifications.titleContains; -import static org.springframework.data.jpa.domain.Specification.where; - -@Service -public class BookService { - - private BookRepository bookRepository; - - public BookService(BookRepository bookRepository) { - this.bookRepository = bookRepository; - } - - public List query(String author, String title) { - return bookRepository.findAll(where(hasAuthor(author)).and(titleContains(title))); - } - -} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java deleted file mode 100644 index 16646a5b4b..0000000000 --- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/BookSpecifications.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.persistence.dao; - -import com.baeldung.persistence.model.Book; -import org.springframework.data.jpa.domain.Specification; - -public class BookSpecifications { - - public static Specification hasAuthor(String author) { - return (book, cq, cb) -> cb.equal(book.get("author"), author); - } - - public static Specification titleContains(String title) { - return (book, cq, cb) -> cb.like(book.get("title"), "%" + title + "%"); - } - -} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java new file mode 100644 index 0000000000..182b493592 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarAuditableDao.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.dao; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.model.Bar; + +public interface IBarAuditableDao extends IBarDao, IAuditOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java new file mode 100644 index 0000000000..4d7db64240 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarCrudRepository.java @@ -0,0 +1,10 @@ +package com.baeldung.persistence.dao; + +import java.io.Serializable; + +import com.baeldung.persistence.model.Bar; +import org.springframework.data.repository.CrudRepository; + +public interface IBarCrudRepository extends CrudRepository { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarDao.java new file mode 100644 index 0000000000..7896a2a84a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IBarDao.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.dao; + +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Bar; + +public interface IBarDao extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IChildDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IChildDao.java new file mode 100644 index 0000000000..a55a0b0598 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IChildDao.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.dao; + +import com.baeldung.persistence.model.Child; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IChildDao extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java new file mode 100644 index 0000000000..ddbb685988 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooAuditableDao.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.dao; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.model.Foo; + +public interface IFooAuditableDao extends IFooDao, IAuditOperations { + // +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooDao.java new file mode 100644 index 0000000000..0935772dbd --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IFooDao.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.dao; + +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IFooDao extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IParentDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IParentDao.java new file mode 100644 index 0000000000..03680158bb --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/IParentDao.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.dao; + +import com.baeldung.persistence.model.Parent; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IParentDao extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java new file mode 100644 index 0000000000..5a6c76a93a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java @@ -0,0 +1,14 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; + +import com.google.common.base.Preconditions; + +public abstract class AbstractDao implements IOperations { + + protected Class clazz; + + protected final void setClazz(final Class clazzToSet) { + clazz = Preconditions.checkNotNull(clazzToSet); + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java new file mode 100644 index 0000000000..41184669ad --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateAuditableDao.java @@ -0,0 +1,37 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +import org.hibernate.envers.AuditReader; +import org.hibernate.envers.AuditReaderFactory; +import org.hibernate.envers.query.AuditQuery; + +@SuppressWarnings("unchecked") +public class AbstractHibernateAuditableDao extends AbstractHibernateDao implements IAuditOperations { + + @Override + public List getEntitiesAtRevision(final Number revision) { + final AuditReader auditReader = AuditReaderFactory.get(getCurrentSession()); + final AuditQuery query = auditReader.createQuery().forEntitiesAtRevision(clazz, revision); + final List resultList = query.getResultList(); + return resultList; + } + + @Override + public List getEntitiesModifiedAtRevision(final Number revision) { + final AuditReader auditReader = AuditReaderFactory.get(getCurrentSession()); + final AuditQuery query = auditReader.createQuery().forEntitiesModifiedAtRevision(clazz, revision); + final List resultList = query.getResultList(); + return resultList; + } + + @Override + public List getRevisions() { + final AuditReader auditReader = AuditReaderFactory.get(getCurrentSession()); + final AuditQuery query = auditReader.createQuery().forRevisionsOfEntity(clazz, true, true); + final List resultList = query.getResultList(); + return resultList; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java new file mode 100644 index 0000000000..f3ade67f80 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java @@ -0,0 +1,59 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import com.google.common.base.Preconditions; + +@SuppressWarnings("unchecked") +public abstract class AbstractHibernateDao extends AbstractDao implements IOperations { + + @Autowired + protected SessionFactory sessionFactory; + + // API + + @Override + public T findOne(final long id) { + return (T) getCurrentSession().get(clazz, id); + } + + @Override + public List findAll() { + return getCurrentSession().createQuery("from " + clazz.getName()).list(); + } + + @Override + public void create(final T entity) { + Preconditions.checkNotNull(entity); + getCurrentSession().saveOrUpdate(entity); + } + + @Override + public T update(final T entity) { + Preconditions.checkNotNull(entity); + return (T) getCurrentSession().merge(entity); + } + + @Override + public void delete(final T entity) { + Preconditions.checkNotNull(entity); + getCurrentSession().delete(entity); + } + + @Override + public void deleteById(final long entityId) { + final T entity = findOne(entityId); + Preconditions.checkState(entity != null); + delete(entity); + } + + protected Session getCurrentSession() { + return sessionFactory.getCurrentSession(); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java new file mode 100644 index 0000000000..79bdd86658 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/AbstractJpaDao.java @@ -0,0 +1,56 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.TypedQuery; +import javax.persistence.criteria.CriteriaBuilder; +import javax.persistence.criteria.CriteriaQuery; +import javax.persistence.criteria.Root; + +public class AbstractJpaDao extends AbstractDao implements IOperations { + + @PersistenceContext(unitName = "jpaEntityManager") + private EntityManager em; + + // API + + @Override + public T findOne(final long id) { + return em.find(clazz, Long.valueOf(id).intValue()); + } + + @Override + public List findAll() { + final CriteriaBuilder cb = em.getCriteriaBuilder(); + final CriteriaQuery cq = cb.createQuery(clazz); + final Root rootEntry = cq.from(clazz); + final CriteriaQuery all = cq.select(rootEntry); + final TypedQuery allQuery = em.createQuery(all); + return allQuery.getResultList(); + } + + @Override + public void create(final T entity) { + em.persist(entity); + } + + @Override + public T update(final T entity) { + em.merge(entity); + return entity; + } + + @Override + public void delete(final T entity) { + em.remove(entity); + } + + @Override + public void deleteById(final long entityId) { + delete(findOne(entityId)); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java new file mode 100644 index 0000000000..18b16fa033 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/GenericHibernateDao.java @@ -0,0 +1,13 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; + +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Repository; + +@Repository +@Scope(BeanDefinition.SCOPE_PROTOTYPE) +public class GenericHibernateDao extends AbstractHibernateDao implements IGenericDao { + // +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java new file mode 100644 index 0000000000..169d3fed72 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IAuditOperations.java @@ -0,0 +1,14 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +public interface IAuditOperations { + + List getEntitiesAtRevision(Number revision); + + List getEntitiesModifiedAtRevision(Number revision); + + List getRevisions(); + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java new file mode 100644 index 0000000000..8d8af18394 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IGenericDao.java @@ -0,0 +1,7 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; + +public interface IGenericDao extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IOperations.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IOperations.java new file mode 100644 index 0000000000..4ef99221ab --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/common/IOperations.java @@ -0,0 +1,20 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +public interface IOperations { + + T findOne(final long id); + + List findAll(); + + void create(final T entity); + + T update(final T entity); + + void delete(final T entity); + + void deleteById(final long entityId); + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java new file mode 100644 index 0000000000..e12b6ae2da --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarAuditableDao.java @@ -0,0 +1,28 @@ +package com.baeldung.persistence.dao.impl; + +import java.util.List; + +import com.baeldung.persistence.dao.IBarAuditableDao; +import com.baeldung.persistence.dao.common.AbstractHibernateAuditableDao; +import com.baeldung.persistence.model.Bar; + +public class BarAuditableDao extends AbstractHibernateAuditableDao implements IBarAuditableDao { + + public BarAuditableDao() { + super(); + + setClazz(Bar.class); + } + + // API + + @Override + public List getRevisions() { + final List resultList = super.getRevisions(); + for (final Bar bar : resultList) { + bar.getFooSet().size(); // force FooSet initialization + } + return resultList; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java new file mode 100644 index 0000000000..0ead802dc5 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarDao.java @@ -0,0 +1,19 @@ +package com.baeldung.persistence.dao.impl; + +import com.baeldung.persistence.dao.common.AbstractHibernateDao; +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.model.Bar; +import org.springframework.stereotype.Repository; + +@Repository +public class BarDao extends AbstractHibernateDao implements IBarDao { + + public BarDao() { + super(); + + setClazz(Bar.class); + } + + // API + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java new file mode 100644 index 0000000000..e0fa382d41 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/BarJpaDao.java @@ -0,0 +1,19 @@ +package com.baeldung.persistence.dao.impl; + +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.dao.common.AbstractJpaDao; +import com.baeldung.persistence.model.Bar; +import org.springframework.stereotype.Repository; + +@Repository +public class BarJpaDao extends AbstractJpaDao implements IBarDao { + + public BarJpaDao() { + super(); + + setClazz(Bar.class); + } + + // API + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java new file mode 100644 index 0000000000..b55da6e43a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ChildDao.java @@ -0,0 +1,19 @@ +package com.baeldung.persistence.dao.impl; + +import com.baeldung.persistence.dao.common.AbstractHibernateDao; +import com.baeldung.persistence.model.Child; +import com.baeldung.persistence.dao.IChildDao; +import org.springframework.stereotype.Repository; + +@Repository +public class ChildDao extends AbstractHibernateDao implements IChildDao { + + public ChildDao() { + super(); + + setClazz(Child.class); + } + + // API + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java new file mode 100644 index 0000000000..05064c1478 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooAuditableDao.java @@ -0,0 +1,17 @@ +package com.baeldung.persistence.dao.impl; + +import com.baeldung.persistence.dao.common.AbstractHibernateAuditableDao; +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.dao.IFooAuditableDao; + +public class FooAuditableDao extends AbstractHibernateAuditableDao implements IFooAuditableDao { + + public FooAuditableDao() { + super(); + + setClazz(Foo.class); + } + + // API + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java new file mode 100644 index 0000000000..787c449b1d --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/FooDao.java @@ -0,0 +1,19 @@ +package com.baeldung.persistence.dao.impl; + +import com.baeldung.persistence.dao.common.AbstractHibernateDao; +import com.baeldung.persistence.dao.IFooDao; +import com.baeldung.persistence.model.Foo; +import org.springframework.stereotype.Repository; + +@Repository +public class FooDao extends AbstractHibernateDao implements IFooDao { + + public FooDao() { + super(); + + setClazz(Foo.class); + } + + // API + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java new file mode 100644 index 0000000000..4602b5f30e --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/dao/impl/ParentDao.java @@ -0,0 +1,19 @@ +package com.baeldung.persistence.dao.impl; + +import com.baeldung.persistence.dao.IParentDao; +import com.baeldung.persistence.dao.common.AbstractHibernateDao; +import com.baeldung.persistence.model.Parent; +import org.springframework.stereotype.Repository; + +@Repository +public class ParentDao extends AbstractHibernateDao implements IParentDao { + + public ParentDao() { + super(); + + setClazz(Parent.class); + } + + // API + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Bar.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Bar.java new file mode 100644 index 0000000000..c7f05254cc --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Bar.java @@ -0,0 +1,242 @@ +package com.baeldung.persistence.model; + +import java.io.Serializable; +import java.util.Date; +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityListeners; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.NamedQuery; +import javax.persistence.OneToMany; +import javax.persistence.PrePersist; +import javax.persistence.PreRemove; +import javax.persistence.PreUpdate; + +import org.hibernate.annotations.OrderBy; +import org.hibernate.envers.Audited; +import org.jboss.logging.Logger; +import org.springframework.data.annotation.CreatedBy; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedBy; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import com.google.common.collect.Sets; + +@Entity +@NamedQuery(name = "Bar.findAll", query = "SELECT b FROM Bar b") +@Audited +@EntityListeners(AuditingEntityListener.class) +public class Bar implements Serializable { + + private static Logger logger = Logger.getLogger(Bar.class); + + public enum OPERATION { + INSERT, UPDATE, DELETE; + private String value; + + OPERATION() { + value = toString(); + } + + public String getValue() { + return value; + } + + public static OPERATION parse(final String value) { + OPERATION operation = null; + for (final OPERATION op : OPERATION.values()) { + if (op.getValue().equals(value)) { + operation = op; + break; + } + } + return operation; + } + }; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private int id; + + @Column(name = "name") + private String name; + + @OneToMany(mappedBy = "bar", cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @OrderBy(clause = "NAME DESC") + // @NotAudited + private Set fooSet = Sets.newHashSet(); + + @Column(name = "operation") + private String operation; + + @Column(name = "timestamp") + private long timestamp; + + @Column(name = "created_date", updatable = false, nullable = false) + @CreatedDate + private long createdDate; + + @Column(name = "modified_date") + @LastModifiedDate + private long modifiedDate; + + @Column(name = "created_by") + @CreatedBy + private String createdBy; + + @Column(name = "modified_by") + @LastModifiedBy + private String modifiedBy; + + public Bar() { + super(); + } + + public Bar(final String name) { + super(); + + this.name = name; + } + + // API + + public Set getFooSet() { + return fooSet; + } + + public void setFooSet(final Set fooSet) { + this.fooSet = fooSet; + } + + public int getId() { + return id; + } + + public void setId(final int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + public OPERATION getOperation() { + return OPERATION.parse(operation); + } + + public void setOperation(final OPERATION operation) { + this.operation = operation.getValue(); + } + + public long getTimestamp() { + return timestamp; + } + + public void setTimestamp(final long timestamp) { + this.timestamp = timestamp; + } + + public long getCreatedDate() { + return createdDate; + } + + public void setCreatedDate(final long createdDate) { + this.createdDate = createdDate; + } + + public long getModifiedDate() { + return modifiedDate; + } + + public void setModifiedDate(final long modifiedDate) { + this.modifiedDate = modifiedDate; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(final String createdBy) { + this.createdBy = createdBy; + } + + public String getModifiedBy() { + return modifiedBy; + } + + public void setModifiedBy(final String modifiedBy) { + this.modifiedBy = modifiedBy; + } + + public void setOperation(final String operation) { + this.operation = operation; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Bar other = (Bar) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Bar [name=").append(name).append("]"); + return builder.toString(); + } + + @PrePersist + public void onPrePersist() { + logger.info("@PrePersist"); + audit(OPERATION.INSERT); + } + + @PreUpdate + public void onPreUpdate() { + logger.info("@PreUpdate"); + audit(OPERATION.UPDATE); + } + + @PreRemove + public void onPreRemove() { + logger.info("@PreRemove"); + audit(OPERATION.DELETE); + } + + private void audit(final OPERATION operation) { + setOperation(operation); + setTimestamp((new Date()).getTime()); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java deleted file mode 100644 index 507043dd56..0000000000 --- a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Book.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.persistence.model; - -import javax.persistence.Entity; -import javax.persistence.Id; - -@Entity -public class Book { - - @Id - private Long id; - - private String title; - - private String author; - - public Long getId() { - return id; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - -} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Child.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Child.java new file mode 100644 index 0000000000..19cfb2e237 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Child.java @@ -0,0 +1,51 @@ +package com.baeldung.persistence.model; + +import java.io.Serializable; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.OneToOne; + +@Entity +public class Child implements Serializable { + + @Id + @GeneratedValue + private long id; + + @OneToOne(mappedBy = "child") + private Parent parent; + + public Child() { + super(); + } + + // API + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public Parent getParent() { + return parent; + } + + public void setParent(final Parent parent) { + this.parent = parent; + } + + // + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Child [id=").append(id).append("]"); + return builder.toString(); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Foo.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Foo.java new file mode 100644 index 0000000000..d36a1e58cf --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Foo.java @@ -0,0 +1,105 @@ +package com.baeldung.persistence.model; + +import java.io.Serializable; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.NamedNativeQueries; +import javax.persistence.NamedNativeQuery; + +import org.hibernate.envers.Audited; + +@NamedNativeQueries({ @NamedNativeQuery(name = "callGetAllFoos", query = "CALL GetAllFoos()", resultClass = Foo.class), @NamedNativeQuery(name = "callGetFoosByName", query = "CALL GetFoosByName(:fooName)", resultClass = Foo.class) }) +@Entity +@Audited +// @Proxy(lazy = false) +public class Foo implements Serializable { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") + private long id; + + @Column(name = "name") + private String name; + + @ManyToOne(targetEntity = Bar.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JoinColumn(name = "BAR_ID") + private Bar bar = new Bar(); + + public Foo() { + super(); + } + + public Foo(final String name) { + super(); + this.name = name; + } + + // + + public Bar getBar() { + return bar; + } + + public void setBar(final Bar bar) { + this.bar = bar; + } + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(final String name) { + this.name = name; + } + + // + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(final Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + final Foo other = (Foo) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Foo [name=").append(name).append("]"); + return builder.toString(); + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Parent.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Parent.java new file mode 100644 index 0000000000..fa6948990b --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Parent.java @@ -0,0 +1,60 @@ +package com.baeldung.persistence.model; + +import java.io.Serializable; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; + +@Entity +public class Parent implements Serializable { + + @Id + @GeneratedValue + private long id; + + @OneToOne(cascade = { CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH, CascadeType.DETACH }) + @JoinColumn(name = "child_fk") + private Child child; + + public Parent() { + super(); + } + + public Parent(final Child child) { + super(); + + this.child = child; + } + + // API + + public long getId() { + return id; + } + + public void setId(final long id) { + this.id = id; + } + + public Child getChild() { + return child; + } + + public void setChild(final Child child) { + this.child = child; + } + + // + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Parent [id=").append(id).append("]"); + return builder.toString(); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Person.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Person.java new file mode 100644 index 0000000000..6a95a7acf5 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/model/Person.java @@ -0,0 +1,31 @@ +package com.baeldung.persistence.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity +public class Person { + + @Id + @GeneratedValue + private Long id; + + private String name; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java new file mode 100644 index 0000000000..33e5634d12 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarAuditableService.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.service; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.model.Bar; + +public interface IBarAuditableService extends IBarService, IAuditOperations { + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarService.java new file mode 100644 index 0000000000..21185b5990 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IBarService.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.service; + +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Bar; + +public interface IBarService extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IChildService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IChildService.java new file mode 100644 index 0000000000..afe67a70c2 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IChildService.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.service; + +import com.baeldung.persistence.model.Child; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IChildService extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java new file mode 100644 index 0000000000..b787e7fe91 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooAuditableService.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.service; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.model.Foo; + +public interface IFooAuditableService extends IFooService, IAuditOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooService.java new file mode 100644 index 0000000000..ffdb53964a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IFooService.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.service; + +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IFooService extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IParentService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IParentService.java new file mode 100644 index 0000000000..f941416aac --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/IParentService.java @@ -0,0 +1,8 @@ +package com.baeldung.persistence.service; + +import com.baeldung.persistence.model.Parent; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IParentService extends IOperations { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java new file mode 100644 index 0000000000..2695d7760a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateAuditableService.java @@ -0,0 +1,30 @@ +package com.baeldung.persistence.service.common; + +import java.io.Serializable; +import java.util.List; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.dao.common.IOperations; +import org.springframework.transaction.annotation.Transactional; + +@Transactional(value = "hibernateTransactionManager") +public abstract class AbstractHibernateAuditableService extends AbstractHibernateService implements IOperations, IAuditOperations { + + @Override + public List getEntitiesAtRevision(final Number revision) { + return getAuditableDao().getEntitiesAtRevision(revision); + } + + @Override + public List getEntitiesModifiedAtRevision(final Number revision) { + return getAuditableDao().getEntitiesModifiedAtRevision(revision); + } + + @Override + public List getRevisions() { + return getAuditableDao().getRevisions(); + } + + abstract protected IAuditOperations getAuditableDao(); + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java new file mode 100644 index 0000000000..02b8ccf48b --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractHibernateService.java @@ -0,0 +1,42 @@ +package com.baeldung.persistence.service.common; + +import java.io.Serializable; +import java.util.List; + +import com.baeldung.persistence.dao.common.IOperations; +import org.springframework.transaction.annotation.Transactional; + +@Transactional(value = "hibernateTransactionManager") +public abstract class AbstractHibernateService extends AbstractService implements IOperations { + + @Override + public T findOne(final long id) { + return super.findOne(id); + } + + @Override + public List findAll() { + return super.findAll(); + } + + @Override + public void create(final T entity) { + super.create(entity); + } + + @Override + public T update(final T entity) { + return super.update(entity); + } + + @Override + public void delete(final T entity) { + super.delete(entity); + } + + @Override + public void deleteById(final long entityId) { + super.deleteById(entityId); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java new file mode 100644 index 0000000000..a1c6fe9edf --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractJpaService.java @@ -0,0 +1,42 @@ +package com.baeldung.persistence.service.common; + +import java.io.Serializable; +import java.util.List; + +import com.baeldung.persistence.dao.common.IOperations; +import org.springframework.transaction.annotation.Transactional; + +@Transactional(value = "jpaTransactionManager") +public abstract class AbstractJpaService extends AbstractService implements IOperations { + + @Override + public T findOne(final long id) { + return super.findOne(id); + } + + @Override + public List findAll() { + return super.findAll(); + } + + @Override + public void create(final T entity) { + super.create(entity); + } + + @Override + public T update(final T entity) { + return super.update(entity); + } + + @Override + public void delete(final T entity) { + super.delete(entity); + } + + @Override + public void deleteById(final long entityId) { + super.deleteById(entityId); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractService.java new file mode 100644 index 0000000000..9b001b1fac --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractService.java @@ -0,0 +1,42 @@ +package com.baeldung.persistence.service.common; + +import java.io.Serializable; +import java.util.List; + +import com.baeldung.persistence.dao.common.IOperations; + +public abstract class AbstractService implements IOperations { + + @Override + public T findOne(final long id) { + return getDao().findOne(id); + } + + @Override + public List findAll() { + return getDao().findAll(); + } + + @Override + public void create(final T entity) { + getDao().create(entity); + } + + @Override + public T update(final T entity) { + return getDao().update(entity); + } + + @Override + public void delete(final T entity) { + getDao().delete(entity); + } + + @Override + public void deleteById(final long entityId) { + getDao().deleteById(entityId); + } + + protected abstract IOperations getDao(); + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java new file mode 100644 index 0000000000..73fe27e9ec --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/common/AbstractSpringDataJpaService.java @@ -0,0 +1,48 @@ +package com.baeldung.persistence.service.common; + +import java.io.Serializable; +import java.util.List; +import java.util.Optional; + +import com.baeldung.persistence.dao.common.IOperations; +import org.springframework.data.repository.CrudRepository; +import org.springframework.transaction.annotation.Transactional; + +import com.google.common.collect.Lists; + +@Transactional(value = "jpaTransactionManager") +public abstract class AbstractSpringDataJpaService implements IOperations { + + @Override + public T findOne(final long id) { + Optional opt = getDao().findById(Long.valueOf(id)); + return opt.get(); + } + + @Override + public List findAll() { + return Lists.newArrayList(getDao().findAll()); + } + + @Override + public void create(final T entity) { + getDao().save(entity); + } + + @Override + public T update(final T entity) { + return getDao().save(entity); + } + + @Override + public void delete(final T entity) { + getDao().delete(entity); + } + + @Override + public void deleteById(final long entityId) { + getDao().deleteById(Long.valueOf(entityId)); + } + + protected abstract CrudRepository getDao(); +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java new file mode 100644 index 0000000000..d84c28caa5 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarAuditableService.java @@ -0,0 +1,41 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.service.common.AbstractHibernateAuditableService; +import com.baeldung.persistence.dao.IBarAuditableDao; +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.service.IBarAuditableService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class BarAuditableService extends AbstractHibernateAuditableService implements IBarAuditableService { + + @Autowired + @Qualifier("barHibernateDao") + private IBarDao dao; + + @Autowired + @Qualifier("barHibernateAuditableDao") + private IBarAuditableDao auditDao; + + public BarAuditableService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + + @Override + protected IAuditOperations getAuditableDao() { + return auditDao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java new file mode 100644 index 0000000000..1c1b7a2274 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarJpaService.java @@ -0,0 +1,30 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.service.IBarService; +import com.baeldung.persistence.service.common.AbstractJpaService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class BarJpaService extends AbstractJpaService implements IBarService { + + @Autowired + @Qualifier("barJpaDao") + private IBarDao dao; + + public BarJpaService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarService.java new file mode 100644 index 0000000000..32d1f919c5 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarService.java @@ -0,0 +1,30 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.service.IBarService; +import com.baeldung.persistence.service.common.AbstractHibernateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class BarService extends AbstractHibernateService implements IBarService { + + @Autowired + @Qualifier("barHibernateDao") + private IBarDao dao; + + public BarService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java new file mode 100644 index 0000000000..4a55d08a35 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/BarSpringDataJpaService.java @@ -0,0 +1,26 @@ +package com.baeldung.persistence.service.impl; + +import java.io.Serializable; + +import com.baeldung.persistence.service.common.AbstractSpringDataJpaService; +import com.baeldung.persistence.dao.IBarCrudRepository; +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.service.IBarService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.repository.CrudRepository; + +public class BarSpringDataJpaService extends AbstractSpringDataJpaService implements IBarService { + + @Autowired + private IBarCrudRepository dao; + + public BarSpringDataJpaService() { + super(); + } + + @Override + protected CrudRepository getDao() { + return dao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ChildService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ChildService.java new file mode 100644 index 0000000000..417fe2c49a --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ChildService.java @@ -0,0 +1,28 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.model.Child; +import com.baeldung.persistence.service.IChildService; +import com.baeldung.persistence.dao.IChildDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.service.common.AbstractHibernateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ChildService extends AbstractHibernateService implements IChildService { + + @Autowired + private IChildDao dao; + + public ChildService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java new file mode 100644 index 0000000000..45ad315c42 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooAuditableService.java @@ -0,0 +1,41 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.dao.common.IAuditOperations; +import com.baeldung.persistence.service.IFooAuditableService; +import com.baeldung.persistence.service.common.AbstractHibernateAuditableService; +import com.baeldung.persistence.dao.IFooAuditableDao; +import com.baeldung.persistence.dao.IFooDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Foo; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class FooAuditableService extends AbstractHibernateAuditableService implements IFooAuditableService { + + @Autowired + @Qualifier("fooHibernateDao") + private IFooDao dao; + + @Autowired + @Qualifier("fooHibernateAuditableDao") + private IFooAuditableDao auditDao; + + public FooAuditableService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + + @Override + protected IAuditOperations getAuditableDao() { + return auditDao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooService.java new file mode 100644 index 0000000000..84cf018fee --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/FooService.java @@ -0,0 +1,30 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.dao.IFooDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.service.IFooService; +import com.baeldung.persistence.service.common.AbstractHibernateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +public class FooService extends AbstractHibernateService implements IFooService { + + @Autowired + @Qualifier("fooHibernateDao") + private IFooDao dao; + + public FooService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ParentService.java b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ParentService.java new file mode 100644 index 0000000000..078acfc369 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/java/com/baeldung/persistence/service/impl/ParentService.java @@ -0,0 +1,28 @@ +package com.baeldung.persistence.service.impl; + +import com.baeldung.persistence.model.Parent; +import com.baeldung.persistence.service.IParentService; +import com.baeldung.persistence.dao.IParentDao; +import com.baeldung.persistence.dao.common.IOperations; +import com.baeldung.persistence.service.common.AbstractHibernateService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class ParentService extends AbstractHibernateService implements IParentService { + + @Autowired + private IParentDao dao; + + public ParentService() { + super(); + } + + // API + + @Override + protected IOperations getDao() { + return dao; + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching.cfg.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching.cfg.xml new file mode 100644 index 0000000000..1b9a4a191c --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching.cfg.xml @@ -0,0 +1,20 @@ + + + + + + com.mysql.jdbc.Driver + jdbc:mysql://localhost:3306/test + root + iamtheking + org.hibernate.dialect.MySQLDialect + true + validate + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetchingLazy.cfg.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetchingLazy.cfg.xml new file mode 100644 index 0000000000..c5f608e1a7 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetchingLazy.cfg.xml @@ -0,0 +1,17 @@ + + + + + + com.mysql.jdbc.Driver + jdbc:mysql://localhost:3306/test + root + iamtheking + org.hibernate.dialect.MySQLDialect + true + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching_create_queries.sql b/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching_create_queries.sql new file mode 100644 index 0000000000..b36d9828f1 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/fetching_create_queries.sql @@ -0,0 +1,14 @@ +CREATE TABLE `user` ( + `user_id` int(10) NOT NULL AUTO_INCREMENT, + PRIMARY KEY (`user_id`) +) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 ; + + +CREATE TABLE `user_order` ( + `ORDER_ID` int(10) NOT NULL AUTO_INCREMENT, + `USER_ID` int(10) NOT NULL DEFAULT '0', + PRIMARY KEY (`ORDER_ID`,`USER_ID`), + KEY `USER_ID` (`USER_ID`), + CONSTRAINT `user_order_ibfk_1` FOREIGN KEY (`USER_ID`) REFERENCES `USER` (`user_id`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; + diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Config.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Config.xml new file mode 100644 index 0000000000..bbb61cb3e0 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Config.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + ${hibernate.hbm2ddl.auto} + ${hibernate.dialect} + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Configuration.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Configuration.xml new file mode 100644 index 0000000000..1870cfb917 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/hibernate5Configuration.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + ${hibernate.hbm2ddl.auto} + ${hibernate.dialect} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/immutable.cfg.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/immutable.cfg.xml new file mode 100644 index 0000000000..fe1e3cb723 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/immutable.cfg.xml @@ -0,0 +1,38 @@ + + + + + + + + + org.hsqldb.jdbcDriver + jdbc:hsqldb:hsql:mem://localhost/xdb + sa + + + + 1 + + + org.hibernate.dialect.HSQLDialect + + + thread + + + org.hibernate.cache.NoCacheProvider + + + true + + + update + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_statements.sql b/persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_statements.sql new file mode 100644 index 0000000000..ae008f29bc --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/insert_statements.sql @@ -0,0 +1,31 @@ +insert into item (item_id, item_name, item_desc, item_price) +values(1,'item One', 'test 1', 35.12); + +insert into item (item_id, item_name, item_desc, item_price) +values(2,'Pogo stick', 'Pogo stick', 466.12); +insert into item (item_id, item_name, item_desc, item_price) +values(3,'Raft', 'Raft', 345.12); + +insert into item (item_id, item_name, item_desc, item_price) +values(4,'Skate Board', 'Skating', 135.71); + +insert into item (item_id, item_name, item_desc, item_price) +values(5,'Umbrella', 'Umbrella for Rain', 619.25); + +insert into item (item_id, item_name, item_desc, item_price) +values(6,'Glue', 'Glue for home', 432.73); + +insert into item (item_id, item_name, item_desc, item_price) +values(7,'Paint', 'Paint for Room', 1311.40); + +insert into item (item_id, item_name, item_desc, item_price) +values(8,'Red paint', 'Red paint for room', 1135.71); + +insert into item (item_id, item_name, item_desc, item_price) +values(9,'Household Chairs', 'Chairs for house', 25.71); + +insert into item (item_id, item_name, item_desc, item_price) +values(10,'Office Chairs', 'Chairs for office', 395.98); + +insert into item (item_id, item_name, item_desc, item_price) +values(11,'Outdoor Chairs', 'Chairs for outdoor activities', 1234.36); diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/logback.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/persistence-mysql.properties b/persistence-modules/spring-data-jpa-query-2/src/main/resources/persistence-mysql.properties new file mode 100644 index 0000000000..f6b6ab6fca --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/persistence-mysql.properties @@ -0,0 +1,13 @@ +# jdbc.X +jdbc.driverClassName=com.mysql.jdbc.Driver +jdbc.url=jdbc:mysql://localhost:3306/spring_hibernate4_01?createDatabaseIfNotExist=true +jdbc.user=tutorialuser +jdbc.pass=tutorialmy5ql + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.MySQL5Dialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=create-drop + +# envers.X +envers.audit_table_suffix=_audit_log diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/stored_procedure.sql b/persistence-modules/spring-data-jpa-query-2/src/main/resources/stored_procedure.sql new file mode 100644 index 0000000000..9cedb75c37 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/stored_procedure.sql @@ -0,0 +1,20 @@ +DELIMITER // + CREATE PROCEDURE GetFoosByName(IN fooName VARCHAR(255)) + LANGUAGE SQL + DETERMINISTIC + SQL SECURITY DEFINER + BEGIN + SELECT * FROM foo WHERE name = fooName; + END // +DELIMITER ; + + +DELIMITER // + CREATE PROCEDURE GetAllFoos() + LANGUAGE SQL + DETERMINISTIC + SQL SECURITY DEFINER + BEGIN + SELECT * FROM foo; + END // +DELIMITER ; \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/main/resources/webSecurityConfig.xml b/persistence-modules/spring-data-jpa-query-2/src/main/resources/webSecurityConfig.xml new file mode 100644 index 0000000000..e5c19a4ad7 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/main/resources/webSecurityConfig.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java new file mode 100644 index 0000000000..65bf36f8bf --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/hibernate/fetching/HibernateFetchingIntegrationTest.java @@ -0,0 +1,42 @@ +package com.baeldung.hibernate.fetching; + +import com.baeldung.hibernate.fetching.model.OrderDetail; +import com.baeldung.hibernate.fetching.view.FetchingAppView; +import org.hibernate.Hibernate; +import org.junit.Before; +import org.junit.Test; + +import java.util.Set; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class HibernateFetchingIntegrationTest { + + // this loads sample data in the database + @Before + public void addFecthingTestData() { + FetchingAppView fav = new FetchingAppView(); + fav.createTestData(); + } + + // testLazyFetching() tests the lazy loading + // Since it lazily loaded so orderDetalSetLazy won't + // be initialized + @Test + public void testLazyFetching() { + FetchingAppView fav = new FetchingAppView(); + Set orderDetalSetLazy = fav.lazyLoaded(); + assertFalse(Hibernate.isInitialized(orderDetalSetLazy)); + } + + // testEagerFetching() tests the eager loading + // Since it eagerly loaded so orderDetalSetLazy would + // be initialized + @Test + public void testEagerFetching() { + FetchingAppView fav = new FetchingAppView(); + Set orderDetalSetEager = fav.eagerLoaded(); + assertTrue(Hibernate.isInitialized(orderDetalSetEager)); + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java new file mode 100644 index 0000000000..f5c45a5d6f --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/IntegrationTestSuite.java @@ -0,0 +1,25 @@ +package com.baeldung.persistence; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +import com.baeldung.persistence.audit.AuditTestSuite; +import com.baeldung.persistence.hibernate.FooPaginationPersistenceIntegrationTest; +import com.baeldung.persistence.hibernate.FooSortingPersistenceIntegrationTest; +import com.baeldung.persistence.service.FooServiceBasicPersistenceIntegrationTest; +import com.baeldung.persistence.service.FooServicePersistenceIntegrationTest; +import com.baeldung.persistence.service.ParentServicePersistenceIntegrationTest; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ // @formatter:off + AuditTestSuite.class + ,FooServiceBasicPersistenceIntegrationTest.class + ,FooPaginationPersistenceIntegrationTest.class + ,FooServicePersistenceIntegrationTest.class + ,ParentServicePersistenceIntegrationTest.class + ,FooSortingPersistenceIntegrationTest.class + +}) // @formatter:on +public class IntegrationTestSuite { + // +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java new file mode 100644 index 0000000000..34c725d62b --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/AuditTestSuite.java @@ -0,0 +1,14 @@ +package com.baeldung.persistence.audit; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +@RunWith(Suite.class) +@Suite.SuiteClasses({ // @formatter:off + EnversFooBarAuditIntegrationTest.class, + JPABarAuditIntegrationTest.class, + SpringDataJPABarAuditIntegrationTest.class +}) // @formatter:on +public class AuditTestSuite { + // +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java new file mode 100644 index 0000000000..444324dafc --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/EnversFooBarAuditIntegrationTest.java @@ -0,0 +1,146 @@ +package com.baeldung.persistence.audit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.service.IBarAuditableService; +import com.baeldung.persistence.service.IFooAuditableService; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS) +public class EnversFooBarAuditIntegrationTest { + + private static Logger logger = LoggerFactory.getLogger(EnversFooBarAuditIntegrationTest.class); + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + logger.info("setUpBeforeClass()"); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + logger.info("tearDownAfterClass()"); + } + + @Autowired + @Qualifier("fooHibernateAuditableService") + private IFooAuditableService fooService; + + @Autowired + @Qualifier("barHibernateAuditableService") + private IBarAuditableService barService; + + @Autowired + private SessionFactory sessionFactory; + + private Session session; + + @Before + public void setUp() throws Exception { + logger.info("setUp()"); + makeRevisions(); + session = sessionFactory.openSession(); + } + + @After + public void tearDown() throws Exception { + logger.info("tearDown()"); + session.close(); + } + + private void makeRevisions() { + final Bar bar = rev1(); + rev2(bar); + rev3(bar); + rev4(bar); + } + + // REV #1: insert BAR & FOO1 + private Bar rev1() { + final Bar bar = new Bar("BAR"); + final Foo foo1 = new Foo("FOO1"); + foo1.setBar(bar); + fooService.create(foo1); + return bar; + } + + // REV #2: insert FOO2 & update BAR + private void rev2(final Bar bar) { + final Foo foo2 = new Foo("FOO2"); + foo2.setBar(bar); + fooService.create(foo2); + } + + // REV #3: update BAR + private void rev3(final Bar bar) { + + bar.setName("BAR1"); + barService.update(bar); + } + + // REV #4: insert FOO3 & update BAR + private void rev4(final Bar bar) { + + final Foo foo3 = new Foo("FOO3"); + foo3.setBar(bar); + fooService.create(foo3); + } + + @Test + public final void whenFooBarsModified_thenFooBarsAudited() { + + List barRevisionList; + List fooRevisionList; + + // test Bar revisions + + barRevisionList = barService.getRevisions(); + + assertNotNull(barRevisionList); + assertEquals(4, barRevisionList.size()); + + assertEquals("BAR", barRevisionList.get(0).getName()); + assertEquals("BAR", barRevisionList.get(1).getName()); + assertEquals("BAR1", barRevisionList.get(2).getName()); + assertEquals("BAR1", barRevisionList.get(3).getName()); + + assertEquals(1, barRevisionList.get(0).getFooSet().size()); + assertEquals(2, barRevisionList.get(1).getFooSet().size()); + assertEquals(2, barRevisionList.get(2).getFooSet().size()); + assertEquals(3, barRevisionList.get(3).getFooSet().size()); + + // test Foo revisions + + fooRevisionList = fooService.getRevisions(); + assertNotNull(fooRevisionList); + assertEquals(3, fooRevisionList.size()); + assertEquals("FOO1", fooRevisionList.get(0).getName()); + assertEquals("FOO2", fooRevisionList.get(1).getName()); + assertEquals("FOO3", fooRevisionList.get(2).getName()); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java new file mode 100644 index 0000000000..f591773cde --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/JPABarAuditIntegrationTest.java @@ -0,0 +1,104 @@ +package com.baeldung.persistence.audit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.model.Bar.OPERATION; +import com.baeldung.persistence.service.IBarService; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +public class JPABarAuditIntegrationTest { + + private static Logger logger = LoggerFactory.getLogger(JPABarAuditIntegrationTest.class); + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + logger.info("setUpBeforeClass()"); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + logger.info("tearDownAfterClass()"); + } + + @Autowired + @Qualifier("barJpaService") + private IBarService barService; + + @Autowired + @Qualifier("jpaEntityManager") + private EntityManagerFactory entityManagerFactory; + + private EntityManager em; + + @Before + public void setUp() throws Exception { + logger.info("setUp()"); + em = entityManagerFactory.createEntityManager(); + } + + @After + public void tearDown() throws Exception { + logger.info("tearDown()"); + em.close(); + } + + @Test + public final void whenBarsModified_thenBarsAudited() { + + // insert BAR1 + Bar bar1 = new Bar("BAR1"); + barService.create(bar1); + + // update BAR1 + bar1.setName("BAR1a"); + barService.update(bar1); + + // insert BAR2 + Bar bar2 = new Bar("BAR2"); + barService.create(bar2); + + // update BAR1 + bar1.setName("BAR1b"); + barService.update(bar1); + + // get BAR1 and BAR2 from the DB and check the audit values + // detach instances from persistence context to make sure we fire db + em.detach(bar1); + em.detach(bar2); + bar1 = barService.findOne(bar1.getId()); + bar2 = barService.findOne(bar2.getId()); + + assertNotNull(bar1); + assertNotNull(bar2); + assertEquals(OPERATION.UPDATE, bar1.getOperation()); + assertEquals(OPERATION.INSERT, bar2.getOperation()); + assertTrue(bar1.getTimestamp() > bar2.getTimestamp()); + + barService.deleteById(bar1.getId()); + barService.deleteById(bar2.getId()); + + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java new file mode 100644 index 0000000000..0603067810 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/audit/SpringDataJPABarAuditIntegrationTest.java @@ -0,0 +1,78 @@ +package com.baeldung.persistence.audit; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.service.IBarService; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +public class SpringDataJPABarAuditIntegrationTest { + + private static Logger logger = LoggerFactory.getLogger(SpringDataJPABarAuditIntegrationTest.class); + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + logger.info("setUpBeforeClass()"); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + logger.info("tearDownAfterClass()"); + } + + @Autowired + @Qualifier("barSpringDataJpaService") + private IBarService barService; + + @Autowired + @Qualifier("jpaEntityManager") + private EntityManagerFactory entityManagerFactory; + + private EntityManager em; + + @Before + public void setUp() throws Exception { + logger.info("setUp()"); + em = entityManagerFactory.createEntityManager(); + } + + @After + public void tearDown() throws Exception { + logger.info("tearDown()"); + em.close(); + } + + @Test + @WithMockUser(username = "tutorialuser") + public final void whenBarsModified_thenBarsAudited() { + Bar bar = new Bar("BAR1"); + barService.create(bar); + assertEquals(bar.getCreatedDate(), bar.getModifiedDate()); + assertEquals("tutorialuser", bar.getCreatedBy(), bar.getModifiedBy()); + bar.setName("BAR2"); + bar = barService.update(bar); + assertTrue(bar.getCreatedDate() < bar.getModifiedDate()); + assertEquals("tutorialuser", bar.getCreatedBy(), bar.getModifiedBy()); + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java new file mode 100644 index 0000000000..da840dc027 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooFixtures.java @@ -0,0 +1,101 @@ +package com.baeldung.persistence.hibernate; + +import java.util.List; + +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.model.Bar; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; + +import com.google.common.collect.Lists; + +public class FooFixtures { + private SessionFactory sessionFactory; + + public FooFixtures(final SessionFactory sessionFactory) { + super(); + + this.sessionFactory = sessionFactory; + } + + // API + + public void createBars() { + Session session = null; + Transaction tx = null; + session = sessionFactory.openSession(); + tx = session.getTransaction(); + try { + tx.begin(); + for (int i = 156; i < 160; i++) { + final Bar bar = new Bar(); + bar.setName("Bar_" + i); + final Foo foo = new Foo("Foo_" + (i + 120)); + foo.setBar(bar); + session.save(foo); + final Foo foo2 = new Foo(null); + if (i % 2 == 0) + foo2.setName("LuckyFoo" + (i + 120)); + foo2.setBar(bar); + session.save(foo2); + bar.getFooSet().add(foo); + bar.getFooSet().add(foo2); + session.merge(bar); + } + tx.commit(); + session.flush(); + } catch (final HibernateException he) { + if (tx != null) + tx.rollback(); + System.out.println("Not able to open session"); + he.printStackTrace(); + } catch (final Exception e) { + e.printStackTrace(); + } finally { + if (session != null) + session.close(); + } + + } + + public void createFoos() { + Session session = null; + Transaction tx = null; + session = sessionFactory.openSession(); + tx = session.getTransaction(); + final List fooList = Lists.newArrayList(); + for (int i = 35; i < 46; i++) { + + final Foo foo = new Foo(); + foo.setName("Foo_" + (i + 120)); + final Bar bar = new Bar("bar_" + i); + bar.getFooSet().add(foo); + foo.setBar(bar); + fooList.add(foo); + + } + try { + tx.begin(); + for (final Foo foo : fooList) { + + session.save(foo.getBar()); + session.save(foo); + } + tx.commit(); + session.flush(); + } catch (final HibernateException he) { + if (tx != null) + tx.rollback(); + System.out.println("Not able to open session"); + he.printStackTrace(); + } catch (final Exception e) { + e.printStackTrace(); + } finally { + if (session != null) + session.close(); + } + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java new file mode 100644 index 0000000000..fd7bc4aabf --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooPaginationPersistenceIntegrationTest.java @@ -0,0 +1,185 @@ +package com.baeldung.persistence.hibernate; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.hamcrest.Matchers.hasSize; +import static org.hamcrest.Matchers.lessThan; +import static org.junit.Assert.assertThat; + +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.Query; +import org.hibernate.ScrollMode; +import org.hibernate.ScrollableResults; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Projections; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Foo; +import com.baeldung.persistence.service.IFooService; +import com.baeldung.spring.config.PersistenceTestConfig; +import com.google.common.collect.Lists; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +public class FooPaginationPersistenceIntegrationTest { + + @Autowired + private IFooService fooService; + + @Autowired + private SessionFactory sessionFactory; + + private Session session; + + // tests + + @Before + public final void before() { + final int minimalNumberOfEntities = 25; + if (fooService.findAll().size() <= minimalNumberOfEntities) { + for (int i = 0; i < minimalNumberOfEntities; i++) { + fooService.create(new Foo(randomAlphabetic(6))); + } + } + + session = sessionFactory.openSession(); + } + + @After + public final void after() { + session.close(); + } + + // tests + + @Test + public final void whenContextIsBootstrapped_thenNoExceptions() { + // + } + + @SuppressWarnings("unchecked") + @Test + public final void whenRetrievingPaginatedEntities_thenCorrectSize() { + final int pageNumber = 1; + final int pageSize = 10; + + final Query query = session.createQuery("From Foo"); + query.setFirstResult((pageNumber - 1) * pageSize); + query.setMaxResults(pageSize); + final List fooList = query.list(); + + assertThat(fooList, hasSize(pageSize)); + } + + @SuppressWarnings("unchecked") + @Test + public final void whenRetrievingAllPages_thenCorrect() { + int pageNumber = 1; + final int pageSize = 10; + + final String countQ = "Select count (f.id) from Foo f"; + final Query countQuery = session.createQuery(countQ); + final Long countResult = (Long) countQuery.uniqueResult(); + + final List fooList = Lists.newArrayList(); + int totalEntities = 0; + final Query query = session.createQuery("From Foo"); + while (totalEntities < countResult) { + query.setFirstResult((pageNumber - 1) * pageSize); + query.setMaxResults(pageSize); + fooList.addAll(query.list()); + totalEntities = fooList.size(); + pageNumber++; + } + } + + @SuppressWarnings("unchecked") + @Test + public final void whenRetrievingLastPage_thenCorrectSize() { + final int pageSize = 10; + + final String countQ = "Select count (f.id) from Foo f"; + final Query countQuery = session.createQuery(countQ); + final Long countResults = (Long) countQuery.uniqueResult(); + final int lastPageNumber = (int) (Math.ceil(countResults / pageSize)); + + final Query selectQuery = session.createQuery("From Foo"); + selectQuery.setFirstResult((lastPageNumber - 1) * pageSize); + selectQuery.setMaxResults(pageSize); + final List lastPage = selectQuery.list(); + + assertThat(lastPage, hasSize(lessThan(pageSize + 1))); + } + + // testing - scrollable + + @Test + public final void givenUsingTheScrollableApi_whenRetrievingPaginatedData_thenCorrect() { + final int pageSize = 10; + final String hql = "FROM Foo f order by f.name"; + final Query query = session.createQuery(hql); + + final ScrollableResults resultScroll = query.scroll(ScrollMode.FORWARD_ONLY); + + // resultScroll.last(); + // final int totalResults = resultScroll.getRowNumber() + 1; + + resultScroll.first(); + resultScroll.scroll(0); + final List fooPage = Lists.newArrayList(); + int i = 0; + while (pageSize > i++) { + fooPage.add((Foo) resultScroll.get(0)); + if (!resultScroll.next()) { + break; + } + } + + assertThat(fooPage, hasSize(lessThan(10 + 1))); + } + + @SuppressWarnings("unchecked") + @Test + public final void givenUsingTheCriteriaApi_whenRetrievingFirstPage_thenCorrect() { + final int pageSize = 10; + + final Criteria criteria = session.createCriteria(Foo.class); + criteria.setFirstResult(0); + criteria.setMaxResults(pageSize); + final List firstPage = criteria.list(); + + assertThat(firstPage, hasSize(pageSize)); + } + + @SuppressWarnings("unchecked") + @Test + public final void givenUsingTheCriteriaApi_whenRetrievingPaginatedData_thenCorrect() { + final Criteria criteriaCount = session.createCriteria(Foo.class); + criteriaCount.setProjection(Projections.rowCount()); + final Long count = (Long) criteriaCount.uniqueResult(); + + int pageNumber = 1; + final int pageSize = 10; + final List fooList = Lists.newArrayList(); + + final Criteria criteria = session.createCriteria(Foo.class); + int totalEntities = 0; + while (totalEntities < count.intValue()) { + criteria.setFirstResult((pageNumber - 1) * pageSize); + criteria.setMaxResults(pageSize); + fooList.addAll(criteria.list()); + totalEntities = fooList.size(); + pageNumber++; + } + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java new file mode 100644 index 0000000000..8173088af0 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/hibernate/FooSortingPersistenceIntegrationTest.java @@ -0,0 +1,174 @@ +package com.baeldung.persistence.hibernate; + +import static org.junit.Assert.assertNull; + +import java.util.List; +import java.util.Set; + +import org.hibernate.Criteria; +import org.hibernate.NullPrecedence; +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Order; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Bar; +import com.baeldung.persistence.model.Foo; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +@SuppressWarnings("unchecked") +public class FooSortingPersistenceIntegrationTest { + + @Autowired + private SessionFactory sessionFactory; + + private Session session; + + @Before + public void before() { + session = sessionFactory.openSession(); + + session.beginTransaction(); + + final FooFixtures fooData = new FooFixtures(sessionFactory); + fooData.createBars(); + } + + @After + public void after() { + session.getTransaction().commit(); + session.close(); + } + + @Test + public final void whenHQlSortingByOneAttribute_thenPrintSortedResults() { + final String hql = "FROM Foo f ORDER BY f.name"; + final Query query = session.createQuery(hql); + final List fooList = query.list(); + for (final Foo foo : fooList) { + System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); + } + } + + @Test + public final void whenHQlSortingByStringNullLast_thenLastNull() { + final String hql = "FROM Foo f ORDER BY f.name NULLS LAST"; + final Query query = session.createQuery(hql); + final List fooList = query.list(); + + assertNull(fooList.get(fooList.toArray().length - 1).getName()); + for (final Foo foo : fooList) { + System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); + } + } + + @Test + public final void whenSortingByStringNullsFirst_thenReturnNullsFirst() { + final String hql = "FROM Foo f ORDER BY f.name NULLS FIRST"; + final Query query = session.createQuery(hql); + final List fooList = query.list(); + assertNull(fooList.get(0).getName()); + for (final Foo foo : fooList) { + System.out.println("Name:" + foo.getName()); + + } + } + + @Test + public final void whenHQlSortingByOneAttribute_andOrderDirection_thenPrintSortedResults() { + final String hql = "FROM Foo f ORDER BY f.name ASC"; + final Query query = session.createQuery(hql); + final List fooList = query.list(); + for (final Foo foo : fooList) { + System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); + } + } + + @Test + public final void whenHQlSortingByMultipleAttributes_thenSortedResults() { + final String hql = "FROM Foo f ORDER BY f.name, f.id"; + final Query query = session.createQuery(hql); + final List fooList = query.list(); + for (final Foo foo : fooList) { + System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); + } + } + + @Test + public final void whenHQlSortingByMultipleAttributes_andOrderDirection_thenPrintSortedResults() { + final String hql = "FROM Foo f ORDER BY f.name DESC, f.id ASC"; + final Query query = session.createQuery(hql); + final List fooList = query.list(); + for (final Foo foo : fooList) { + System.out.println("Name: " + foo.getName() + ", Id: " + foo.getId()); + } + } + + @Test + public final void whenHQLCriteriaSortingByOneAttr_thenPrintSortedResults() { + final Criteria criteria = session.createCriteria(Foo.class, "FOO"); + criteria.addOrder(Order.asc("id")); + final List fooList = criteria.list(); + for (final Foo foo : fooList) { + System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); + } + } + + @Test + public final void whenHQLCriteriaSortingByMultipAttr_thenSortedResults() { + final Criteria criteria = session.createCriteria(Foo.class, "FOO"); + criteria.addOrder(Order.asc("name")); + criteria.addOrder(Order.asc("id")); + final List fooList = criteria.list(); + for (final Foo foo : fooList) { + System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); + } + } + + @Test + public final void whenCriteriaSortingStringNullsLastAsc_thenNullsLast() { + final Criteria criteria = session.createCriteria(Foo.class, "FOO"); + criteria.addOrder(Order.asc("name").nulls(NullPrecedence.LAST)); + final List fooList = criteria.list(); + assertNull(fooList.get(fooList.toArray().length - 1).getName()); + for (final Foo foo : fooList) { + System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); + } + } + + @Test + public final void whenCriteriaSortingStringNullsFirstDesc_thenNullsFirst() { + final Criteria criteria = session.createCriteria(Foo.class, "FOO"); + criteria.addOrder(Order.desc("name").nulls(NullPrecedence.FIRST)); + final List fooList = criteria.list(); + assertNull(fooList.get(0).getName()); + for (final Foo foo : fooList) { + System.out.println("Id: " + foo.getId() + ", FirstName: " + foo.getName()); + } + } + + @Test + public final void whenSortingBars_thenBarsWithSortedFoos() { + final String hql = "FROM Bar b ORDER BY b.id"; + final Query query = session.createQuery(hql); + final List barList = query.list(); + for (final Bar bar : barList) { + final Set fooSet = bar.getFooSet(); + System.out.println("Bar Id:" + bar.getId()); + for (final Foo foo : fooSet) { + System.out.println("FooName:" + foo.getName()); + } + } + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java new file mode 100644 index 0000000000..146f8e9622 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServiceBasicPersistenceIntegrationTest.java @@ -0,0 +1,55 @@ +package com.baeldung.persistence.service; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Foo; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +public class FooServiceBasicPersistenceIntegrationTest { + + @Autowired + private SessionFactory sessionFactory; + + @Autowired + private IFooService fooService; + + private Session session; + + // tests + + @Before + public final void before() { + session = sessionFactory.openSession(); + } + + @After + public final void after() { + session.close(); + } + + // tests + + @Test + public final void whenContextIsBootstrapped_thenNoExceptions() { + // + } + + @Test + public final void whenEntityIsCreated_thenNoExceptions() { + fooService.create(new Foo(randomAlphabetic(6))); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java new file mode 100644 index 0000000000..6d426849a6 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooServicePersistenceIntegrationTest.java @@ -0,0 +1,64 @@ +package com.baeldung.persistence.service; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; + +import org.junit.Ignore; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.dao.DataAccessException; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.dao.InvalidDataAccessApiUsageException; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Foo; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +public class FooServicePersistenceIntegrationTest { + + @Autowired + @Qualifier("fooHibernateService") + private IFooService service; + + // tests + + @Test + public final void whenContextIsBootstrapped_thenNoExceptions() { + // + } + + @Test + public final void whenEntityIsCreated_thenNoExceptions() { + service.create(new Foo(randomAlphabetic(6))); + } + + @Test(expected = DataIntegrityViolationException.class) + @Ignore("work in progress") + public final void whenInvalidEntityIsCreated_thenDataException() { + service.create(new Foo()); + } + + @Test(expected = DataIntegrityViolationException.class) + public final void whenEntityWithLongNameIsCreated_thenDataException() { + service.create(new Foo(randomAlphabetic(2048))); + } + + @Test(expected = InvalidDataAccessApiUsageException.class) + @Ignore("Right now, persist has saveOrUpdate semantics, so this will no longer fail") + public final void whenSameEntityIsCreatedTwice_thenDataException() { + final Foo entity = new Foo(randomAlphabetic(8)); + service.create(entity); + service.create(entity); + } + + @Test(expected = DataAccessException.class) + public final void temp_whenInvalidEntityIsCreated_thenDataException() { + service.create(new Foo(randomAlphabetic(2048))); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java new file mode 100644 index 0000000000..8bf33c4110 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/FooStoredProceduresLiveTest.java @@ -0,0 +1,121 @@ +package com.baeldung.persistence.service; + +import java.util.List; + +import static org.apache.commons.lang3.RandomStringUtils.randomAlphabetic; +import static org.junit.Assert.assertEquals; + +import org.hibernate.Query; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.exception.SQLGrammarException; +import org.junit.After; +import org.junit.Assume; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.config.PersistenceConfig; +import com.baeldung.persistence.model.Foo; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) +public class FooStoredProceduresLiveTest { + + private static final Logger LOGGER = LoggerFactory.getLogger(FooStoredProceduresLiveTest.class); + + @Autowired + private SessionFactory sessionFactory; + + @Autowired + private IFooService fooService; + + private Session session; + + @Before + public final void before() { + session = sessionFactory.openSession(); + Assume.assumeTrue(getAllFoosExists()); + Assume.assumeTrue(getFoosByNameExists()); + } + + private boolean getFoosByNameExists() { + try { + Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(Foo.class); + sqlQuery.list(); + return true; + } catch (SQLGrammarException e) { + LOGGER.error("WARNING : GetFoosByName() Procedure is may be missing ", e); + return false; + } + } + + private boolean getAllFoosExists() { + try { + Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(Foo.class); + sqlQuery.list(); + return true; + } catch (SQLGrammarException e) { + LOGGER.error("WARNING : GetAllFoos() Procedure is may be missing ", e); + return false; + } + } + + @After + public final void after() { + session.close(); + } + + @Test + public final void getAllFoosUsingStoredProcedures() { + + fooService.create(new Foo(randomAlphabetic(6))); + + // Stored procedure getAllFoos using createSQLQuery + Query sqlQuery = session.createSQLQuery("CALL GetAllFoos()").addEntity(Foo.class); + @SuppressWarnings("unchecked") + List allFoos = sqlQuery.list(); + for (Foo foo : allFoos) { + LOGGER.info("getAllFoos() SQL Query result : {}", foo.getName()); + } + assertEquals(allFoos.size(), fooService.findAll().size()); + + // Stored procedure getAllFoos using a Named Query + Query namedQuery = session.getNamedQuery("callGetAllFoos"); + @SuppressWarnings("unchecked") + List allFoos2 = namedQuery.list(); + for (Foo foo : allFoos2) { + LOGGER.info("getAllFoos() NamedQuery result : {}", foo.getName()); + } + assertEquals(allFoos2.size(), fooService.findAll().size()); + } + + @Test + public final void getFoosByNameUsingStoredProcedures() { + + fooService.create(new Foo("NewFooName")); + + // Stored procedure getFoosByName using createSQLQuery() + Query sqlQuery = session.createSQLQuery("CALL GetFoosByName(:fooName)").addEntity(Foo.class).setParameter("fooName", "NewFooName"); + @SuppressWarnings("unchecked") + List allFoosByName = sqlQuery.list(); + for (Foo foo : allFoosByName) { + LOGGER.info("getFoosByName() using SQL Query : found => {}", foo.toString()); + } + + // Stored procedure getFoosByName using getNamedQuery() + Query namedQuery = session.getNamedQuery("callGetFoosByName").setParameter("fooName", "NewFooName"); + @SuppressWarnings("unchecked") + List allFoosByName2 = namedQuery.list(); + for (Foo foo : allFoosByName2) { + LOGGER.info("getFoosByName() using Native Query : found => {}", foo.toString()); + } + + } +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java new file mode 100644 index 0000000000..5a73e39ca2 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/persistence/service/ParentServicePersistenceIntegrationTest.java @@ -0,0 +1,70 @@ +package com.baeldung.persistence.service; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + +import com.baeldung.persistence.model.Child; +import com.baeldung.persistence.model.Parent; +import com.baeldung.spring.config.PersistenceTestConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceTestConfig.class }, loader = AnnotationConfigContextLoader.class) +public class ParentServicePersistenceIntegrationTest { + + @Autowired + private IParentService service; + + @Autowired + private IChildService childService; + + // tests + + @Test + public final void whenContextIsBootstrapped_thenNoExceptions() { + // + } + + @Test + public final void whenOneToOneEntitiesAreCreated_thenNoExceptions() { + final Child childEntity = new Child(); + childService.create(childEntity); + + final Parent parentEntity = new Parent(childEntity); + service.create(parentEntity); + + System.out.println("Child = " + childService.findOne(childEntity.getId())); + System.out.println("Child - parent = " + childService.findOne(childEntity.getId()).getParent()); + + System.out.println("Parent = " + service.findOne(parentEntity.getId())); + System.out.println("Parent - child = " + service.findOne(parentEntity.getId()).getChild()); + } + + @Test(expected = DataIntegrityViolationException.class) + public final void whenChildIsDeletedWhileParentStillHasForeignKeyToIt_thenDataException() { + final Child childEntity = new Child(); + childService.create(childEntity); + + final Parent parentEntity = new Parent(childEntity); + service.create(parentEntity); + + childService.delete(childEntity); + } + + @Test + public final void whenChildIsDeletedAfterTheParent_thenNoExceptions() { + final Child childEntity = new Child(); + childService.create(childEntity); + + final Parent parentEntity = new Parent(childEntity); + service.create(parentEntity); + + service.delete(parentEntity); + childService.delete(childEntity); + } + +} diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java new file mode 100644 index 0000000000..34301741fe --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/config/PersistenceTestConfig.java @@ -0,0 +1,179 @@ +package com.baeldung.spring.config; + +import java.util.Properties; + +import javax.sql.DataSource; + +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.JpaVendorAdapter; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import com.baeldung.persistence.dao.IBarAuditableDao; +import com.baeldung.persistence.dao.IBarDao; +import com.baeldung.persistence.dao.IFooAuditableDao; +import com.baeldung.persistence.dao.IFooDao; +import com.baeldung.persistence.dao.impl.BarAuditableDao; +import com.baeldung.persistence.dao.impl.BarDao; +import com.baeldung.persistence.dao.impl.BarJpaDao; +import com.baeldung.persistence.dao.impl.FooAuditableDao; +import com.baeldung.persistence.dao.impl.FooDao; +import com.baeldung.persistence.service.IBarAuditableService; +import com.baeldung.persistence.service.IBarService; +import com.baeldung.persistence.service.IFooAuditableService; +import com.baeldung.persistence.service.IFooService; +import com.baeldung.persistence.service.impl.BarAuditableService; +import com.baeldung.persistence.service.impl.BarJpaService; +import com.baeldung.persistence.service.impl.BarSpringDataJpaService; +import com.baeldung.persistence.service.impl.FooAuditableService; +import com.baeldung.persistence.service.impl.FooService; +import com.google.common.base.Preconditions; + +@Configuration +@EnableTransactionManagement +@EnableJpaRepositories(basePackages = { "com.baeldung.persistence" }, transactionManagerRef = "jpaTransactionManager", entityManagerFactoryRef = "jpaEntityManager") +@EnableJpaAuditing +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.persistence" }) +public class PersistenceTestConfig { + + @Autowired + private Environment env; + + public PersistenceTestConfig() { + super(); + } + + @Bean + public LocalSessionFactoryBean sessionFactory() { + final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); + sessionFactory.setDataSource(restDataSource()); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); + sessionFactory.setHibernateProperties(hibernateProperties()); + + return sessionFactory; + } + + @Bean("jpaEntityManager") + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + final LocalContainerEntityManagerFactoryBean emf = new LocalContainerEntityManagerFactoryBean(); + emf.setDataSource(restDataSource()); + emf.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); + + final JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); + emf.setJpaVendorAdapter(vendorAdapter); + emf.setJpaProperties(hibernateProperties()); + + return emf; + } + + @Bean + public DataSource restDataSource() { + final BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); + dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); + dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); + + return dataSource; + } + + @Bean + public PlatformTransactionManager hibernateTransactionManager() { + final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); + transactionManager.setSessionFactory(sessionFactory().getObject()); + return transactionManager; + } + + @Bean + public PlatformTransactionManager jpaTransactionManager() { + final JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(entityManagerFactory().getObject()); + return transactionManager; + } + + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + @Bean + public IBarService barJpaService() { + return new BarJpaService(); + } + + @Bean + public IBarService barSpringDataJpaService() { + return new BarSpringDataJpaService(); + } + + @Bean + public IFooService fooHibernateService() { + return new FooService(); + } + + @Bean + public IBarAuditableService barHibernateAuditableService() { + return new BarAuditableService(); + } + + @Bean + public IFooAuditableService fooHibernateAuditableService() { + return new FooAuditableService(); + } + + @Bean + public IBarDao barJpaDao() { + return new BarJpaDao(); + } + + @Bean + public IBarDao barHibernateDao() { + return new BarDao(); + } + + @Bean + public IBarAuditableDao barHibernateAuditableDao() { + return new BarAuditableDao(); + } + + @Bean + public IFooDao fooHibernateDao() { + return new FooDao(); + } + + @Bean + public IFooAuditableDao fooHibernateAuditableDao() { + return new FooAuditableDao(); + } + + private final Properties hibernateProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + + hibernateProperties.setProperty("hibernate.show_sql", "true"); + // hibernateProperties.setProperty("hibernate.format_sql", "true"); + // hibernateProperties.setProperty("hibernate.globally_quoted_identifiers", "true"); + + // Envers properties + hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", env.getProperty("envers.audit_table_suffix")); + + return hibernateProperties; + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/datetime/ArticleRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/datetime/ArticleRepositoryIntegrationTest.java index 38fd804195..b1158b3dae 100644 --- a/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/datetime/ArticleRepositoryIntegrationTest.java +++ b/persistence-modules/spring-data-jpa-query-2/src/test/java/com/baeldung/spring/data/jpa/query/datetime/ArticleRepositoryIntegrationTest.java @@ -6,6 +6,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest; import org.springframework.test.context.junit4.SpringRunner; +import com.baeldung.spring.data.jpa.query.datetime.Article; +import com.baeldung.spring.data.jpa.query.datetime.ArticleRepository; + import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.List; diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/resources/fetching.cfg.xml b/persistence-modules/spring-data-jpa-query-2/src/test/resources/fetching.cfg.xml new file mode 100644 index 0000000000..55a3aeb51c --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/resources/fetching.cfg.xml @@ -0,0 +1,19 @@ + + + + + + org.h2.Driver + jdbc:h2:mem:testdb + sa + + org.hibernate.dialect.H2Dialect + update + true + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/resources/fetchingLazy.cfg.xml b/persistence-modules/spring-data-jpa-query-2/src/test/resources/fetchingLazy.cfg.xml new file mode 100644 index 0000000000..8fcf578660 --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/resources/fetchingLazy.cfg.xml @@ -0,0 +1,19 @@ + + + + + + org.h2.Driver + jdbc:h2:mem:testdb + sa + + org.hibernate.dialect.H2Dialect + update + true + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/src/test/resources/persistence-h2.properties b/persistence-modules/spring-data-jpa-query-2/src/test/resources/persistence-h2.properties new file mode 100644 index 0000000000..911619193b --- /dev/null +++ b/persistence-modules/spring-data-jpa-query-2/src/test/resources/persistence-h2.properties @@ -0,0 +1,13 @@ +# jdbc.X +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:test +jdbc.user=sa +jdbc.pass= + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=create-drop + +# envers.X +envers.audit_table_suffix=_audit_log From 6d9024049e1cdc01f22c77f3d9160cf3d8e0d410 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 28 Sep 2020 23:18:18 +0530 Subject: [PATCH 155/260] JAVA-2432: Added link to existing article --- persistence-modules/spring-hibernate-5/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md index 6d7526a13b..c7506026dd 100644 --- a/persistence-modules/spring-hibernate-5/README.md +++ b/persistence-modules/spring-hibernate-5/README.md @@ -12,4 +12,5 @@ This module contains articles about Hibernate 5 with Spring. - [Hibernate Second-Level Cache](http://www.baeldung.com/hibernate-second-level-cache) - [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate) - [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) -- [@Immutable in Hibernate](http://www.baeldung.com/hibernate-immutable) \ No newline at end of file +- [@Immutable in Hibernate](http://www.baeldung.com/hibernate-immutable) +- [Guide to Hibernate 5 with Spring](https://www.baeldung.com/hibernate-4-spring) \ No newline at end of file From 427581b3a64807d552f0cd58d9c858177121840d Mon Sep 17 00:00:00 2001 From: Anirban Chatterjee Date: Mon, 28 Sep 2020 23:21:40 +0200 Subject: [PATCH 156/260] Code cleanup --- .../componentscanautoconfigure/EmployeeApplication.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java index 108dd1a695..d429b0cdc9 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java @@ -3,7 +3,7 @@ package com.baeldung.annotations.componentscanautoconfigure; import com.baeldung.annotations.componentscanautoconfigure.teacher.Teacher; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.aop.AopAutoConfiguration; +import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; @@ -11,8 +11,8 @@ import org.springframework.context.annotation.Configuration; @Configuration @ComponentScan(basePackages = {"com.baeldung.annotations.componentscanautoconfigure.doctor", "com.baeldung.annotations.componentscanautoconfigure.employee"}, basePackageClasses = Teacher.class) -@EnableAutoConfiguration(exclude={AopAutoConfiguration.class}) -//@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.aop"}) +@EnableAutoConfiguration(exclude={JdbcTemplateAutoConfiguration.class}) +//@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration"}) public class EmployeeApplication { public static void main(String[] args) { From 42141b88891f3b331435a90957e59892ef49861b Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 29 Sep 2020 05:30:32 +0200 Subject: [PATCH 157/260] BAEL-4520 Getting Started with jOOQ (#10101) Co-authored-by: Krzysztof Majewski --- .../src/main/java/com/baeldung/jooq/Crud.java | 18 +++++----- .../java/com/baeldung/jooq/CrudExamples.java | 34 +++++++++---------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java index 0427b71c25..fb3d21c467 100644 --- a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/Crud.java @@ -19,14 +19,14 @@ public class Crud { public static Result getAll(DSLContext context, Table table) { return context.select() - .from(table) - .fetch(); + .from(table) + .fetch(); } public static Result getFields(DSLContext context, Table table, SelectFieldOrAsterisk... fields) { return context.select(fields) - .from(table) - .fetch(); + .from(table) + .fetch(); } public static R getOne(DSLContext context, Table table, Condition condition) { @@ -35,9 +35,9 @@ public class Crud { public static void update(DSLContext context, Table table, Map, T> values, Condition condition) { context.update(table) - .set(values) - .where(condition) - .execute(); + .set(values) + .where(condition) + .execute(); } public static > void update(UpdatableRecord record) { @@ -46,8 +46,8 @@ public class Crud { public static void delete(DSLContext context, Table table, Condition condition) { context.delete(table) - .where(condition) - .execute(); + .where(condition) + .execute(); } public static > void delete(UpdatableRecord record) { diff --git a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java index 87a7b6439e..57f6df4915 100644 --- a/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java +++ b/persistence-modules/jooq/src/main/java/com/baeldung/jooq/CrudExamples.java @@ -60,8 +60,8 @@ public class CrudExamples { private void readValues(DSLContext context) { Result authors = getAll( - context, - Author.AUTHOR + context, + Author.AUTHOR ); authors.forEach(author -> { @@ -73,15 +73,15 @@ public class CrudExamples { }); Result articles = getFields( - context, - Author.AUTHOR, - Article.ARTICLE.ID, Article.ARTICLE.TITLE + context, + Author.AUTHOR, + Article.ARTICLE.ID, Article.ARTICLE.TITLE ); AuthorRecord author = getOne( - context, - Author.AUTHOR, - Author.AUTHOR.ID.eq(1) + context, + Author.AUTHOR, + Author.AUTHOR.ID.eq(1) ); } @@ -90,24 +90,22 @@ public class CrudExamples { fieldsToUpdate.put(Author.AUTHOR.FIRST_NAME, "David"); fieldsToUpdate.put(Author.AUTHOR.LAST_NAME, "Brown"); update( - context, - Author.AUTHOR, - fieldsToUpdate, - Author.AUTHOR.ID.eq(1) + context, + Author.AUTHOR, + fieldsToUpdate, + Author.AUTHOR.ID.eq(1) ); ArticleRecord article = context.fetchOne(Article.ARTICLE, Article.ARTICLE.ID.eq(1)); article.setTitle("A New Article Title"); - update( - article - ); + update(article); } private void deleteValues(DSLContext context) { delete( - context, - Article.ARTICLE, - Article.ARTICLE.ID.eq(1) + context, + Article.ARTICLE, + Article.ARTICLE.ID.eq(1) ); AuthorRecord author = context.fetchOne(Author.AUTHOR, Author.AUTHOR.ID.eq(1)); From 154a23d9d968933ba697525457f9ffb3ffbfbec8 Mon Sep 17 00:00:00 2001 From: Krzysztof Majewski Date: Tue, 29 Sep 2020 05:32:37 +0200 Subject: [PATCH 158/260] BAEL-3997 (#10102) * BAEL-3997 Verify Working with Date Parameters in Spring app level config * rename properties Co-authored-by: Krzysztof Majewski --- .../com/baeldung/datetime/DateTimeConfig.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/spring-mvc-java-2/src/main/java/com/baeldung/datetime/DateTimeConfig.java b/spring-mvc-java-2/src/main/java/com/baeldung/datetime/DateTimeConfig.java index 8a5d1c71af..c89b043486 100644 --- a/spring-mvc-java-2/src/main/java/com/baeldung/datetime/DateTimeConfig.java +++ b/spring-mvc-java-2/src/main/java/com/baeldung/datetime/DateTimeConfig.java @@ -2,28 +2,35 @@ package com.baeldung.datetime; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.format.datetime.DateFormatter; +import org.springframework.format.datetime.DateFormatterRegistrar; import org.springframework.format.datetime.standard.DateTimeFormatterRegistrar; import org.springframework.format.number.NumberFormatAnnotationFormatterFactory; import org.springframework.format.support.DefaultFormattingConversionService; import org.springframework.format.support.FormattingConversionService; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import java.time.format.DateTimeFormatter; @Configuration -class DateTimeConfig { +public class DateTimeConfig extends WebMvcConfigurationSupport { @Bean - public FormattingConversionService conversionService() { + @Override + public FormattingConversionService mvcConversionService() { DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService(false); conversionService.addFormatterForFieldAnnotation(new NumberFormatAnnotationFormatterFactory()); - DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar(); - registrar.setDateFormatter(DateTimeFormatter.ofPattern("dd.MM.yyyy")); - registrar.setDateTimeFormatter(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")); - registrar.registerFormatters(conversionService); + DateTimeFormatterRegistrar dateTimeRegistrar = new DateTimeFormatterRegistrar(); + dateTimeRegistrar.setDateFormatter(DateTimeFormatter.ofPattern("dd.MM.yyyy")); + dateTimeRegistrar.setDateTimeFormatter(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")); + dateTimeRegistrar.registerFormatters(conversionService); + + DateFormatterRegistrar dateRegistrar = new DateFormatterRegistrar(); + dateRegistrar.setFormatter(new DateFormatter("dd.MM.yyyy")); + dateRegistrar.registerFormatters(conversionService); return conversionService; } - } \ No newline at end of file From 92bd1bbae6c75938ff8286671b6195a274ccd24a Mon Sep 17 00:00:00 2001 From: kwoyke Date: Tue, 29 Sep 2020 14:54:05 +0200 Subject: [PATCH 159/260] BAEL-2626: Update Feign to 10.11 (#10105) --- feign/pom.xml | 20 +------------------ .../feign/clients/BookClientLiveTest.java | 3 --- 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/feign/pom.xml b/feign/pom.xml index 4b994be1f2..da3cbcb0fd 100644 --- a/feign/pom.xml +++ b/feign/pom.xml @@ -16,11 +16,6 @@ - - io.github.openfeign - feign-core - ${feign.version} - io.github.openfeign feign-okhttp @@ -44,21 +39,8 @@ - - - - - org.springframework.boot - spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} - - - - - - 9.4.0 - 1.4.2.RELEASE + 10.11 diff --git a/feign/src/test/java/com/baeldung/feign/clients/BookClientLiveTest.java b/feign/src/test/java/com/baeldung/feign/clients/BookClientLiveTest.java index bee440bd9e..6f6666de32 100644 --- a/feign/src/test/java/com/baeldung/feign/clients/BookClientLiveTest.java +++ b/feign/src/test/java/com/baeldung/feign/clients/BookClientLiveTest.java @@ -6,8 +6,6 @@ import com.baeldung.feign.models.BookResource; import lombok.extern.slf4j.Slf4j; import org.junit.Before; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; import java.util.List; import java.util.UUID; @@ -22,7 +20,6 @@ import static org.junit.Assert.assertTrue; * Consumes https://github.com/Baeldung/spring-hypermedia-api */ @Slf4j -@RunWith(JUnit4.class) public class BookClientLiveTest { private BookClient bookClient; From 2f8478db349260fc51b143972b72367af579a3c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20G=C5=82=C3=B3wka?= Date: Tue, 29 Sep 2020 19:12:16 +0200 Subject: [PATCH 160/260] BAEL-4446: Getting cookies from httpclient response example (#10104) --- .../HttpClientGettingCookieValueUnitTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 httpclient-2/src/test/java/com/baeldung/httpclient/cookies/HttpClientGettingCookieValueUnitTest.java diff --git a/httpclient-2/src/test/java/com/baeldung/httpclient/cookies/HttpClientGettingCookieValueUnitTest.java b/httpclient-2/src/test/java/com/baeldung/httpclient/cookies/HttpClientGettingCookieValueUnitTest.java new file mode 100644 index 0000000000..c3b0ef3c25 --- /dev/null +++ b/httpclient-2/src/test/java/com/baeldung/httpclient/cookies/HttpClientGettingCookieValueUnitTest.java @@ -0,0 +1,54 @@ +package com.baeldung.httpclient.cookies; + +import org.apache.http.client.CookieStore; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.protocol.HttpClientContext; +import org.apache.http.cookie.Cookie; +import org.apache.http.impl.client.BasicCookieStore; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.cookie.BasicClientCookie; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +import static org.junit.Assert.assertEquals; + + +public class HttpClientGettingCookieValueUnitTest { + private static Logger log = LoggerFactory.getLogger(HttpClientGettingCookieValueUnitTest.class); + + private static final String SAMPLE_URL = "http://www.baeldung.com/"; + + @Test + public final void whenSettingCustomCookieOnTheRequest_thenGettingTheSameCookieFromTheResponse() throws IOException { + HttpClientContext context = HttpClientContext.create(); + context.setAttribute(HttpClientContext.COOKIE_STORE, createCustomCookieStore()); + + try (CloseableHttpClient httpClient = HttpClients.createDefault()) { + try (CloseableHttpResponse response = httpClient.execute(new HttpGet(SAMPLE_URL), context)) { + CookieStore cookieStore = context.getCookieStore(); + Cookie customCookie = cookieStore.getCookies() + .stream() + .peek(cookie -> log.info("cookie name:{}", cookie.getName())) + .filter(cookie -> "custom_cookie".equals(cookie.getName())) + .findFirst() + .orElseThrow(IllegalStateException::new); + + assertEquals("test_value", customCookie.getValue()); + } + } + } + + private BasicCookieStore createCustomCookieStore() { + BasicCookieStore cookieStore = new BasicCookieStore(); + BasicClientCookie cookie = new BasicClientCookie("custom_cookie", "test_value"); + cookie.setDomain("baeldung.com"); + cookie.setPath("/"); + cookieStore.addCookie(cookie); + return cookieStore; + } +} From d7fc3796d79c97104e8e8586a54c9491b69a1655 Mon Sep 17 00:00:00 2001 From: Daniel Taylor Date: Tue, 29 Sep 2020 16:37:05 -0600 Subject: [PATCH 161/260] change "Aborted" to "Failed" under testFailed() --- .../extensions/testwatcher/TestResultLoggerExtension.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java index a92c44a85b..1cbebd8d48 100644 --- a/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java +++ b/testing-modules/junit-5-advanced/src/test/java/com/baeldung/extensions/testwatcher/TestResultLoggerExtension.java @@ -46,7 +46,7 @@ public class TestResultLoggerExtension implements TestWatcher, AfterAllCallback @Override public void testFailed(ExtensionContext context, Throwable cause) { - LOG.info("Test Aborted for test {}: ", context.getDisplayName()); + LOG.info("Test Failed for test {}: ", context.getDisplayName()); testResultsStatus.add(TestResultStatus.FAILED); } From fc1964251c6115574ed0f45bf3deb79687b3632c Mon Sep 17 00:00:00 2001 From: Dhawal Kapil Date: Wed, 30 Sep 2020 19:19:44 +0530 Subject: [PATCH 162/260] JAVA-2432 Move articles out of spring-hibernate4 Removed legacy hibernate-4-spring article --- persistence-modules/spring-hibernate-5/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md index c7506026dd..cb227592f6 100644 --- a/persistence-modules/spring-hibernate-5/README.md +++ b/persistence-modules/spring-hibernate-5/README.md @@ -13,4 +13,3 @@ This module contains articles about Hibernate 5 with Spring. - [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate) - [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) - [@Immutable in Hibernate](http://www.baeldung.com/hibernate-immutable) -- [Guide to Hibernate 5 with Spring](https://www.baeldung.com/hibernate-4-spring) \ No newline at end of file From 5a8f42080742d63dac7d74dae390be440cc89585 Mon Sep 17 00:00:00 2001 From: Sampada <46674082+sampada07@users.noreply.github.com> Date: Wed, 30 Sep 2020 21:08:21 +0530 Subject: [PATCH 163/260] BAEL-4075: Validating phone number with libphonenumber (#10111) * BAEL-4075: Validating phone number with libphonenumber * BAEL-4075: Validating phone number with libphonenumber --- libraries-6/pom.xml | 7 ++ .../LibPhoneNumberUnitTest.java | 79 +++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 libraries-6/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java diff --git a/libraries-6/pom.xml b/libraries-6/pom.xml index 2f8cc385cb..7bb6028f17 100644 --- a/libraries-6/pom.xml +++ b/libraries-6/pom.xml @@ -107,6 +107,12 @@ renjin-script-engine ${renjin.version} + + + com.googlecode.libphonenumber + libphonenumber + ${libphonenumber.version} + @@ -150,6 +156,7 @@ RELEASE 3.0 1.8.1 + 8.12.9 diff --git a/libraries-6/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java b/libraries-6/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java new file mode 100644 index 0000000000..39b96b3e38 --- /dev/null +++ b/libraries-6/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java @@ -0,0 +1,79 @@ +package com.baeldung.libphonenumber; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +import com.google.i18n.phonenumbers.NumberParseException; +import com.google.i18n.phonenumbers.PhoneNumberUtil; +import com.google.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberType; +import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; +import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber.CountryCodeSource; + +public class LibPhoneNumberUnitTest { + + private static final PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); + + @Test + public void givenPhoneNumber_whenValid_thenOK() throws Exception { + + PhoneNumber phone = phoneNumberUtil.parse("+911234567890", CountryCodeSource.UNSPECIFIED.name()); + + assertTrue(phoneNumberUtil.isValidNumber(phone)); + assertTrue(phoneNumberUtil.isValidNumberForRegion(phone, "IN")); + assertFalse(phoneNumberUtil.isValidNumberForRegion(phone, "US")); + assertTrue(phoneNumberUtil.isValidNumber(phoneNumberUtil.getExampleNumber("IN"))); + } + + @Test + public void givenPhoneNumber_whenAlphaNumber_thenValid() { + assertTrue(phoneNumberUtil.isAlphaNumber("325-CARS")); + assertTrue(phoneNumberUtil.isAlphaNumber("0800 REPAIR")); + assertTrue(phoneNumberUtil.isAlphaNumber("1-800-MY-APPLE")); + assertTrue(phoneNumberUtil.isAlphaNumber("1-800-MY-APPLE..")); + assertFalse(phoneNumberUtil.isAlphaNumber("+876 1234-1234")); + } + + @Test + public void givenPhoneNumber_whenPossibleForType_thenValid() { + PhoneNumber number = new PhoneNumber(); + number.setCountryCode(54); + + number.setNationalNumber(123456); + assertTrue(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.FIXED_LINE)); + assertFalse(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.TOLL_FREE)); + + number.setNationalNumber(12345678901L); + assertFalse(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.FIXED_LINE)); + assertTrue(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.MOBILE)); + assertFalse(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.TOLL_FREE)); + } + + @Test + public void givenPhoneNumber_whenPossible_thenValid() { + PhoneNumber number = new PhoneNumber(); + number.setCountryCode(1) + .setNationalNumber(123000L); + assertFalse(phoneNumberUtil.isPossibleNumber(number)); + assertFalse(phoneNumberUtil.isPossibleNumber("+1 343 253 00000", "US")); + assertFalse(phoneNumberUtil.isPossibleNumber("(343) 253-00000", "US")); + assertFalse(phoneNumberUtil.isPossibleNumber("dial p for pizza", "US")); + assertFalse(phoneNumberUtil.isPossibleNumber("123-000", "US")); + } + + @Test + public void givenPhoneNumber_whenNumberGeographical_thenValid() throws NumberParseException { + + PhoneNumber phone = phoneNumberUtil.parse("+911234567890", "IN"); + assertTrue(phoneNumberUtil.isNumberGeographical(phone)); + + phone = new PhoneNumber().setCountryCode(1) + .setNationalNumber(2530000L); + assertFalse(phoneNumberUtil.isNumberGeographical(phone)); + + phone = new PhoneNumber().setCountryCode(800) + .setNationalNumber(12345678L); + assertFalse(phoneNumberUtil.isNumberGeographical(phone)); + } +} From cf1b728d3ed87ff964ff0852fb7eed74bfa765cc Mon Sep 17 00:00:00 2001 From: Philippe Date: Wed, 30 Sep 2020 21:47:55 -0300 Subject: [PATCH 164/260] [BAEL-4203] JNA --- apache-bookkeeper/data/zk/myid | 1 + {jni => java-native}/README.md | 0 java-native/core | 0 java-native/hs_err_pid100.log | 793 ++++++++++++++++++ java-native/hs_err_pid98.log | 789 +++++++++++++++++ java-native/pom.xml | 39 + .../com_baeldung_jni_ExampleObjectsJNI.cpp | 0 .../cpp/com_baeldung_jni_ExampleObjectsJNI.h | 0 .../com_baeldung_jni_ExampleParametersJNI.cpp | 0 .../com_baeldung_jni_ExampleParametersJNI.h | 0 .../cpp/com_baeldung_jni_HelloWorldJNI.cpp | 0 .../main/cpp/com_baeldung_jni_HelloWorldJNI.h | 0 .../src/main/cpp/generateNativeLib.bat | 0 .../src/main/cpp/generateNativeLib.sh | 0 .../src/main/cpp/generateNativeLibMac.sh | 0 .../src/main/java/com/baeldung/jna/CMath.java | 10 + .../src/main/java/com/baeldung/jna/Main.java | 8 + .../main/java/com/baeldung/jna/NativeFS.java | 46 + .../src/main/java/com/baeldung/jna/StdC.java | 17 + .../com/baeldung/jni/ExampleObjectsJNI.java | 0 .../baeldung/jni/ExampleParametersJNI.java | 0 .../java/com/baeldung/jni/HelloWorldJNI.java | 0 .../main/java/com/baeldung/jni/UserData.java | 0 .../src/main/resources/logback.xml | 0 .../java/com/baeldung/jna/CMathUnitTest.java | 18 + .../com/baeldung/jna/NativeFSUnitTest.java | 38 + .../java/com/baeldung/jna/StdCUnitTest.java | 47 ++ .../com/baeldung/jni/JNINativeManualTest.java | 0 jni/native/linux_x86_64/libnative.so | Bin 19856 -> 0 bytes jni/native/macos/libnative.dylib | Bin 23056 -> 0 bytes jni/pom.xml | 14 - pom.xml | 4 +- 32 files changed, 1808 insertions(+), 16 deletions(-) create mode 100644 apache-bookkeeper/data/zk/myid rename {jni => java-native}/README.md (100%) create mode 100644 java-native/core create mode 100644 java-native/hs_err_pid100.log create mode 100644 java-native/hs_err_pid98.log create mode 100644 java-native/pom.xml rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h (100%) rename {jni => java-native}/src/main/cpp/generateNativeLib.bat (100%) rename {jni => java-native}/src/main/cpp/generateNativeLib.sh (100%) mode change 100755 => 100644 rename {jni => java-native}/src/main/cpp/generateNativeLibMac.sh (100%) mode change 100755 => 100644 create mode 100644 java-native/src/main/java/com/baeldung/jna/CMath.java create mode 100644 java-native/src/main/java/com/baeldung/jna/Main.java create mode 100644 java-native/src/main/java/com/baeldung/jna/NativeFS.java create mode 100644 java-native/src/main/java/com/baeldung/jna/StdC.java rename {jni => java-native}/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java (100%) rename {jni => java-native}/src/main/java/com/baeldung/jni/ExampleParametersJNI.java (100%) rename {jni => java-native}/src/main/java/com/baeldung/jni/HelloWorldJNI.java (100%) rename {jni => java-native}/src/main/java/com/baeldung/jni/UserData.java (100%) rename {jni => java-native}/src/main/resources/logback.xml (100%) create mode 100644 java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java create mode 100644 java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java create mode 100644 java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java rename {jni => java-native}/src/test/java/com/baeldung/jni/JNINativeManualTest.java (100%) delete mode 100755 jni/native/linux_x86_64/libnative.so delete mode 100755 jni/native/macos/libnative.dylib delete mode 100644 jni/pom.xml diff --git a/apache-bookkeeper/data/zk/myid b/apache-bookkeeper/data/zk/myid new file mode 100644 index 0000000000..d00491fd7e --- /dev/null +++ b/apache-bookkeeper/data/zk/myid @@ -0,0 +1 @@ +1 diff --git a/jni/README.md b/java-native/README.md similarity index 100% rename from jni/README.md rename to java-native/README.md diff --git a/java-native/core b/java-native/core new file mode 100644 index 0000000000..e69de29bb2 diff --git a/java-native/hs_err_pid100.log b/java-native/hs_err_pid100.log new file mode 100644 index 0000000000..c05a3fad99 --- /dev/null +++ b/java-native/hs_err_pid100.log @@ -0,0 +1,793 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGSEGV (0xb) at pc=0x00007f7ecd45c090, pid=100, tid=115 +# +# JRE version: OpenJDK Runtime Environment (14.0.2+12) (build 14.0.2+12-46) +# Java VM: OpenJDK 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, serial gc, linux-amd64) +# Problematic frame: +# C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 +# +# Core dump will be written. Default location: /project/java-native/core +# +# If you would like to submit a bug report, please visit: +# https://bugreport.java.com/bugreport/crash.jsp +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- S U M M A R Y ------------ + +Command Line: /project/java-native/target/surefire/surefirebooter15072611568838389395.jar /project/java-native/target/surefire 2020-10-01T00-09-53_430-jvmRun2 surefire3272641396836511080tmp surefire_29468511371192344687tmp + +Host: Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz, 1 cores, 1G, Oracle Linux Server release 8.2 +Time: Thu Oct 1 00:10:23 2020 UTC elapsed time: 13 seconds (0d 0h 0m 13s) + +--------------- T H R E A D --------------- + +Current thread (0x00007f7ec4028800): JavaThread "main" [_thread_in_native, id=115, stack(0x00007f7ecde0a000,0x00007f7ecdf0b000)] + +Stack: [0x00007f7ecde0a000,0x00007f7ecdf0b000], sp=0x00007f7ecdf07788, free space=1013k +Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 +j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 +j com.sun.jna.Pointer.setMemory(JJB)V+9 +j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 +v ~StubRoutines::call_stub +V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb +V [libjvm.so+0xbb0efb] invoke(InstanceKlass*, methodHandle const&, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*) [clone .constprop.117]+0x85b +V [libjvm.so+0xbb19cd] Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0xfd +V [libjvm.so+0x83b8e3] JVM_InvokeMethod+0xf3 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 +j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 +j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 +j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 +v ~StubRoutines::call_stub +V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb +V [libjvm.so+0x80d2e3] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) [clone .isra.125] [clone .constprop.264]+0x193 +V [libjvm.so+0x80f338] jni_CallStaticVoidMethod+0x108 +C [libjli.so+0x4647] JavaMain+0xcd7 +C [libjli.so+0x85a9] ThreadJavaMain+0x9 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 +j com.sun.jna.Pointer.setMemory(JJB)V+9 +j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 +v ~StubRoutines::call_stub +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 +j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 +j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 +j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 +v ~StubRoutines::call_stub + +siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000 + +Register to memory mapping: + +RAX=0x0 is NULL +RBX={method} {0x00007f7ecb469628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' +RCX=0x0000000000000080 is an unknown value +RDX=0x0000000000019000 is an unknown value +RSP=0x00007f7ecdf07788 is pointing into the stack for thread: 0x00007f7ec4028800 +RBP=0x00007f7ecdf077c0 is pointing into the stack for thread: 0x00007f7ec4028800 +RSI=0x0 is NULL +RDI=0x0 is NULL +R8 =0x0 is NULL +R9 =0x0000000000019000 is an unknown value +R10=0x0000000000000009 is an unknown value +R11=0x00007f7ecd45bfd0: in /lib64/libc.so.6 at 0x00007f7ecd2fe000 +R12=0x0 is NULL +R13={method} {0x00007f7ecb469628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' +R14=0x00007f7ecdf078b8 is pointing into the stack for thread: 0x00007f7ec4028800 +R15=0x00007f7ec4028800 is a thread + + +Registers: +RAX=0x0000000000000000, RBX=0x00007f7ecb469628, RCX=0x0000000000000080, RDX=0x0000000000019000 +RSP=0x00007f7ecdf07788, RBP=0x00007f7ecdf077c0, RSI=0x0000000000000000, RDI=0x0000000000000000 +R8 =0x0000000000000000, R9 =0x0000000000019000, R10=0x0000000000000009, R11=0x00007f7ecd45bfd0 +R12=0x0000000000000000, R13=0x00007f7ecb469628, R14=0x00007f7ecdf078b8, R15=0x00007f7ec4028800 +RIP=0x00007f7ecd45c090, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000006 + TRAPNO=0x000000000000000e + +Top of Stack: (sp=0x00007f7ecdf07788) +0x00007f7ecdf07788: 00007f7ec9756e8d 00007f7ecb469628 +0x00007f7ecdf07798: 00007f7ec4028b10 0000000000000000 +0x00007f7ecdf077a8: 0000000000019000 0000000000000000 +0x00007f7ecdf077b8: 0000000000000000 00007f7ecdf07860 + +Instructions: (pc=0x00007f7ecd45c090) +0x00007f7ecd45bf90: f3 0f 1e fa 48 39 d1 0f 82 53 d9 fa ff 0f 1f 00 +0x00007f7ecd45bfa0: f3 0f 1e fa 48 c1 e2 02 c5 f9 6e c6 48 89 f8 c4 +0x00007f7ecd45bfb0: e2 7d 58 c0 eb 2a 66 2e 0f 1f 84 00 00 00 00 00 +0x00007f7ecd45bfc0: f3 0f 1e fa 48 39 d1 0f 82 23 d9 fa ff 0f 1f 00 +0x00007f7ecd45bfd0: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 +0x00007f7ecd45bfe0: 48 83 fa 20 0f 82 04 01 00 00 48 83 fa 40 77 77 +0x00007f7ecd45bff0: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 66 90 +0x00007f7ecd45c000: f3 0f 1e fa c5 f8 77 48 89 d1 40 0f b6 c6 48 89 +0x00007f7ecd45c010: fa f3 aa 48 89 d0 c3 66 0f 1f 84 00 00 00 00 00 +0x00007f7ecd45c020: f3 0f 1e fa 48 39 d1 0f 82 c3 d8 fa ff 0f 1f 00 +0x00007f7ecd45c030: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 +0x00007f7ecd45c040: 48 83 fa 20 0f 82 a4 00 00 00 48 83 fa 40 77 0e +0x00007f7ecd45c050: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 48 81 +0x00007f7ecd45c060: fa 00 08 00 00 77 9d 48 81 fa 80 00 00 00 77 19 +0x00007f7ecd45c070: c5 fe 7f 07 c5 fe 7f 47 20 c5 fe 7f 44 17 e0 c5 +0x00007f7ecd45c080: fe 7f 44 17 c0 c5 f8 77 c3 48 8d 8f 80 00 00 00 +0x00007f7ecd45c090: c5 fe 7f 07 48 83 e1 80 c5 fe 7f 44 17 e0 c5 fe +0x00007f7ecd45c0a0: 7f 47 20 c5 fe 7f 44 17 c0 c5 fe 7f 47 40 c5 fe +0x00007f7ecd45c0b0: 7f 44 17 a0 c5 fe 7f 47 60 c5 fe 7f 44 17 80 48 +0x00007f7ecd45c0c0: 01 fa 48 83 e2 80 48 39 d1 74 ba c5 fd 7f 01 c5 +0x00007f7ecd45c0d0: fd 7f 41 20 c5 fd 7f 41 40 c5 fd 7f 41 60 48 81 +0x00007f7ecd45c0e0: c1 80 00 00 00 48 39 ca 75 e1 c5 f8 77 c3 80 fa +0x00007f7ecd45c0f0: 10 73 1c c4 e1 f9 7e c1 80 fa 08 73 20 80 fa 04 +0x00007f7ecd45c100: 73 27 80 fa 01 77 2c 72 02 88 0f c5 f8 77 c3 c5 +0x00007f7ecd45c110: fa 7f 44 17 f0 c5 fa 7f 07 c5 f8 77 c3 48 89 4c +0x00007f7ecd45c120: 17 f8 48 89 0f c5 f8 77 c3 89 4c 17 fc 89 0f c5 +0x00007f7ecd45c130: f8 77 c3 66 89 4c 17 fe 66 89 0f c5 f8 77 c3 90 +0x00007f7ecd45c140: f3 0f 1e fa 48 c1 e2 02 48 83 fa 20 0f 82 3e 01 +0x00007f7ecd45c150: 00 00 c5 fe 6f 16 c5 ed 76 17 c5 fd d7 c2 83 e8 +0x00007f7ecd45c160: ff 0f 85 e9 00 00 00 48 83 fa 40 0f 86 c0 00 00 +0x00007f7ecd45c170: 00 c5 fd 76 c0 48 81 fa 00 01 00 00 0f 87 9e 01 +0x00007f7ecd45c180: 00 00 48 81 fa 80 00 00 00 0f 82 28 02 00 00 c5 + + +Stack slot to memory mapping: +stack at sp + 0 slots: 0x00007f7ec9756e8d: Java_com_sun_jna_Native_setMemory+0x00000000000000bd in /root/.cache/JNA/temp/jna17886832672380520920.tmp at 0x00007f7ec9750000 +stack at sp + 1 slots: {method} {0x00007f7ecb469628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' +stack at sp + 2 slots: 0x00007f7ec4028b10 points into unknown readable memory: 80 b8 24 cd 7e 7f 00 00 +stack at sp + 3 slots: 0x0 is NULL +stack at sp + 4 slots: 0x0000000000019000 is an unknown value +stack at sp + 5 slots: 0x0 is NULL +stack at sp + 6 slots: 0x0 is NULL +stack at sp + 7 slots: 0x00007f7ecdf07860 is pointing into the stack for thread: 0x00007f7ec4028800 + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x00007f7ec41c0640, length=12, elements={ +0x00007f7ec4028800, 0x00007f7ec40a2000, 0x00007f7ec40a3800, 0x00007f7ec40ad000, +0x00007f7ec40af000, 0x00007f7ec40b1000, 0x00007f7ec40b3000, 0x00007f7ec40b5000, +0x00007f7ec40ef800, 0x00007f7ec40f4800, 0x00007f7ec4188000, 0x00007f7ec41bf000 +} + +Java Threads: ( => current thread ) +=>0x00007f7ec4028800 JavaThread "main" [_thread_in_native, id=115, stack(0x00007f7ecde0a000,0x00007f7ecdf0b000)] + 0x00007f7ec40a2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=121, stack(0x00007f7ecab9d000,0x00007f7ecac9e000)] + 0x00007f7ec40a3800 JavaThread "Finalizer" daemon [_thread_blocked, id=124, stack(0x00007f7ecaa9c000,0x00007f7ecab9d000)] + 0x00007f7ec40ad000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=125, stack(0x00007f7eca2a7000,0x00007f7eca3a8000)] + 0x00007f7ec40af000 JavaThread "Service Thread" daemon [_thread_blocked, id=128, stack(0x00007f7eca1a6000,0x00007f7eca2a7000)] + 0x00007f7ec40b1000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=132, stack(0x00007f7eca0a5000,0x00007f7eca1a6000)] + 0x00007f7ec40b3000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=135, stack(0x00007f7ec9fa4000,0x00007f7eca0a5000)] + 0x00007f7ec40b5000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=137, stack(0x00007f7ec9ea3000,0x00007f7ec9fa4000)] + 0x00007f7ec40ef800 JavaThread "Notification Thread" daemon [_thread_blocked, id=146, stack(0x00007f7ec9da2000,0x00007f7ec9ea3000)] + 0x00007f7ec40f4800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=148, stack(0x00007f7ec9b9f000,0x00007f7ec9ca0000)] + 0x00007f7ec4188000 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=151, stack(0x00007f7ec9a87000,0x00007f7ec9b88000)] + 0x00007f7ec41bf000 JavaThread "surefire-forkedjvm-ping-30s" daemon [_thread_blocked, id=154, stack(0x00007f7ec9979000,0x00007f7ec9a7a000)] + +Other Threads: + 0x00007f7ec409e800 VMThread "VM Thread" [stack: 0x00007f7ecaca0000,0x00007f7ecada0000] [id=118] + 0x00007f7ec40f2000 WatcherThread [stack: 0x00007f7ec9ca2000,0x00007f7ec9da2000] [id=147] + +Threads with active compile tasks: + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x00000000e0c00000, size: 500 MB, Compressed Oops mode: 32-bit +Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000800b11000 + +Heap: + def new generation total 9792K, used 7588K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) + eden space 8704K, 74% used [0x00000000e0c00000, 0x00000000e1259340, 0x00000000e1480000) + from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) + to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) + tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) + the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea620, 0x00000000eb3ea800, 0x00000000ec800000) + Metaspace used 4998K, capacity 7071K, committed 7296K, reserved 1056768K + class space used 637K, capacity 881K, committed 896K, reserved 1048576K + +Card table byte_map: [0x00007f7ecb723000,0x00007f7ecb81e000] _byte_map_base: 0x00007f7ecb01d000 + +Polling page: 0x00007f7ecdf20000 + +Metaspace: + +Usage: + Non-class: 6.04 MB capacity, 4.26 MB ( 70%) used, 1.76 MB ( 29%) free+waste, 30.81 KB ( <1%) overhead. + Class: 881.00 KB capacity, 637.46 KB ( 72%) used, 226.48 KB ( 26%) free+waste, 17.06 KB ( 2%) overhead. + Both: 6.91 MB capacity, 4.88 MB ( 71%) used, 1.98 MB ( 29%) free+waste, 47.88 KB ( <1%) overhead. + +Virtual space: + Non-class space: 8.00 MB reserved, 6.25 MB ( 78%) committed + Class space: 1.00 GB reserved, 896.00 KB ( <1%) committed + Both: 1.01 GB reserved, 7.12 MB ( <1%) committed + +Chunk freelists: + Non-Class: 34.00 KB + Class: 11.00 KB + Both: 45.00 KB + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB + +CodeHeap 'non-profiled nmethods': size=120036Kb used=272Kb max_used=272Kb free=119763Kb + bounds [0x00007f7eb419c000, 0x00007f7eb440c000, 0x00007f7ebb6d5000] +CodeHeap 'profiled nmethods': size=120032Kb used=1610Kb max_used=1610Kb free=118421Kb + bounds [0x00007f7eacc64000, 0x00007f7eaced4000, 0x00007f7eb419c000] +CodeHeap 'non-nmethods': size=5692Kb used=1155Kb max_used=1170Kb free=4536Kb + bounds [0x00007f7eac6d5000, 0x00007f7eac945000, 0x00007f7eacc64000] + total_blobs=1295 nmethods=879 adapters=332 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 12.944 Thread 0x00007f7ec40b3000 876 ! 3 jdk.internal.loader.BuiltinClassLoader::findClassOnClassPathOrNull (64 bytes) +Event: 12.955 Thread 0x00007f7ec40b3000 nmethod 876 0x00007f7eacdf1a90 code [0x00007f7eacdf1e00, 0x00007f7eacdf3260] +Event: 12.963 Thread 0x00007f7ec40b3000 877 ! 3 java.util.zip.ZipFile$ZipFileInflaterInputStream::close (67 bytes) +Event: 12.969 Thread 0x00007f7ec40b3000 nmethod 877 0x00007f7eacdf3a90 code [0x00007f7eacdf3c80, 0x00007f7eacdf4390] +Event: 12.969 Thread 0x00007f7ec40b3000 878 3 java.util.ArrayDeque::add (7 bytes) +Event: 12.969 Thread 0x00007f7ec40b3000 nmethod 878 0x00007f7eacdf4690 code [0x00007f7eacdf4820, 0x00007f7eacdf4980] +Event: 12.969 Thread 0x00007f7ec40b3000 879 3 java.util.ArrayDeque::addLast (51 bytes) +Event: 12.974 Thread 0x00007f7ec40b3000 nmethod 879 0x00007f7eacdf4a10 code [0x00007f7eacdf4be0, 0x00007f7eacdf5090] +Event: 12.982 Thread 0x00007f7ec40b3000 880 3 java.util.zip.ZipFile$InflaterCleanupAction::run (12 bytes) +Event: 12.982 Thread 0x00007f7ec40b3000 nmethod 880 0x00007f7eacdf5210 code [0x00007f7eacdf53a0, 0x00007f7eacdf5500] +Event: 12.982 Thread 0x00007f7ec40b3000 881 ! 3 java.util.zip.ZipFile$CleanableResource::releaseInflater (53 bytes) +Event: 12.986 Thread 0x00007f7ec40b3000 nmethod 881 0x00007f7eacdf5610 code [0x00007f7eacdf57e0, 0x00007f7eacdf5d00] +Event: 12.986 Thread 0x00007f7ec40b3000 882 ! 3 java.util.zip.Inflater::reset (64 bytes) +Event: 12.991 Thread 0x00007f7ec40b3000 nmethod 882 0x00007f7eacdf5f10 code [0x00007f7eacdf60c0, 0x00007f7eacdf64b0] +Event: 12.993 Thread 0x00007f7ec40b1000 884 4 java.lang.Object:: (1 bytes) +Event: 12.995 Thread 0x00007f7ec40b1000 nmethod 884 0x00007f7eb41dfd90 code [0x00007f7eb41dff00, 0x00007f7eb41dffb8] +Event: 13.004 Thread 0x00007f7ec40b3000 885 3 sun.net.www.protocol.jar.Handler::checkNestedProtocol (18 bytes) +Event: 13.005 Thread 0x00007f7ec40b3000 nmethod 885 0x00007f7eacdf6690 code [0x00007f7eacdf6840, 0x00007f7eacdf6a20] +Event: 13.116 Thread 0x00007f7ec40b1000 886 4 java.lang.Math::min (11 bytes) +Event: 13.117 Thread 0x00007f7ec40b1000 nmethod 886 0x00007f7eb41e0090 code [0x00007f7eb41e0200, 0x00007f7eb41e0258] + +GC Heap History (2 events): +Event: 7.487 GC heap before +{Heap before GC invocations=0 (full 0): + def new generation total 9792K, used 8704K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) + eden space 8704K, 100% used [0x00000000e0c00000, 0x00000000e1480000, 0x00000000e1480000) + from space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) + to space 1088K, 0% used [0x00000000e1590000, 0x00000000e1590000, 0x00000000e16a0000) + tenured generation total 21888K, used 0K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) + the space 21888K, 0% used [0x00000000eb2a0000, 0x00000000eb2a0000, 0x00000000eb2a0200, 0x00000000ec800000) + Metaspace used 3048K, capacity 5805K, committed 6016K, reserved 1056768K + class space used 360K, capacity 627K, committed 640K, reserved 1048576K +} +Event: 7.606 GC heap after +{Heap after GC invocations=1 (full 0): + def new generation total 9792K, used 1088K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) + eden space 8704K, 0% used [0x00000000e0c00000, 0x00000000e0c00000, 0x00000000e1480000) + from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) + to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) + tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) + the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea620, 0x00000000eb3ea800, 0x00000000ec800000) + Metaspace used 3048K, capacity 5805K, committed 6016K, reserved 1056768K + class space used 360K, capacity 627K, committed 640K, reserved 1048576K +} + +Deoptimization events (20 events): +Event: 1.087 Thread 0x00007f7ec4028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f7eb41a0990 relative=0x00000000000001d0 +Event: 1.087 Thread 0x00007f7ec4028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7eb41a0990 method=java.lang.String.hashCode()I @ 42 c2 +Event: 1.087 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eb41a0990 sp=0x00007f7ecdf08320 +Event: 1.087 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71de25 sp=0x00007f7ecdf082d8 mode 2 +Event: 3.662 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eaccb7d84 sp=0x00007f7ecdf08350 +Event: 3.662 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf077e0 mode 0 +Event: 4.371 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eaccc4422 sp=0x00007f7ecdf044a0 +Event: 4.371 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf03928 mode 0 +Event: 4.510 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eacc890af sp=0x00007f7ecdf081b0 +Event: 4.510 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf07658 mode 0 +Event: 5.564 Thread 0x00007f7ec4028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f7eb41a88e8 relative=0x0000000000000068 +Event: 5.564 Thread 0x00007f7ec4028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7eb41a88e8 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 5.564 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eb41a88e8 sp=0x00007f7ecdf088d0 +Event: 5.564 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71de25 sp=0x00007f7ecdf08880 mode 2 +Event: 6.331 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eacccd5e8 sp=0x00007f7ecdf08580 +Event: 6.331 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf079f0 mode 0 +Event: 6.941 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eacccd5e8 sp=0x00007f7ecdf07660 +Event: 6.941 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf06af8 mode 0 +Event: 12.327 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eaccc95c5 sp=0x00007f7ecdf06910 +Event: 12.327 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf05d90 mode 0 + +Classes unloaded (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (17 events): +Event: 2.190 Thread 0x00007f7ec4028800 Exception (0x00000000e0dc5a48) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 5.245 Thread 0x00007f7ec4028800 Exception (0x00000000e12092c8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 5.649 Thread 0x00007f7ec4028800 Exception (0x00000000e1280798) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.015 Thread 0x00007f7ec4028800 Exception (0x00000000e12d47e0) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.382 Thread 0x00007f7ec4028800 Exception (0x00000000e1346640) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.595 Thread 0x00007f7ec4028800 Exception (0x00000000e137b378) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.672 Thread 0x00007f7ec4028800 Exception (0x00000000e139ef70) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.707 Thread 0x00007f7ec4028800 Exception (0x00000000e13a9150) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.739 Thread 0x00007f7ec4028800 Exception (0x00000000e13b6dd8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] +Event: 6.925 Thread 0x00007f7ec4028800 Exception (0x00000000e13ec548) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 7.737 Thread 0x00007f7ec4028800 Exception (0x00000000e0c25148) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 7.990 Thread 0x00007f7ec4028800 Exception (0x00000000e0c900c0) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 8.395 Thread 0x00007f7ec4028800 Exception (0x00000000e0cfd370) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 8.486 Thread 0x00007f7ec4028800 Exception (0x00000000e0d15688) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 8.487 Thread 0x00007f7ec4028800 Exception (0x00000000e0d18078) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] +Event: 10.634 Thread 0x00007f7ec4028800 Exception (0x00000000e0f88b50) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 10.647 Thread 0x00007f7ec4028800 Exception (0x00000000e0f8c210) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] + +Events (20 events): +Event: 12.778 loading class sun/security/provider/ByteArrayAccess +Event: 12.778 loading class sun/security/provider/ByteArrayAccess done +Event: 12.784 loading class java/io/DeleteOnExitHook +Event: 12.786 loading class java/io/DeleteOnExitHook done +Event: 12.786 loading class java/io/DeleteOnExitHook$1 +Event: 12.786 loading class java/io/DeleteOnExitHook$1 done +Event: 12.815 loading class java/io/FileOutputStream$1 +Event: 12.815 loading class java/io/FileOutputStream$1 done +Event: 12.822 Loaded shared library /root/.cache/JNA/temp/jna17886832672380520920.tmp +Event: 12.822 loading class java/nio/ShortBuffer +Event: 12.822 loading class java/nio/ShortBuffer done +Event: 12.822 loading class java/nio/FloatBuffer +Event: 12.834 loading class java/nio/FloatBuffer done +Event: 12.834 loading class java/nio/DoubleBuffer +Event: 12.835 loading class java/nio/DoubleBuffer done +Event: 12.922 Executing VM operation: HandshakeAllThreads +Event: 12.925 Executing VM operation: HandshakeAllThreads done +Event: 12.980 Loaded shared library /usr/java/openjdk-14/lib/libzip.so +Event: 13.028 Executing VM operation: HandshakeAllThreads +Event: 13.036 Executing VM operation: HandshakeAllThreads done + + +Dynamic libraries: +e0c00000-e16a0000 rw-p 00000000 00:00 0 +e16a0000-eb2a0000 ---p 00000000 00:00 0 +eb2a0000-ec800000 rw-p 00000000 00:00 0 +ec800000-100000000 ---p 00000000 00:00 0 +800000000-800003000 rwxp 00001000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +800003000-8003e4000 rw-p 00004000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +8003e4000-800b10000 r--p 003e5000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +800b10000-800b11000 rw-p 00b11000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +800b11000-800bf1000 rw-p 00000000 00:00 0 +800bf1000-840b11000 ---p 00000000 00:00 0 +55a64bfce000-55a64bfcf000 r-xp 00000000 08:01 3160482 /usr/java/openjdk-14/bin/java +55a64bfd0000-55a64bfd1000 r--p 00001000 08:01 3160482 /usr/java/openjdk-14/bin/java +55a64bfd1000-55a64bfd2000 rw-p 00002000 08:01 3160482 /usr/java/openjdk-14/bin/java +55a64c580000-55a64c5a1000 rw-p 00000000 00:00 0 [heap] +7f7e90000000-7f7e90288000 rw-p 00000000 00:00 0 +7f7e90288000-7f7e94000000 ---p 00000000 00:00 0 +7f7e94000000-7f7e94427000 rw-p 00000000 00:00 0 +7f7e94427000-7f7e98000000 ---p 00000000 00:00 0 +7f7e98000000-7f7e98021000 rw-p 00000000 00:00 0 +7f7e98021000-7f7e9c000000 ---p 00000000 00:00 0 +7f7e9c000000-7f7e9c021000 rw-p 00000000 00:00 0 +7f7e9c021000-7f7ea0000000 ---p 00000000 00:00 0 +7f7ea0000000-7f7ea0021000 rw-p 00000000 00:00 0 +7f7ea0021000-7f7ea4000000 ---p 00000000 00:00 0 +7f7ea4000000-7f7ea4021000 rw-p 00000000 00:00 0 +7f7ea4021000-7f7ea8000000 ---p 00000000 00:00 0 +7f7ea8000000-7f7ea8021000 rw-p 00000000 00:00 0 +7f7ea8021000-7f7eac000000 ---p 00000000 00:00 0 +7f7eac6d5000-7f7eac945000 rwxp 00000000 00:00 0 +7f7eac945000-7f7eacc64000 ---p 00000000 00:00 0 +7f7eacc64000-7f7eaced4000 rwxp 00000000 00:00 0 +7f7eaced4000-7f7eb419c000 ---p 00000000 00:00 0 +7f7eb419c000-7f7eb440c000 rwxp 00000000 00:00 0 +7f7eb440c000-7f7ebb6d5000 ---p 00000000 00:00 0 +7f7ebb6d5000-7f7ec4000000 r--s 00000000 08:01 3160985 /usr/java/openjdk-14/lib/modules +7f7ec4000000-7f7ec44c4000 rw-p 00000000 00:00 0 +7f7ec44c4000-7f7ec8000000 ---p 00000000 00:00 0 +7f7ec9292000-7f7ec9750000 rw-p 00000000 00:00 0 +7f7ec9750000-7f7ec9768000 r-xp 00000000 08:01 3163771 /root/.cache/JNA/temp/jna17886832672380520920.tmp (deleted) +7f7ec9768000-7f7ec9968000 ---p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna17886832672380520920.tmp (deleted) +7f7ec9968000-7f7ec9969000 rw-p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna17886832672380520920.tmp (deleted) +7f7ec9969000-7f7ec9976000 r-xp 00000000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so +7f7ec9976000-7f7ec9978000 r--p 0000c000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so +7f7ec9978000-7f7ec9979000 rw-p 0000e000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so +7f7ec9979000-7f7ec997d000 ---p 00000000 00:00 0 +7f7ec997d000-7f7ec9a7a000 rw-p 00000000 00:00 0 +7f7ec9a7a000-7f7ec9a7f000 r-xp 00000000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so +7f7ec9a7f000-7f7ec9a80000 r--p 00004000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so +7f7ec9a80000-7f7ec9a81000 rw-p 00005000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so +7f7ec9a81000-7f7ec9a85000 r-xp 00000000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so +7f7ec9a85000-7f7ec9a86000 r--p 00003000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so +7f7ec9a86000-7f7ec9a87000 rw-p 00004000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so +7f7ec9a87000-7f7ec9a8b000 ---p 00000000 00:00 0 +7f7ec9a8b000-7f7ec9b88000 rw-p 00000000 00:00 0 +7f7ec9b88000-7f7ec9b9d000 r-xp 00000000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so +7f7ec9b9d000-7f7ec9b9e000 r--p 00014000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so +7f7ec9b9e000-7f7ec9b9f000 rw-p 00015000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so +7f7ec9b9f000-7f7ec9ba3000 ---p 00000000 00:00 0 +7f7ec9ba3000-7f7ec9ca0000 rw-p 00000000 00:00 0 +7f7ec9ca0000-7f7ec9ca1000 ---p 00000000 00:00 0 +7f7ec9ca1000-7f7ec9da2000 rw-p 00000000 00:00 0 +7f7ec9da2000-7f7ec9da6000 ---p 00000000 00:00 0 +7f7ec9da6000-7f7ec9ea3000 rw-p 00000000 00:00 0 +7f7ec9ea3000-7f7ec9ea7000 ---p 00000000 00:00 0 +7f7ec9ea7000-7f7ec9fa4000 rw-p 00000000 00:00 0 +7f7ec9fa4000-7f7ec9fa8000 ---p 00000000 00:00 0 +7f7ec9fa8000-7f7eca0a5000 rw-p 00000000 00:00 0 +7f7eca0a5000-7f7eca0a9000 ---p 00000000 00:00 0 +7f7eca0a9000-7f7eca1a6000 rw-p 00000000 00:00 0 +7f7eca1a6000-7f7eca1aa000 ---p 00000000 00:00 0 +7f7eca1aa000-7f7eca2a7000 rw-p 00000000 00:00 0 +7f7eca2a7000-7f7eca2ab000 ---p 00000000 00:00 0 +7f7eca2ab000-7f7eca3a8000 rw-p 00000000 00:00 0 +7f7eca3a8000-7f7eca3fb000 r--p 00000000 08:01 3154692 /usr/lib/locale/C.utf8/LC_CTYPE +7f7eca3fb000-7f7ecaa9c000 r--p 00000000 08:01 3154691 /usr/lib/locale/C.utf8/LC_COLLATE +7f7ecaa9c000-7f7ecaaa0000 ---p 00000000 00:00 0 +7f7ecaaa0000-7f7ecab9d000 rw-p 00000000 00:00 0 +7f7ecab9d000-7f7ecaba1000 ---p 00000000 00:00 0 +7f7ecaba1000-7f7ecac9e000 rw-p 00000000 00:00 0 +7f7ecac9e000-7f7ecac9f000 ---p 00000000 00:00 0 +7f7ecac9f000-7f7ecb4bc000 rw-p 00000000 00:00 0 +7f7ecb4bc000-7f7ecb67c000 ---p 00000000 00:00 0 +7f7ecb67c000-7f7ecb687000 rw-p 00000000 00:00 0 +7f7ecb687000-7f7ecb723000 ---p 00000000 00:00 0 +7f7ecb723000-7f7ecb729000 rw-p 00000000 00:00 0 +7f7ecb729000-7f7ecb776000 ---p 00000000 00:00 0 +7f7ecb776000-7f7ecb781000 rw-p 00000000 00:00 0 +7f7ecb781000-7f7ecb81d000 ---p 00000000 00:00 0 +7f7ecb81d000-7f7ecb823000 rw-p 00000000 00:00 0 +7f7ecb823000-7f7ecb909000 ---p 00000000 00:00 0 +7f7ecb909000-7f7ecb90e000 rw-p 00000000 00:00 0 +7f7ecb90e000-7f7ecb9f4000 ---p 00000000 00:00 0 +7f7ecb9f4000-7f7ecb9ff000 r-xp 00000000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f7ecb9ff000-7f7ecbbfe000 ---p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f7ecbbfe000-7f7ecbbff000 r--p 0000a000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f7ecbbff000-7f7ecbc00000 rw-p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f7ecbc00000-7f7ecbc06000 rw-p 00000000 00:00 0 +7f7ecbc06000-7f7ecbc0d000 r-xp 00000000 08:01 3155596 /usr/lib64/librt-2.28.so +7f7ecbc0d000-7f7ecbe0d000 ---p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so +7f7ecbe0d000-7f7ecbe0e000 r--p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so +7f7ecbe0e000-7f7ecbe0f000 rw-p 00008000 08:01 3155596 /usr/lib64/librt-2.28.so +7f7ecbe0f000-7f7ecbf90000 r-xp 00000000 08:01 3155521 /usr/lib64/libm-2.28.so +7f7ecbf90000-7f7ecc18f000 ---p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so +7f7ecc18f000-7f7ecc190000 r--p 00180000 08:01 3155521 /usr/lib64/libm-2.28.so +7f7ecc190000-7f7ecc191000 rw-p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so +7f7ecc191000-7f7ecd1a0000 r-xp 00000000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f7ecd1a0000-7f7ecd1a1000 ---p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f7ecd1a1000-7f7ecd245000 r--p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f7ecd245000-7f7ecd27d000 rw-p 010b3000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f7ecd27d000-7f7ecd2fe000 rw-p 00000000 00:00 0 +7f7ecd2fe000-7f7ecd4b7000 r-xp 00000000 08:01 3155424 /usr/lib64/libc-2.28.so +7f7ecd4b7000-7f7ecd6b6000 ---p 001b9000 08:01 3155424 /usr/lib64/libc-2.28.so +7f7ecd6b6000-7f7ecd6ba000 r--p 001b8000 08:01 3155424 /usr/lib64/libc-2.28.so +7f7ecd6ba000-7f7ecd6bc000 rw-p 001bc000 08:01 3155424 /usr/lib64/libc-2.28.so +7f7ecd6bc000-7f7ecd6c0000 rw-p 00000000 00:00 0 +7f7ecd6c0000-7f7ecd6c3000 r-xp 00000000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f7ecd6c3000-7f7ecd8c2000 ---p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f7ecd8c2000-7f7ecd8c3000 r--p 00002000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f7ecd8c3000-7f7ecd8c4000 rw-p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f7ecd8c4000-7f7ecd8df000 r-xp 00000000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f7ecd8df000-7f7ecdade000 ---p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f7ecdade000-7f7ecdadf000 r--p 0001a000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f7ecdadf000-7f7ecdae0000 rw-p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f7ecdae0000-7f7ecdae4000 rw-p 00000000 00:00 0 +7f7ecdae4000-7f7ecdafa000 r-xp 00000000 08:01 3155650 /usr/lib64/libz.so.1.2.11 +7f7ecdafa000-7f7ecdcf9000 ---p 00016000 08:01 3155650 /usr/lib64/libz.so.1.2.11 +7f7ecdcf9000-7f7ecdcfa000 r--p 00015000 08:01 3155650 /usr/lib64/libz.so.1.2.11 +7f7ecdcfa000-7f7ecdcfb000 rw-p 00000000 00:00 0 +7f7ecdcfb000-7f7ecdd24000 r-xp 00000000 08:01 3155395 /usr/lib64/ld-2.28.so +7f7ecdd28000-7f7ecdd39000 r-xp 00000000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f7ecdd39000-7f7ecdd3a000 ---p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f7ecdd3a000-7f7ecdd3b000 r--p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f7ecdd3b000-7f7ecdd3c000 rw-p 00012000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f7ecdd3c000-7f7ecdd3d000 r--p 00000000 08:01 3154699 /usr/lib/locale/C.utf8/LC_NUMERIC +7f7ecdd3d000-7f7ecdd3e000 r--p 00000000 08:01 3154702 /usr/lib/locale/C.utf8/LC_TIME +7f7ecdd3e000-7f7ecdd3f000 r--p 00000000 08:01 3154697 /usr/lib/locale/C.utf8/LC_MONETARY +7f7ecdd3f000-7f7ecdd40000 r--p 00000000 08:01 3154696 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES +7f7ecdd40000-7f7ecdd41000 r--p 00000000 08:01 3154700 /usr/lib/locale/C.utf8/LC_PAPER +7f7ecdd41000-7f7ecdd42000 r--p 00000000 08:01 3154698 /usr/lib/locale/C.utf8/LC_NAME +7f7ecdd42000-7f7ecdd43000 r--p 00000000 08:01 3154690 /usr/lib/locale/C.utf8/LC_ADDRESS +7f7ecdd43000-7f7ecdd44000 r--p 00000000 08:01 3154701 /usr/lib/locale/C.utf8/LC_TELEPHONE +7f7ecdd44000-7f7ecdd45000 r--p 00000000 08:01 3154694 /usr/lib/locale/C.utf8/LC_MEASUREMENT +7f7ecdd45000-7f7ecdd4c000 r--s 00000000 08:01 3155357 /usr/lib64/gconv/gconv-modules.cache +7f7ecdd4c000-7f7ecdd4d000 r--p 00000000 08:01 3154693 /usr/lib/locale/C.utf8/LC_IDENTIFICATION +7f7ecdd4d000-7f7ecdd67000 r--p 00000000 08:01 3154703 /usr/lib/locale/locale-archive +7f7ecdd67000-7f7ecddad000 rw-p 00000000 00:00 0 +7f7ecddad000-7f7ecddb4000 ---p 00000000 00:00 0 +7f7ecddb4000-7f7ecddbb000 r-xp 00000000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so +7f7ecddbb000-7f7ecddbc000 r--p 00006000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so +7f7ecddbc000-7f7ecddbd000 rw-p 00007000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so +7f7ecddbd000-7f7ecdde1000 r-xp 00000000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so +7f7ecdde1000-7f7ecdde2000 r--p 00023000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so +7f7ecdde2000-7f7ecdde4000 rw-p 00024000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so +7f7ecdde4000-7f7ecddec000 rw-s 00000000 08:01 3163766 /tmp/hsperfdata_root/100 +7f7ecddec000-7f7ecde07000 r-xp 00000000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so +7f7ecde07000-7f7ecde09000 r--p 0001a000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so +7f7ecde09000-7f7ecde0a000 rw-p 0001c000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so +7f7ecde0a000-7f7ecde0e000 ---p 00000000 00:00 0 +7f7ecde0e000-7f7ecdf0d000 rw-p 00000000 00:00 0 +7f7ecdf0d000-7f7ecdf1b000 r-xp 00000000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f7ecdf1b000-7f7ecdf1c000 ---p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f7ecdf1c000-7f7ecdf1d000 r--p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f7ecdf1d000-7f7ecdf1e000 rw-p 0000f000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f7ecdf1e000-7f7ecdf20000 rw-p 00000000 00:00 0 +7f7ecdf20000-7f7ecdf21000 ---p 00000000 00:00 0 +7f7ecdf21000-7f7ecdf22000 r--p 00000000 00:00 0 +7f7ecdf22000-7f7ecdf23000 ---p 00000000 00:00 0 +7f7ecdf23000-7f7ecdf24000 r--p 00028000 08:01 3155395 /usr/lib64/ld-2.28.so +7f7ecdf24000-7f7ecdf25000 rw-p 00029000 08:01 3155395 /usr/lib64/ld-2.28.so +7f7ecdf25000-7f7ecdf26000 rw-p 00000000 00:00 0 +7ffd671f1000-7ffd67212000 rw-p 00000000 00:00 0 [stack] +7ffd67244000-7ffd67247000 r--p 00000000 00:00 0 [vvar] +7ffd67247000-7ffd67249000 r-xp 00000000 00:00 0 [vdso] +ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] + + +VM Arguments: +java_command: /project/java-native/target/surefire/surefirebooter15072611568838389395.jar /project/java-native/target/surefire 2020-10-01T00-09-53_430-jvmRun2 surefire3272641396836511080tmp surefire_29468511371192344687tmp +java_class_path (initial): /project/java-native/target/surefire/surefirebooter15072611568838389395.jar +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 2 {product} {ergonomic} + size_t InitialHeapSize = 33554432 {product} {ergonomic} + size_t MaxHeapSize = 524288000 {product} {ergonomic} + size_t MaxNewSize = 174718976 {product} {ergonomic} + size_t MinHeapDeltaBytes = 196608 {product} {ergonomic} + size_t MinHeapSize = 8388608 {product} {ergonomic} + size_t NewSize = 11141120 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 5826188 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} + size_t OldSize = 22413312 {product} {ergonomic} + uintx ProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + size_t SoftMaxHeapSize = 524288000 {manageable} {ergonomic} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseSerialGC = true {product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=/usr/java/openjdk-14 +PATH=/usr/java/openjdk-14/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +Signal Handlers: +SIGSEGV: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR2: [libjvm.so+0xb1bb30], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:Oracle Linux Server release 8.2 +uname:Linux 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 +OS uptime: 0 days 13:49 hours +libc:glibc 2.28 NPTL 2.28 +rlimit: STACK 8192k, CORE infinity, NPROC infinity, NOFILE 1048576, AS infinity, DATA infinity, FSIZE infinity +load average:4.05 1.87 0.76 + +/proc/meminfo: +MemTotal: 2045412 kB +MemFree: 1098032 kB +MemAvailable: 1368704 kB +Buffers: 83692 kB +Cached: 471224 kB +SwapCached: 0 kB +Active: 573576 kB +Inactive: 305820 kB +Active(anon): 404060 kB +Inactive(anon): 199632 kB +Active(file): 169516 kB +Inactive(file): 106188 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 1415172 kB +SwapFree: 1415172 kB +Dirty: 324 kB +Writeback: 0 kB +AnonPages: 324536 kB +Mapped: 120864 kB +Shmem: 290620 kB +Slab: 42348 kB +SReclaimable: 27356 kB +SUnreclaim: 14992 kB +KernelStack: 4672 kB +PageTables: 2744 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 2437876 kB +Committed_AS: 1792468 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 0 kB +VmallocChunk: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +DirectMap4k: 42944 kB +DirectMap2M: 2054144 kB + + +/proc/sys/kernel/threads-max (system-wide limit on the number of threads): +15537 + + +/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): +65530 + + +/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): +32768 + + + +container (cgroup) information: +container_type: cgroupv1 +cpu_cpuset_cpus: 0 +cpu_memory_nodes: 0 +active_processor_count: 1 +cpu_quota: no quota +cpu_period: 100000 +cpu_shares: no shares +memory_limit_in_bytes: unlimited +memory_and_swap_limit_in_bytes: unlimited +memory_soft_limit_in_bytes: unlimited +memory_usage_in_bytes: 356708352 +memory_max_usage_in_bytes: 394252288 + +KVM virtualization detected +Steal ticks since vm start: 0 +Steal ticks percentage since vm start: 0.000 + +CPU:total 1 (initial active 1) (1 cores per cpu, 1 threads per core) family 6 model 69 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, lzcnt, tsc, tscinvbit +CPU Model and flags from /proc/cpuinfo: +model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase avx2 invpcid md_clear flush_l1d + +Memory: 4k page, physical 2045412k(1098032k free), swap 1415172k(1415172k free) + +vm_info: OpenJDK 64-Bit Server VM (14.0.2+12-46) for linux-amd64 JRE (14.0.2+12-46), built on Jul 8 2020 23:30:21 by "mach5one" with gcc 8.3.0 + +END. diff --git a/java-native/hs_err_pid98.log b/java-native/hs_err_pid98.log new file mode 100644 index 0000000000..25a01096e2 --- /dev/null +++ b/java-native/hs_err_pid98.log @@ -0,0 +1,789 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# SIGSEGV (0xb) at pc=0x00007f01b8795090, pid=98, tid=114 +# +# JRE version: OpenJDK Runtime Environment (14.0.2+12) (build 14.0.2+12-46) +# Java VM: OpenJDK 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, serial gc, linux-amd64) +# Problematic frame: +# C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 +# +# Core dump will be written. Default location: /project/java-native/core +# +# If you would like to submit a bug report, please visit: +# https://bugreport.java.com/bugreport/crash.jsp +# The crash happened outside the Java Virtual Machine in native code. +# See problematic frame for where to report the bug. +# + +--------------- S U M M A R Y ------------ + +Command Line: /project/java-native/target/surefire/surefirebooter255261521587421006.jar /project/java-native/target/surefire 2020-10-01T00-29-55_633-jvmRun3 surefire15563279322398545368tmp surefire_13579138375161683305tmp + +Host: Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz, 1 cores, 1G, Oracle Linux Server release 8.2 +Time: Thu Oct 1 00:30:20 2020 UTC elapsed time: 10 seconds (0d 0h 0m 10s) + +--------------- T H R E A D --------------- + +Current thread (0x00007f01b0028800): JavaThread "main" [_thread_in_native, id=114, stack(0x00007f01b9143000,0x00007f01b9244000)] + +Stack: [0x00007f01b9143000,0x00007f01b9244000], sp=0x00007f01b9240788, free space=1013k +Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) +C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 +j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 +j com.sun.jna.Pointer.setMemory(JJB)V+9 +j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 +v ~StubRoutines::call_stub +V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb +V [libjvm.so+0xbb0efb] invoke(InstanceKlass*, methodHandle const&, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*) [clone .constprop.117]+0x85b +V [libjvm.so+0xbb19cd] Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0xfd +V [libjvm.so+0x83b8e3] JVM_InvokeMethod+0xf3 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 +j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 +j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 +j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 +v ~StubRoutines::call_stub +V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb +V [libjvm.so+0x80d2e3] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) [clone .isra.125] [clone .constprop.264]+0x193 +V [libjvm.so+0x80f338] jni_CallStaticVoidMethod+0x108 +C [libjli.so+0x4647] JavaMain+0xcd7 +C [libjli.so+0x85a9] ThreadJavaMain+0x9 + +Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) +j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 +j com.sun.jna.Pointer.setMemory(JJB)V+9 +j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 +v ~StubRoutines::call_stub +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 +j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 +j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 +j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 +j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 +j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 +j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 +j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 +j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 +j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 +j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 +j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 +j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 +j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 +j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 +j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 +j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 +j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 +j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 +j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 +j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 +j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 +j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 +j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 +j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 +v ~StubRoutines::call_stub + +siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000 + +Register to memory mapping: + +RAX=0x0 is NULL +RBX={method} {0x00007f01b6799628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' +RCX=0x0000000000000080 is an unknown value +RDX=0x0000000000019000 is an unknown value +RSP=0x00007f01b9240788 is pointing into the stack for thread: 0x00007f01b0028800 +RBP=0x00007f01b92407c0 is pointing into the stack for thread: 0x00007f01b0028800 +RSI=0x0 is NULL +RDI=0x0 is NULL +R8 =0x0 is NULL +R9 =0x0000000000019000 is an unknown value +R10=0x0000000000000009 is an unknown value +R11=0x00007f01b8794fd0: in /lib64/libc.so.6 at 0x00007f01b8637000 +R12=0x0 is NULL +R13={method} {0x00007f01b6799628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' +R14=0x00007f01b92408b8 is pointing into the stack for thread: 0x00007f01b0028800 +R15=0x00007f01b0028800 is a thread + + +Registers: +RAX=0x0000000000000000, RBX=0x00007f01b6799628, RCX=0x0000000000000080, RDX=0x0000000000019000 +RSP=0x00007f01b9240788, RBP=0x00007f01b92407c0, RSI=0x0000000000000000, RDI=0x0000000000000000 +R8 =0x0000000000000000, R9 =0x0000000000019000, R10=0x0000000000000009, R11=0x00007f01b8794fd0 +R12=0x0000000000000000, R13=0x00007f01b6799628, R14=0x00007f01b92408b8, R15=0x00007f01b0028800 +RIP=0x00007f01b8795090, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000006 + TRAPNO=0x000000000000000e + +Top of Stack: (sp=0x00007f01b9240788) +0x00007f01b9240788: 00007f01b4a8fe8d 00007f01b6799628 +0x00007f01b9240798: 00007f01b0028b10 0000000000000000 +0x00007f01b92407a8: 0000000000019000 0000000000000000 +0x00007f01b92407b8: 0000000000000000 00007f01b9240860 + +Instructions: (pc=0x00007f01b8795090) +0x00007f01b8794f90: f3 0f 1e fa 48 39 d1 0f 82 53 d9 fa ff 0f 1f 00 +0x00007f01b8794fa0: f3 0f 1e fa 48 c1 e2 02 c5 f9 6e c6 48 89 f8 c4 +0x00007f01b8794fb0: e2 7d 58 c0 eb 2a 66 2e 0f 1f 84 00 00 00 00 00 +0x00007f01b8794fc0: f3 0f 1e fa 48 39 d1 0f 82 23 d9 fa ff 0f 1f 00 +0x00007f01b8794fd0: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 +0x00007f01b8794fe0: 48 83 fa 20 0f 82 04 01 00 00 48 83 fa 40 77 77 +0x00007f01b8794ff0: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 66 90 +0x00007f01b8795000: f3 0f 1e fa c5 f8 77 48 89 d1 40 0f b6 c6 48 89 +0x00007f01b8795010: fa f3 aa 48 89 d0 c3 66 0f 1f 84 00 00 00 00 00 +0x00007f01b8795020: f3 0f 1e fa 48 39 d1 0f 82 c3 d8 fa ff 0f 1f 00 +0x00007f01b8795030: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 +0x00007f01b8795040: 48 83 fa 20 0f 82 a4 00 00 00 48 83 fa 40 77 0e +0x00007f01b8795050: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 48 81 +0x00007f01b8795060: fa 00 08 00 00 77 9d 48 81 fa 80 00 00 00 77 19 +0x00007f01b8795070: c5 fe 7f 07 c5 fe 7f 47 20 c5 fe 7f 44 17 e0 c5 +0x00007f01b8795080: fe 7f 44 17 c0 c5 f8 77 c3 48 8d 8f 80 00 00 00 +0x00007f01b8795090: c5 fe 7f 07 48 83 e1 80 c5 fe 7f 44 17 e0 c5 fe +0x00007f01b87950a0: 7f 47 20 c5 fe 7f 44 17 c0 c5 fe 7f 47 40 c5 fe +0x00007f01b87950b0: 7f 44 17 a0 c5 fe 7f 47 60 c5 fe 7f 44 17 80 48 +0x00007f01b87950c0: 01 fa 48 83 e2 80 48 39 d1 74 ba c5 fd 7f 01 c5 +0x00007f01b87950d0: fd 7f 41 20 c5 fd 7f 41 40 c5 fd 7f 41 60 48 81 +0x00007f01b87950e0: c1 80 00 00 00 48 39 ca 75 e1 c5 f8 77 c3 80 fa +0x00007f01b87950f0: 10 73 1c c4 e1 f9 7e c1 80 fa 08 73 20 80 fa 04 +0x00007f01b8795100: 73 27 80 fa 01 77 2c 72 02 88 0f c5 f8 77 c3 c5 +0x00007f01b8795110: fa 7f 44 17 f0 c5 fa 7f 07 c5 f8 77 c3 48 89 4c +0x00007f01b8795120: 17 f8 48 89 0f c5 f8 77 c3 89 4c 17 fc 89 0f c5 +0x00007f01b8795130: f8 77 c3 66 89 4c 17 fe 66 89 0f c5 f8 77 c3 90 +0x00007f01b8795140: f3 0f 1e fa 48 c1 e2 02 48 83 fa 20 0f 82 3e 01 +0x00007f01b8795150: 00 00 c5 fe 6f 16 c5 ed 76 17 c5 fd d7 c2 83 e8 +0x00007f01b8795160: ff 0f 85 e9 00 00 00 48 83 fa 40 0f 86 c0 00 00 +0x00007f01b8795170: 00 c5 fd 76 c0 48 81 fa 00 01 00 00 0f 87 9e 01 +0x00007f01b8795180: 00 00 48 81 fa 80 00 00 00 0f 82 28 02 00 00 c5 + + +Stack slot to memory mapping: +stack at sp + 0 slots: 0x00007f01b4a8fe8d: Java_com_sun_jna_Native_setMemory+0x00000000000000bd in /root/.cache/JNA/temp/jna8092103267992246554.tmp at 0x00007f01b4a89000 +stack at sp + 1 slots: {method} {0x00007f01b6799628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' +stack at sp + 2 slots: 0x00007f01b0028b10 points into unknown readable memory: 80 48 58 b8 01 7f 00 00 +stack at sp + 3 slots: 0x0 is NULL +stack at sp + 4 slots: 0x0000000000019000 is an unknown value +stack at sp + 5 slots: 0x0 is NULL +stack at sp + 6 slots: 0x0 is NULL +stack at sp + 7 slots: 0x00007f01b9240860 is pointing into the stack for thread: 0x00007f01b0028800 + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x00007f01b01d8a40, length=12, elements={ +0x00007f01b0028800, 0x00007f01b00a2000, 0x00007f01b00a3800, 0x00007f01b00ad000, +0x00007f01b00af000, 0x00007f01b00b1000, 0x00007f01b00b3000, 0x00007f01b00b5000, +0x00007f01b00ef800, 0x00007f01b00f4800, 0x00007f01b0188800, 0x00007f01b01d7800 +} + +Java Threads: ( => current thread ) +=>0x00007f01b0028800 JavaThread "main" [_thread_in_native, id=114, stack(0x00007f01b9143000,0x00007f01b9244000)] + 0x00007f01b00a2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=120, stack(0x00007f01b5ed6000,0x00007f01b5fd7000)] + 0x00007f01b00a3800 JavaThread "Finalizer" daemon [_thread_blocked, id=123, stack(0x00007f01b5dd5000,0x00007f01b5ed6000)] + 0x00007f01b00ad000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=125, stack(0x00007f01b55e0000,0x00007f01b56e1000)] + 0x00007f01b00af000 JavaThread "Service Thread" daemon [_thread_blocked, id=128, stack(0x00007f01b54df000,0x00007f01b55e0000)] + 0x00007f01b00b1000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=130, stack(0x00007f01b53de000,0x00007f01b54df000)] + 0x00007f01b00b3000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=133, stack(0x00007f01b52dd000,0x00007f01b53de000)] + 0x00007f01b00b5000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=138, stack(0x00007f01b51dc000,0x00007f01b52dd000)] + 0x00007f01b00ef800 JavaThread "Notification Thread" daemon [_thread_blocked, id=140, stack(0x00007f01b50db000,0x00007f01b51dc000)] + 0x00007f01b00f4800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=146, stack(0x00007f01b4ed8000,0x00007f01b4fd9000)] + 0x00007f01b0188800 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=150, stack(0x00007f01b4dc0000,0x00007f01b4ec1000)] + 0x00007f01b01d7800 JavaThread "surefire-forkedjvm-ping-30s" daemon [_thread_blocked, id=153, stack(0x00007f01b4cb2000,0x00007f01b4db3000)] + +Other Threads: + 0x00007f01b009e800 VMThread "VM Thread" [stack: 0x00007f01b5fd9000,0x00007f01b60d9000] [id=117] + 0x00007f01b00f2000 WatcherThread [stack: 0x00007f01b4fdb000,0x00007f01b50db000] [id=141] + +Threads with active compile tasks: + +VM state:not at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: None + +Heap address: 0x00000000e0c00000, size: 500 MB, Compressed Oops mode: 32-bit +Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 +Compressed class space size: 1073741824 Address: 0x0000000800b11000 + +Heap: + def new generation total 9792K, used 7590K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) + eden space 8704K, 74% used [0x00000000e0c00000, 0x00000000e1259a00, 0x00000000e1480000) + from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) + to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) + tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) + the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea690, 0x00000000eb3ea800, 0x00000000ec800000) + Metaspace used 4992K, capacity 7071K, committed 7296K, reserved 1056768K + class space used 637K, capacity 881K, committed 896K, reserved 1048576K + +Card table byte_map: [0x00007f01b6a5c000,0x00007f01b6b57000] _byte_map_base: 0x00007f01b6356000 + +Polling page: 0x00007f01b9259000 + +Metaspace: + +Usage: + Non-class: 6.04 MB capacity, 4.25 MB ( 70%) used, 1.76 MB ( 29%) free+waste, 30.81 KB ( <1%) overhead. + Class: 881.00 KB capacity, 637.47 KB ( 72%) used, 226.47 KB ( 26%) free+waste, 17.06 KB ( 2%) overhead. + Both: 6.91 MB capacity, 4.88 MB ( 71%) used, 1.98 MB ( 29%) free+waste, 47.88 KB ( <1%) overhead. + +Virtual space: + Non-class space: 8.00 MB reserved, 6.25 MB ( 78%) committed + Class space: 1.00 GB reserved, 896.00 KB ( <1%) committed + Both: 1.01 GB reserved, 7.12 MB ( <1%) committed + +Chunk freelists: + Non-Class: 62.00 KB + Class: 11.00 KB + Both: 73.00 KB + +MaxMetaspaceSize: unlimited +CompressedClassSpaceSize: 1.00 GB + +CodeHeap 'non-profiled nmethods': size=120036Kb used=270Kb max_used=270Kb free=119765Kb + bounds [0x00007f01a019c000, 0x00007f01a040c000, 0x00007f01a76d5000] +CodeHeap 'profiled nmethods': size=120032Kb used=1585Kb max_used=1585Kb free=118446Kb + bounds [0x00007f0198c64000, 0x00007f0198ed4000, 0x00007f01a019c000] +CodeHeap 'non-nmethods': size=5692Kb used=1156Kb max_used=1171Kb free=4535Kb + bounds [0x00007f01986d5000, 0x00007f0198945000, 0x00007f0198c64000] + total_blobs=1295 nmethods=879 adapters=332 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 10.134 Thread 0x00007f01b00b3000 876 3 java.util.zip.ZipEntry:: (74 bytes) +Event: 10.135 Thread 0x00007f01b00b3000 nmethod 876 0x00007f0198ded390 code [0x00007f0198ded580, 0x00007f0198dedaf0] +Event: 10.135 Thread 0x00007f01b00b3000 873 3 java.util.jar.JarFile$1::apply (13 bytes) +Event: 10.138 Thread 0x00007f01b00b3000 nmethod 873 0x00007f0198dedd10 code [0x00007f0198dedec0, 0x00007f0198dee1a0] +Event: 10.138 Thread 0x00007f01b00b3000 874 3 java.util.jar.JarFile$JarFileEntry:: (16 bytes) +Event: 10.138 Thread 0x00007f01b00b3000 nmethod 874 0x00007f0198dee310 code [0x00007f0198dee4c0, 0x00007f0198dee6c0] +Event: 10.141 Thread 0x00007f01b00b1000 877 4 java.lang.StringBuilder:: (7 bytes) +Event: 10.144 Thread 0x00007f01b00b1000 nmethod 877 0x00007f01a01df010 code [0x00007f01a01df180, 0x00007f01a01df298] +Event: 10.151 Thread 0x00007f01b00b3000 878 ! 3 java.util.zip.ZipFile$ZipFileInflaterInputStream::close (67 bytes) +Event: 10.152 Thread 0x00007f01b00b3000 nmethod 878 0x00007f0198dee790 code [0x00007f0198dee980, 0x00007f0198def090] +Event: 10.158 Thread 0x00007f01b00b3000 879 3 java.util.ArrayDeque::add (7 bytes) +Event: 10.159 Thread 0x00007f01b00b3000 nmethod 879 0x00007f0198def390 code [0x00007f0198def520, 0x00007f0198def680] +Event: 10.166 Thread 0x00007f01b00b3000 880 3 java.util.zip.ZipFile$InflaterCleanupAction::run (12 bytes) +Event: 10.167 Thread 0x00007f01b00b3000 nmethod 880 0x00007f0198def710 code [0x00007f0198def8a0, 0x00007f0198defa00] +Event: 10.167 Thread 0x00007f01b00b3000 881 ! 3 java.util.zip.Inflater::reset (64 bytes) +Event: 10.167 Thread 0x00007f01b00b3000 nmethod 881 0x00007f0198defb10 code [0x00007f0198defcc0, 0x00007f0198df00b0] +Event: 10.179 Thread 0x00007f01b00b1000 883 4 java.lang.Object:: (1 bytes) +Event: 10.180 Thread 0x00007f01b00b1000 nmethod 883 0x00007f01a01df710 code [0x00007f01a01df880, 0x00007f01a01df938] +Event: 10.185 Thread 0x00007f01b00b3000 884 3 sun.net.www.protocol.jar.Handler::checkNestedProtocol (18 bytes) +Event: 10.186 Thread 0x00007f01b00b3000 nmethod 884 0x00007f0198df0290 code [0x00007f0198df0440, 0x00007f0198df0620] + +GC Heap History (2 events): +Event: 5.704 GC heap before +{Heap before GC invocations=0 (full 0): + def new generation total 9792K, used 8704K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) + eden space 8704K, 100% used [0x00000000e0c00000, 0x00000000e1480000, 0x00000000e1480000) + from space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) + to space 1088K, 0% used [0x00000000e1590000, 0x00000000e1590000, 0x00000000e16a0000) + tenured generation total 21888K, used 0K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) + the space 21888K, 0% used [0x00000000eb2a0000, 0x00000000eb2a0000, 0x00000000eb2a0200, 0x00000000ec800000) + Metaspace used 3047K, capacity 5805K, committed 6016K, reserved 1056768K + class space used 361K, capacity 627K, committed 640K, reserved 1048576K +} +Event: 5.793 GC heap after +{Heap after GC invocations=1 (full 0): + def new generation total 9792K, used 1088K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) + eden space 8704K, 0% used [0x00000000e0c00000, 0x00000000e0c00000, 0x00000000e1480000) + from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) + to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) + tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) + the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea690, 0x00000000eb3ea800, 0x00000000ec800000) + Metaspace used 3047K, capacity 5805K, committed 6016K, reserved 1056768K + class space used 361K, capacity 627K, committed 640K, reserved 1048576K +} + +Deoptimization events (16 events): +Event: 0.632 Thread 0x00007f01b0028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f01a01a0598 relative=0x00000000000001d8 +Event: 0.632 Thread 0x00007f01b0028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f01a01a0598 method=java.lang.String.hashCode()I @ 42 c2 +Event: 0.632 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f01a01a0598 sp=0x00007f01b9241330 +Event: 0.632 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871de25 sp=0x00007f01b92412e8 mode 2 +Event: 2.512 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cb6484 sp=0x00007f01b9240b90 +Event: 2.513 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b9240008 mode 0 +Event: 2.799 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cc1322 sp=0x00007f01b92411c0 +Event: 2.799 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b9240648 mode 0 +Event: 3.948 Thread 0x00007f01b0028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f01a01a2068 relative=0x0000000000000068 +Event: 3.948 Thread 0x00007f01b0028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f01a01a2068 method=java.lang.String.isLatin1()Z @ 10 c2 +Event: 3.948 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f01a01a2068 sp=0x00007f01b92418d0 +Event: 3.948 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871de25 sp=0x00007f01b9241880 mode 2 +Event: 6.052 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cca4e8 sp=0x00007f01b9240f60 +Event: 6.052 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b92403d0 mode 0 +Event: 9.484 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cc64c5 sp=0x00007f01b923f9a0 +Event: 9.485 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b923ee20 mode 0 + +Classes unloaded (0 events): +No events + +Classes redefined (0 events): +No events + +Internal exceptions (17 events): +Event: 1.373 Thread 0x00007f01b0028800 Exception (0x00000000e0dc59d8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 3.603 Thread 0x00007f01b0028800 Exception (0x00000000e1209430) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 4.004 Thread 0x00007f01b0028800 Exception (0x00000000e12808b8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 4.253 Thread 0x00007f01b0028800 Exception (0x00000000e12d4648) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 4.809 Thread 0x00007f01b0028800 Exception (0x00000000e1346010) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 4.925 Thread 0x00007f01b0028800 Exception (0x00000000e137ad28) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 4.993 Thread 0x00007f01b0028800 Exception (0x00000000e139e938) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 5.012 Thread 0x00007f01b0028800 Exception (0x00000000e13a8b18) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 5.041 Thread 0x00007f01b0028800 Exception (0x00000000e13b69e8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] +Event: 5.141 Thread 0x00007f01b0028800 Exception (0x00000000e13ebf18) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 5.852 Thread 0x00007f01b0028800 Exception (0x00000000e0c24ce8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.079 Thread 0x00007f01b0028800 Exception (0x00000000e0c8faf8) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.396 Thread 0x00007f01b0028800 Exception (0x00000000e0cfcd80) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.442 Thread 0x00007f01b0028800 Exception (0x00000000e0d15098) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 6.449 Thread 0x00007f01b0028800 Exception (0x00000000e0d17a88) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] +Event: 8.061 Thread 0x00007f01b0028800 Exception (0x00000000e0f73890) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] +Event: 8.061 Thread 0x00007f01b0028800 Exception (0x00000000e0f76c98) +thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] + +Events (20 events): +Event: 10.009 loading class sun/security/provider/ByteArrayAccess +Event: 10.009 loading class sun/security/provider/ByteArrayAccess done +Event: 10.010 loading class java/io/DeleteOnExitHook +Event: 10.010 loading class java/io/DeleteOnExitHook done +Event: 10.010 loading class java/io/DeleteOnExitHook$1 +Event: 10.011 loading class java/io/DeleteOnExitHook$1 done +Event: 10.043 loading class java/io/FileOutputStream$1 +Event: 10.043 loading class java/io/FileOutputStream$1 done +Event: 10.046 Loaded shared library /root/.cache/JNA/temp/jna8092103267992246554.tmp +Event: 10.046 loading class java/nio/ShortBuffer +Event: 10.048 loading class java/nio/ShortBuffer done +Event: 10.051 loading class java/nio/FloatBuffer +Event: 10.051 loading class java/nio/FloatBuffer done +Event: 10.054 loading class java/nio/DoubleBuffer +Event: 10.057 loading class java/nio/DoubleBuffer done +Event: 10.132 Executing VM operation: HandshakeAllThreads +Event: 10.132 Executing VM operation: HandshakeAllThreads done +Event: 10.168 Loaded shared library /usr/java/openjdk-14/lib/libzip.so +Event: 10.207 Executing VM operation: HandshakeAllThreads +Event: 10.210 Executing VM operation: HandshakeAllThreads done + + +Dynamic libraries: +e0c00000-e16a0000 rw-p 00000000 00:00 0 +e16a0000-eb2a0000 ---p 00000000 00:00 0 +eb2a0000-ec800000 rw-p 00000000 00:00 0 +ec800000-100000000 ---p 00000000 00:00 0 +800000000-800003000 rwxp 00001000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +800003000-8003e4000 rw-p 00004000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +8003e4000-800b10000 r--p 003e5000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +800b10000-800b11000 rw-p 00b11000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa +800b11000-800bf1000 rw-p 00000000 00:00 0 +800bf1000-840b11000 ---p 00000000 00:00 0 +56394c07f000-56394c080000 r-xp 00000000 08:01 3160482 /usr/java/openjdk-14/bin/java +56394c081000-56394c082000 r--p 00001000 08:01 3160482 /usr/java/openjdk-14/bin/java +56394c082000-56394c083000 rw-p 00002000 08:01 3160482 /usr/java/openjdk-14/bin/java +56394c563000-56394c584000 rw-p 00000000 00:00 0 [heap] +7f017c000000-7f017c3ce000 rw-p 00000000 00:00 0 +7f017c3ce000-7f0180000000 ---p 00000000 00:00 0 +7f0180000000-7f01802f1000 rw-p 00000000 00:00 0 +7f01802f1000-7f0184000000 ---p 00000000 00:00 0 +7f0184000000-7f0184021000 rw-p 00000000 00:00 0 +7f0184021000-7f0188000000 ---p 00000000 00:00 0 +7f0188000000-7f0188021000 rw-p 00000000 00:00 0 +7f0188021000-7f018c000000 ---p 00000000 00:00 0 +7f018c000000-7f018c021000 rw-p 00000000 00:00 0 +7f018c021000-7f0190000000 ---p 00000000 00:00 0 +7f0190000000-7f0190021000 rw-p 00000000 00:00 0 +7f0190021000-7f0194000000 ---p 00000000 00:00 0 +7f0194000000-7f0194021000 rw-p 00000000 00:00 0 +7f0194021000-7f0198000000 ---p 00000000 00:00 0 +7f01986d5000-7f0198945000 rwxp 00000000 00:00 0 +7f0198945000-7f0198c64000 ---p 00000000 00:00 0 +7f0198c64000-7f0198ed4000 rwxp 00000000 00:00 0 +7f0198ed4000-7f01a019c000 ---p 00000000 00:00 0 +7f01a019c000-7f01a040c000 rwxp 00000000 00:00 0 +7f01a040c000-7f01a76d5000 ---p 00000000 00:00 0 +7f01a76d5000-7f01b0000000 r--s 00000000 08:01 3160985 /usr/java/openjdk-14/lib/modules +7f01b0000000-7f01b04f4000 rw-p 00000000 00:00 0 +7f01b04f4000-7f01b4000000 ---p 00000000 00:00 0 +7f01b45cb000-7f01b4a89000 rw-p 00000000 00:00 0 +7f01b4a89000-7f01b4aa1000 r-xp 00000000 08:01 3163771 /root/.cache/JNA/temp/jna8092103267992246554.tmp (deleted) +7f01b4aa1000-7f01b4ca1000 ---p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna8092103267992246554.tmp (deleted) +7f01b4ca1000-7f01b4ca2000 rw-p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna8092103267992246554.tmp (deleted) +7f01b4ca2000-7f01b4caf000 r-xp 00000000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so +7f01b4caf000-7f01b4cb1000 r--p 0000c000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so +7f01b4cb1000-7f01b4cb2000 rw-p 0000e000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so +7f01b4cb2000-7f01b4cb6000 ---p 00000000 00:00 0 +7f01b4cb6000-7f01b4db3000 rw-p 00000000 00:00 0 +7f01b4db3000-7f01b4db8000 r-xp 00000000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so +7f01b4db8000-7f01b4db9000 r--p 00004000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so +7f01b4db9000-7f01b4dba000 rw-p 00005000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so +7f01b4dba000-7f01b4dbe000 r-xp 00000000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so +7f01b4dbe000-7f01b4dbf000 r--p 00003000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so +7f01b4dbf000-7f01b4dc0000 rw-p 00004000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so +7f01b4dc0000-7f01b4dc4000 ---p 00000000 00:00 0 +7f01b4dc4000-7f01b4ec1000 rw-p 00000000 00:00 0 +7f01b4ec1000-7f01b4ed6000 r-xp 00000000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so +7f01b4ed6000-7f01b4ed7000 r--p 00014000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so +7f01b4ed7000-7f01b4ed8000 rw-p 00015000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so +7f01b4ed8000-7f01b4edc000 ---p 00000000 00:00 0 +7f01b4edc000-7f01b4fd9000 rw-p 00000000 00:00 0 +7f01b4fd9000-7f01b4fda000 ---p 00000000 00:00 0 +7f01b4fda000-7f01b50db000 rw-p 00000000 00:00 0 +7f01b50db000-7f01b50df000 ---p 00000000 00:00 0 +7f01b50df000-7f01b51dc000 rw-p 00000000 00:00 0 +7f01b51dc000-7f01b51e0000 ---p 00000000 00:00 0 +7f01b51e0000-7f01b52dd000 rw-p 00000000 00:00 0 +7f01b52dd000-7f01b52e1000 ---p 00000000 00:00 0 +7f01b52e1000-7f01b53de000 rw-p 00000000 00:00 0 +7f01b53de000-7f01b53e2000 ---p 00000000 00:00 0 +7f01b53e2000-7f01b54df000 rw-p 00000000 00:00 0 +7f01b54df000-7f01b54e3000 ---p 00000000 00:00 0 +7f01b54e3000-7f01b55e0000 rw-p 00000000 00:00 0 +7f01b55e0000-7f01b55e4000 ---p 00000000 00:00 0 +7f01b55e4000-7f01b56e1000 rw-p 00000000 00:00 0 +7f01b56e1000-7f01b5734000 r--p 00000000 08:01 3154692 /usr/lib/locale/C.utf8/LC_CTYPE +7f01b5734000-7f01b5dd5000 r--p 00000000 08:01 3154691 /usr/lib/locale/C.utf8/LC_COLLATE +7f01b5dd5000-7f01b5dd9000 ---p 00000000 00:00 0 +7f01b5dd9000-7f01b5ed6000 rw-p 00000000 00:00 0 +7f01b5ed6000-7f01b5eda000 ---p 00000000 00:00 0 +7f01b5eda000-7f01b5fd7000 rw-p 00000000 00:00 0 +7f01b5fd7000-7f01b5fd8000 ---p 00000000 00:00 0 +7f01b5fd8000-7f01b67f5000 rw-p 00000000 00:00 0 +7f01b67f5000-7f01b69b5000 ---p 00000000 00:00 0 +7f01b69b5000-7f01b69c0000 rw-p 00000000 00:00 0 +7f01b69c0000-7f01b6a5c000 ---p 00000000 00:00 0 +7f01b6a5c000-7f01b6a62000 rw-p 00000000 00:00 0 +7f01b6a62000-7f01b6aaf000 ---p 00000000 00:00 0 +7f01b6aaf000-7f01b6aba000 rw-p 00000000 00:00 0 +7f01b6aba000-7f01b6b56000 ---p 00000000 00:00 0 +7f01b6b56000-7f01b6b5c000 rw-p 00000000 00:00 0 +7f01b6b5c000-7f01b6c42000 ---p 00000000 00:00 0 +7f01b6c42000-7f01b6c47000 rw-p 00000000 00:00 0 +7f01b6c47000-7f01b6d2d000 ---p 00000000 00:00 0 +7f01b6d2d000-7f01b6d38000 r-xp 00000000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f01b6d38000-7f01b6f37000 ---p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f01b6f37000-7f01b6f38000 r--p 0000a000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f01b6f38000-7f01b6f39000 rw-p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so +7f01b6f39000-7f01b6f3f000 rw-p 00000000 00:00 0 +7f01b6f3f000-7f01b6f46000 r-xp 00000000 08:01 3155596 /usr/lib64/librt-2.28.so +7f01b6f46000-7f01b7146000 ---p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so +7f01b7146000-7f01b7147000 r--p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so +7f01b7147000-7f01b7148000 rw-p 00008000 08:01 3155596 /usr/lib64/librt-2.28.so +7f01b7148000-7f01b72c9000 r-xp 00000000 08:01 3155521 /usr/lib64/libm-2.28.so +7f01b72c9000-7f01b74c8000 ---p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so +7f01b74c8000-7f01b74c9000 r--p 00180000 08:01 3155521 /usr/lib64/libm-2.28.so +7f01b74c9000-7f01b74ca000 rw-p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so +7f01b74ca000-7f01b84d9000 r-xp 00000000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f01b84d9000-7f01b84da000 ---p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f01b84da000-7f01b857e000 r--p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f01b857e000-7f01b85b6000 rw-p 010b3000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so +7f01b85b6000-7f01b8637000 rw-p 00000000 00:00 0 +7f01b8637000-7f01b87f0000 r-xp 00000000 08:01 3155424 /usr/lib64/libc-2.28.so +7f01b87f0000-7f01b89ef000 ---p 001b9000 08:01 3155424 /usr/lib64/libc-2.28.so +7f01b89ef000-7f01b89f3000 r--p 001b8000 08:01 3155424 /usr/lib64/libc-2.28.so +7f01b89f3000-7f01b89f5000 rw-p 001bc000 08:01 3155424 /usr/lib64/libc-2.28.so +7f01b89f5000-7f01b89f9000 rw-p 00000000 00:00 0 +7f01b89f9000-7f01b89fc000 r-xp 00000000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f01b89fc000-7f01b8bfb000 ---p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f01b8bfb000-7f01b8bfc000 r--p 00002000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f01b8bfc000-7f01b8bfd000 rw-p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so +7f01b8bfd000-7f01b8c18000 r-xp 00000000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f01b8c18000-7f01b8e17000 ---p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f01b8e17000-7f01b8e18000 r--p 0001a000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f01b8e18000-7f01b8e19000 rw-p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so +7f01b8e19000-7f01b8e1d000 rw-p 00000000 00:00 0 +7f01b8e1d000-7f01b8e33000 r-xp 00000000 08:01 3155650 /usr/lib64/libz.so.1.2.11 +7f01b8e33000-7f01b9032000 ---p 00016000 08:01 3155650 /usr/lib64/libz.so.1.2.11 +7f01b9032000-7f01b9033000 r--p 00015000 08:01 3155650 /usr/lib64/libz.so.1.2.11 +7f01b9033000-7f01b9034000 rw-p 00000000 00:00 0 +7f01b9034000-7f01b905d000 r-xp 00000000 08:01 3155395 /usr/lib64/ld-2.28.so +7f01b9061000-7f01b9072000 r-xp 00000000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f01b9072000-7f01b9073000 ---p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f01b9073000-7f01b9074000 r--p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f01b9074000-7f01b9075000 rw-p 00012000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so +7f01b9075000-7f01b9076000 r--p 00000000 08:01 3154699 /usr/lib/locale/C.utf8/LC_NUMERIC +7f01b9076000-7f01b9077000 r--p 00000000 08:01 3154702 /usr/lib/locale/C.utf8/LC_TIME +7f01b9077000-7f01b9078000 r--p 00000000 08:01 3154697 /usr/lib/locale/C.utf8/LC_MONETARY +7f01b9078000-7f01b9079000 r--p 00000000 08:01 3154696 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES +7f01b9079000-7f01b907a000 r--p 00000000 08:01 3154700 /usr/lib/locale/C.utf8/LC_PAPER +7f01b907a000-7f01b907b000 r--p 00000000 08:01 3154698 /usr/lib/locale/C.utf8/LC_NAME +7f01b907b000-7f01b907c000 r--p 00000000 08:01 3154690 /usr/lib/locale/C.utf8/LC_ADDRESS +7f01b907c000-7f01b907d000 r--p 00000000 08:01 3154701 /usr/lib/locale/C.utf8/LC_TELEPHONE +7f01b907d000-7f01b907e000 r--p 00000000 08:01 3154694 /usr/lib/locale/C.utf8/LC_MEASUREMENT +7f01b907e000-7f01b9085000 r--s 00000000 08:01 3155357 /usr/lib64/gconv/gconv-modules.cache +7f01b9085000-7f01b9086000 r--p 00000000 08:01 3154693 /usr/lib/locale/C.utf8/LC_IDENTIFICATION +7f01b9086000-7f01b90a0000 r--p 00000000 08:01 3154703 /usr/lib/locale/locale-archive +7f01b90a0000-7f01b90e6000 rw-p 00000000 00:00 0 +7f01b90e6000-7f01b90ed000 ---p 00000000 00:00 0 +7f01b90ed000-7f01b90f4000 r-xp 00000000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so +7f01b90f4000-7f01b90f5000 r--p 00006000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so +7f01b90f5000-7f01b90f6000 rw-p 00007000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so +7f01b90f6000-7f01b911a000 r-xp 00000000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so +7f01b911a000-7f01b911b000 r--p 00023000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so +7f01b911b000-7f01b911d000 rw-p 00024000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so +7f01b911d000-7f01b9125000 rw-s 00000000 08:01 3163742 /tmp/hsperfdata_root/98 +7f01b9125000-7f01b9140000 r-xp 00000000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so +7f01b9140000-7f01b9142000 r--p 0001a000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so +7f01b9142000-7f01b9143000 rw-p 0001c000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so +7f01b9143000-7f01b9147000 ---p 00000000 00:00 0 +7f01b9147000-7f01b9246000 rw-p 00000000 00:00 0 +7f01b9246000-7f01b9254000 r-xp 00000000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f01b9254000-7f01b9255000 ---p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f01b9255000-7f01b9256000 r--p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f01b9256000-7f01b9257000 rw-p 0000f000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so +7f01b9257000-7f01b9259000 rw-p 00000000 00:00 0 +7f01b9259000-7f01b925a000 ---p 00000000 00:00 0 +7f01b925a000-7f01b925b000 r--p 00000000 00:00 0 +7f01b925b000-7f01b925c000 ---p 00000000 00:00 0 +7f01b925c000-7f01b925d000 r--p 00028000 08:01 3155395 /usr/lib64/ld-2.28.so +7f01b925d000-7f01b925e000 rw-p 00029000 08:01 3155395 /usr/lib64/ld-2.28.so +7f01b925e000-7f01b925f000 rw-p 00000000 00:00 0 +7fff92d75000-7fff92d96000 rw-p 00000000 00:00 0 [stack] +7fff92da2000-7fff92da5000 r--p 00000000 00:00 0 [vvar] +7fff92da5000-7fff92da7000 r-xp 00000000 00:00 0 [vdso] +ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] + + +VM Arguments: +java_command: /project/java-native/target/surefire/surefirebooter255261521587421006.jar /project/java-native/target/surefire 2020-10-01T00-29-55_633-jvmRun3 surefire15563279322398545368tmp surefire_13579138375161683305tmp +java_class_path (initial): /project/java-native/target/surefire/surefirebooter255261521587421006.jar +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 2 {product} {ergonomic} + size_t InitialHeapSize = 33554432 {product} {ergonomic} + size_t MaxHeapSize = 524288000 {product} {ergonomic} + size_t MaxNewSize = 174718976 {product} {ergonomic} + size_t MinHeapDeltaBytes = 196608 {product} {ergonomic} + size_t MinHeapSize = 8388608 {product} {ergonomic} + size_t NewSize = 11141120 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 5826188 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} + size_t OldSize = 22413312 {product} {ergonomic} + uintx ProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + size_t SoftMaxHeapSize = 524288000 {manageable} {ergonomic} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseSerialGC = true {product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=/usr/java/openjdk-14 +PATH=/usr/java/openjdk-14/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin + +Signal Handlers: +SIGSEGV: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGBUS: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGFPE: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGPIPE: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGXFSZ: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGILL: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGUSR2: [libjvm.so+0xb1bb30], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO +SIGHUP: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGINT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGTERM: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO +SIGQUIT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO + + +--------------- S Y S T E M --------------- + +OS:Oracle Linux Server release 8.2 +uname:Linux 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 +OS uptime: 0 days 14:09 hours +libc:glibc 2.28 NPTL 2.28 +rlimit: STACK 8192k, CORE infinity, NPROC infinity, NOFILE 1048576, AS infinity, DATA infinity, FSIZE infinity +load average:3.31 1.71 0.93 + +/proc/meminfo: +MemTotal: 2045412 kB +MemFree: 1093300 kB +MemAvailable: 1371360 kB +Buffers: 84560 kB +Cached: 472628 kB +SwapCached: 0 kB +Active: 588744 kB +Inactive: 294936 kB +Active(anon): 402104 kB +Inactive(anon): 198736 kB +Active(file): 186640 kB +Inactive(file): 96200 kB +Unevictable: 0 kB +Mlocked: 0 kB +SwapTotal: 1415172 kB +SwapFree: 1415172 kB +Dirty: 676 kB +Writeback: 0 kB +AnonPages: 326512 kB +Mapped: 116960 kB +Shmem: 290620 kB +Slab: 42612 kB +SReclaimable: 27604 kB +SUnreclaim: 15008 kB +KernelStack: 4640 kB +PageTables: 2556 kB +NFS_Unstable: 0 kB +Bounce: 0 kB +WritebackTmp: 0 kB +CommitLimit: 2437876 kB +Committed_AS: 1765096 kB +VmallocTotal: 34359738367 kB +VmallocUsed: 0 kB +VmallocChunk: 0 kB +HugePages_Total: 0 +HugePages_Free: 0 +HugePages_Rsvd: 0 +HugePages_Surp: 0 +Hugepagesize: 2048 kB +DirectMap4k: 44992 kB +DirectMap2M: 2052096 kB + + +/proc/sys/kernel/threads-max (system-wide limit on the number of threads): +15537 + + +/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): +65530 + + +/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): +32768 + + + +container (cgroup) information: +container_type: cgroupv1 +cpu_cpuset_cpus: 0 +cpu_memory_nodes: 0 +active_processor_count: 1 +cpu_quota: no quota +cpu_period: 100000 +cpu_shares: no shares +memory_limit_in_bytes: unlimited +memory_and_swap_limit_in_bytes: unlimited +memory_soft_limit_in_bytes: unlimited +memory_usage_in_bytes: 348696576 +memory_max_usage_in_bytes: 387022848 + +KVM virtualization detected +Steal ticks since vm start: 0 +Steal ticks percentage since vm start: 0.000 + +CPU:total 1 (initial active 1) (1 cores per cpu, 1 threads per core) family 6 model 69 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, lzcnt, tsc, tscinvbit +CPU Model and flags from /proc/cpuinfo: +model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase avx2 invpcid md_clear flush_l1d + +Memory: 4k page, physical 2045412k(1093300k free), swap 1415172k(1415172k free) + +vm_info: OpenJDK 64-Bit Server VM (14.0.2+12-46) for linux-amd64 JRE (14.0.2+12-46), built on Jul 8 2020 23:30:21 by "mach5one" with gcc 8.3.0 + +END. diff --git a/java-native/pom.xml b/java-native/pom.xml new file mode 100644 index 0000000000..29fc13b8d8 --- /dev/null +++ b/java-native/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + java-native + java-native + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + 5.6.0 + + + + + net.java.dev.jna + jna-platform + ${jna.version} + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + false + + + + + \ No newline at end of file diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp b/java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp rename to java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h b/java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h rename to java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp b/java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp rename to java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h b/java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h rename to java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h diff --git a/jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp b/java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp rename to java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp diff --git a/jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h b/java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h rename to java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h diff --git a/jni/src/main/cpp/generateNativeLib.bat b/java-native/src/main/cpp/generateNativeLib.bat similarity index 100% rename from jni/src/main/cpp/generateNativeLib.bat rename to java-native/src/main/cpp/generateNativeLib.bat diff --git a/jni/src/main/cpp/generateNativeLib.sh b/java-native/src/main/cpp/generateNativeLib.sh old mode 100755 new mode 100644 similarity index 100% rename from jni/src/main/cpp/generateNativeLib.sh rename to java-native/src/main/cpp/generateNativeLib.sh diff --git a/jni/src/main/cpp/generateNativeLibMac.sh b/java-native/src/main/cpp/generateNativeLibMac.sh old mode 100755 new mode 100644 similarity index 100% rename from jni/src/main/cpp/generateNativeLibMac.sh rename to java-native/src/main/cpp/generateNativeLibMac.sh diff --git a/java-native/src/main/java/com/baeldung/jna/CMath.java b/java-native/src/main/java/com/baeldung/jna/CMath.java new file mode 100644 index 0000000000..3ab5bdf48b --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/CMath.java @@ -0,0 +1,10 @@ +package com.baeldung.jna; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Platform; + +public interface CMath extends Library { + CMath INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", CMath.class); + double cosh(double value); +} diff --git a/java-native/src/main/java/com/baeldung/jna/Main.java b/java-native/src/main/java/com/baeldung/jna/Main.java new file mode 100644 index 0000000000..a81c878cde --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/Main.java @@ -0,0 +1,8 @@ +package com.baeldung.jna; + +public class Main { + + public static void main(String[] args) { + + } +} \ No newline at end of file diff --git a/java-native/src/main/java/com/baeldung/jna/NativeFS.java b/java-native/src/main/java/com/baeldung/jna/NativeFS.java new file mode 100644 index 0000000000..58f2bda035 --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/NativeFS.java @@ -0,0 +1,46 @@ +package com.baeldung.jna; + +import java.util.Collections; +import java.util.Map; + +import com.sun.jna.FunctionMapper; +import com.sun.jna.LastErrorException; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.NativeLong; +import com.sun.jna.Platform; +import com.sun.jna.Structure; +import com.sun.jna.Structure.FieldOrder; + +public interface NativeFS extends Library { + + FunctionMapper mapper = (library,method) -> { + if (Platform.isWindows()) { + return "_" + method.getName(); + } + else { + return "__x" + method.getName(); // On Linux, stat is actually _xstat + } + }; + + public NativeFS INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", + NativeFS.class, + Collections.singletonMap(Library.OPTION_FUNCTION_MAPPER, mapper)); + + int stat(String path, Stat stat) throws LastErrorException; + + @FieldOrder({"st_dev","st_ino","st_mode","st_nlink","st_uid","st_gid","st_rdev","st_size","st_atime","st_mtime","st_ctime"}) + public class Stat extends Structure { + public int st_dev; + public int st_ino; + public short st_mode; + public short st_nlink; + public short st_uid; + public short st_gid; + public int st_rdev; + public NativeLong st_size; + public NativeLong st_atime; + public NativeLong st_mtime; + public NativeLong st_ctime; + } +} diff --git a/java-native/src/main/java/com/baeldung/jna/StdC.java b/java-native/src/main/java/com/baeldung/jna/StdC.java new file mode 100644 index 0000000000..1adbe684c4 --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/StdC.java @@ -0,0 +1,17 @@ +package com.baeldung.jna; + +import com.sun.jna.LastErrorException; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Platform; +import com.sun.jna.Pointer; + +public interface StdC extends Library { + StdC INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", StdC.class ); + Pointer malloc(long n); + void free(Pointer p); + Pointer memset(Pointer p, int c, long n); + int open(String path, int flags) throws LastErrorException; + int close(int fd) throws LastErrorException; +} + diff --git a/jni/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java b/java-native/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java rename to java-native/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java diff --git a/jni/src/main/java/com/baeldung/jni/ExampleParametersJNI.java b/java-native/src/main/java/com/baeldung/jni/ExampleParametersJNI.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/ExampleParametersJNI.java rename to java-native/src/main/java/com/baeldung/jni/ExampleParametersJNI.java diff --git a/jni/src/main/java/com/baeldung/jni/HelloWorldJNI.java b/java-native/src/main/java/com/baeldung/jni/HelloWorldJNI.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/HelloWorldJNI.java rename to java-native/src/main/java/com/baeldung/jni/HelloWorldJNI.java diff --git a/jni/src/main/java/com/baeldung/jni/UserData.java b/java-native/src/main/java/com/baeldung/jni/UserData.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/UserData.java rename to java-native/src/main/java/com/baeldung/jni/UserData.java diff --git a/jni/src/main/resources/logback.xml b/java-native/src/main/resources/logback.xml similarity index 100% rename from jni/src/main/resources/logback.xml rename to java-native/src/main/resources/logback.xml diff --git a/java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java b/java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java new file mode 100644 index 0000000000..a9cc6ed1c4 --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.jna; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +import com.sun.jna.Native; +import com.sun.jna.Platform; + +class CMathUnitTest { + @Test + void whenCallNative_thenSuccess() { + CMath lib = Native.load(Platform.isWindows() ? "msvcrt" : "c", CMath.class); + double result = lib.cosh(0); + assertEquals(1.0,result); + } + +} diff --git a/java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java b/java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java new file mode 100644 index 0000000000..d296f9e2ca --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java @@ -0,0 +1,38 @@ +package com.baeldung.jna; + +import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.junit.jupiter.api.Test; + +import com.baeldung.jna.NativeFS.Stat; +import com.sun.jna.LastErrorException; +import com.sun.jna.Platform; + +public class NativeFSUnitTest { + + + @Test + public void whenCallNative_thenSuccess() throws IOException { + NativeFS lib = NativeFS.INSTANCE; + + File f = Files.createTempFile("junit", ".bin").toFile(); + f.deleteOnExit(); + Stat stat = new Stat(); + try { + if (Platform.isWindows()) { + int rc = lib.stat(f.getAbsolutePath(), stat); + assertEquals(0, rc); + assertEquals(0,stat.st_size.longValue()); + } + } + catch(LastErrorException error) { + fail("stat failed: error code=" + error.getErrorCode()); + } + + } +} diff --git a/java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java b/java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java new file mode 100644 index 0000000000..c536fd63d5 --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.jna; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.BeforeClass; +import org.junit.jupiter.api.Test; + +import com.sun.jna.Native; +import com.sun.jna.Platform; +import com.sun.jna.Pointer; + +class StdCUnitTest { + + @BeforeClass + public static void setupProtectedMode() { + Native.setProtected(true); + } + + @Test + public void whenMalloc_thenSuccess() { + StdC lib = StdC.INSTANCE; + Pointer p = lib.malloc(1024); + p.setMemory(0l, 1024l, (byte) 0); + lib.free(p); + } + + @Test + public void whenAccessViolation_thenShouldThrowError() { + // Running this test on Linux requires additional setup using libjsig.so + // Details here: http://java-native-access.github.io/jna/5.6.0/javadoc/overview-summary.html#crash-protection + // IMPORTANT NOTICE: Code for illustration purposes only. DON'T DO THIS IN YOUR OWN CODE + if ( Platform.isWindows()) { + Error e = null; + Pointer p = new Pointer(0l); + + try { + p.setMemory(0, 100*1024, (byte) 0); + } + catch(Error err) { + e = err; + } + + assertNotNull(e, "Should throw Error"); + } + } + +} diff --git a/jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java b/java-native/src/test/java/com/baeldung/jni/JNINativeManualTest.java similarity index 100% rename from jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java rename to java-native/src/test/java/com/baeldung/jni/JNINativeManualTest.java diff --git a/jni/native/linux_x86_64/libnative.so b/jni/native/linux_x86_64/libnative.so deleted file mode 100755 index 213491e2688a87bdecd1fea411e578149f8e3f32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19856 zcmeHPe|%h3mA{iTZD>Oipe?0E7_fzg$~4m^ZD_ZWHkt5Jk`nSmBT!!_Gm~UOG81Rs zl(bq6hOmTe+Afvf)8NW(q2~8zDz_o@y$Qj7_pU zr*>(i20&6!R)^PZ5$M!h*KKcQ8(x|}G=0_6PrkY3&-1!mOJ90ppX*AJI}g{zxJb=B zTzAZ=>Yh`0|2gx|ec*=^x3~%^?|rx~!R5wvIj$ABD6ParN=gYqS}g$orS9$(D>@aJbRnUt`L zSfSS~IR!Y*?JQzPFBJHI%$<__B{u#Lx4(#WFBObo)SuEN(w-`54~=6=&r169G$9~u z5`aC;^)Jn`=N;J&B{n_xK<<3hcPBLn(mMjMJm{fzSSZ^^lk_goiT^vx1>r}M9+CDu zBK7}H(#O#bq-U*c{|ZU3ka~_wI{6KyUr0M&p#g{_A1CZVseiw$uj-cscu4;fvYl1? zFkSELjYjmi;g1=*&h&63Y%sk8fa!HD4SFyX3w4I$MkvVnC%gxY+ji+qQbTo*KOPUonSRsu4coTY`69b?@7nF5+nSA7IMUhLQtNBHKESs5 zclq@|v{!HUhkAmENT=Q%3F}&@rziU1Xsjm)Nj>i0%?YHc*s{OKkB0-O87Z#|G#g%TpvxcAjhH`d#3924NfM+N_hV?bkaN>R5{k-d1PYjH1a}Be#VkL3DUL(Tlz(w+h^<2fA+6 zJN)4ua<=|{y)P7tN69^m-TJOF-snbUI2uQX$3x|HaKKD&TIr$??qGf+)K8vja-|K| zg^aW-RimrXB$ax%aDc`x2gmaD`+NI(LXG~Izc&Ook8}S@^wvd;P$y8{GwA*7&d=2= zffn?7g-(7<&P3f3KCObKW4A;b(0k+!Etp*bH?(($0*0?~gWesW zsfuh*PgLdbF2NvGz_p@Wz{2JQTSLg`iU#XyGMeBIa(+qcTVL((=@AMAKX+E4vC&(m zcf%XGmOU2zWzb(6#>99M_2tdVT+VG)evRJUAv835c?+j)BB7dS0u%f!Lc!VnSyYLS zq5!5sBh(rX#ZFnI50kY)5;cCq&w9e`aU&R5z1kCxde##fNZ)k^FkcboWqK$`+`8T# zkBcW6NRc4BuDV)Z=P6^?)z@vU*4KK<(|2n<6|B0gZOhg=-RoH=$Zc(4F88eUno<66 zAG&XJGz6g;T;9lfg%R)C9g=%U}b_??H#b;^HK262CzuSpnl18=-y_X2vu`8jBm zT+sY=nNQE|Md9$d3}ydH(h|$U=g=GCYia&`_9dA|@-KYjR;&!>vUeoyW7A(iMe^BP zyhN2C-zfboUN!UBVtT1UQtz?q{j*H2dk)C=RYm`@Tu+SK=oicN%7l&nj9jlw+UO_b z`}%a5o0qTjD|~#7pi}j*1Wcz16CF#Ubec5Ll`hJhGSSgs>2$b9)J6(g zFLpC+Xxu1Bz6=l61`ifKC6vxod>UCZEAPN>@ugL`BfN_;Q%7cyR_-C3+&(qQ@fhLc zqN#C?cN0!SI`t^W+X<(koEqc!O@x!{ruK2XiEwhw)Bwk~5l$|d>f`uU!fD8-c5-|p z;WX4!jT~P~IJs)7isM%iPA-}%<;S<{TlhoQT}eI zqspX6<;>&`?jLmDj6u+*4exze8%~S`wUIe1S5eJ|eM#@QHtKs)8$O)818t{`wmu0Q zw2EipfJENG$%5q!>tv+)Nz9KLDkaQx0jvFC`D9Sq~?V(mgTwQ2tLz zWdFNFc}nOyoUG#vQ`$&FGN`R9;>H=9j+F}*Ze53Df$%&0HZ5F~$szlaA0T}2VB5_* zo}#Lw<|V^>-yKd&5AJ=}l~{ZG-szbcG=C}j^={aktS4JW7x$9wqZPLi7%AAWRMbsJ z=Dr_tMgK}-Ptr7y{4#aVQ~Q*9G%S27aRL>b)Iow+JMrEoafLWGm}CK%yBFJ z;nw5B4M`Nb8-pK(zCzuK3cmdgZ?6&GakMkq@^1+rtuTlS*)OZ?q{#lbz@gwPTmhG< zh2c=31tv#)No~L8lI1sRw;#WY_x;|xVDo@B{JDPAW_aSRAp_9v8zZBXi;CU#1cXpL z>T)<)%Dd0EA4bvY4JBVGO}|#zf=prE)rwNEAY%>vk+O?%Kkz*&oEeKbakPTg ziInF?LB}qT#QP+10hLZ(IMNCW8lZ$5_3GP_47q+)s1KFo9(M)hW<2gC!ORW#H=bql zzO~0zo7f))%P|aiayl;a1u28FdQevK+l1eKkXrT>{O$s@MDizpB6}DAVTqgkj#1-` z6g;^Y07`#@%#-<@TltYT+?vezp2mHTDCCh1@V|do&PUTgC8Va%^OKO8$m;IaNhm@# zZ?h(<)JW@uiF7UOI<|}&g0me?euio>42i?Z0B47^Wf&JE?2#c-w;)li!WwCFfm z^Z-P0`GE5#{4Zhg6iUGb^60r23VT*cdv*v8S=9z9OdfrJMqF}~%HwtB_Dq<^;r(0| zPFe9wEI;5rV;2bbIlzVflj`(!eoM3S2+!oR!zvP_iDB@dmgyG9c`~>N{h zxU^wkacS#Vap{gni%Ub}#ihNI#ifZO#ie^sn1w-gmPJXDT5da=UX zgC-oR1geb=H4+#eq7|SvGQ^GHkDjGu-RLNZYa_y}5n<#AH+cpFe`uAE65w-GB%ZsA z#B;YGdGrr6GucloKFe6z=>*omj_qW6&Sgthad)-1FdRtrep%XAFt^bRVd|a%F1**& zJv7PfouW~SVT{=hieMS7`!maY#&_G@9kFPyyL$C%_hpx%Nhtx@=x*r>xg&|*cI=kA zW1&DOyekxR`(q*ZMmKZ&BSCkDO>D+yxWaMpG{imliQxy^{%h2>{~B!juSstO)pz4q zU`>xd(z!T}ktTvqxbB#*M-e&VM*=6rQ3=Z+*UZiu3fh2 zs&y+aCwbzj!PSkr^L>ad3rp_It3G$`txzQM0hnt~V?8fn-n~P`ZnoT94wW_e=FH4H zfOF^|S?TZ%=I8xBqvvbL|9gy*I>0nfUJYj;JD#Bn`SjA0&Tq`f9|w6O+P=b^-@8g_-Y$W|_QBOKMob!H@o!Vf2{w=OF-<#l@hjNAh=Ui&yqxuMSyxl$l zJ=eo0oa*yM zWc2?9^4pRBJ9B7l`J2r0yE6K}i2M%ZYv%mC>a_mvBA=d* z&sy>)cs}*l&yfFPli!g!g>&Nx7NhiH(g!~%arTFZ{)GN^9peP`8;I5NI&2yS_|kasAqn_ zv*~OLoNa-#EpWC4&bGkW7C74iXIntDfI3H3=f>)sSe*;2b70k8SlaSLXW5h#PJ5hY zoX*ZE6$z03o>rY1w#o1F)LEE1-(D{H-4ZU7P@PZHx{?yT15x_Jdoxjj^xj8FE%mD8 zp{O*2J&ZLgC3Plxnao#bp|m+cNxr^ef$iqF6k}uZM!nZbasHl4jN^2|grw+g#R6A$ z@)I|Z=-`WzDi5!W-2MqV!9v331;>>gCnVl3^YJRn^Hsfs)c>Df_1(PPqR-32)`ukg zmV}2S{HcV$mhdeJ=gJ0OBHl3w@09TK5eK^@a6op-&^T(m>M5edI3{@W~I+%%0I32 zc})4am0p-04_12iclDH?k5M@w``gODfHlhYwbJq3Z%%slchN%sLe?ec8>^n;bR342 zUcw45GgHKUKE7nHrx##b%Ey<*YW^~3<+BTznzyX--nH$cx-uLn8*MeH1}8+V!K z+T*w<`){TVNhH3P0r)B|qO0eosvdp+Kb!vf4*Fk^4??AX3G|SD^*mPkKY9}V3mo(h z$_J;?e}mMop7TmS$T{sFLWT=prfD|+zlYPa{Q+un>iIj)kEfrsQ#~KC%Y&3X9-rg< z*?#`2)MJldpn1@h!~g%x>Dl9JE}rX`qn+*F;jfT%dmO=sCH;~2k-d!ZJvzY8fPOxw zSbrV_-EAdt>~RPB1lN;2k3Hw0{|(T|etUex5-cEc+0*GjzukfU5a_w=|A7Plyg9kc zy%BV>(;m+)0 zG|lxFF?-y{`BbgBdwj|xpi}$U<4~TLbbFl6 zpB(gSSm5Tee;=o3#|<3@oyxVx(Y)cHXA35TT>9y2*bx}K^^z8M_mmK(6AZEmkL`R1Qfe8Ax>L$IuuDJyPKACtP-RRW=6w!n4 z-1T5o@9c@gc9&FAo_p5Vk{H57=#Tx{A* z!5Yr-9H$>pV~QrR6iAT*6l>~1N>X`}onLU=r66a{`{L>0y%*`yP zqRfnoI5T>RA#k~h^ZmJHU}G8i$B%6m?DGB zQ_3j^H_aN0^*@MxwA4nq{h5VjT2##*|1?|dVa6Lz7T(BboYRf@!!*hR?JU;Had7%m zCA6tn+H8d~NDKa>0(LDt^fbr{4y~#(MQQyXgyC8&qGp)Yp>6$U3Ei|r!a}VKMU(N> zXEI%h@XRa=nJ2!x*YLLk8ZiO8)LkTMggl**gr_|b?g?HU4l<5)`Qu&86Wkqvq<}_D zd5FL53P>-Jkb^SwK@{xo4F@0>HK;&PDBjP5a6jh3Dzz6Y&+H}h z8Bu8e2(Jp*3lT}}e=4{_(iOn#p(W8i6Fx19DtWa}s^9_1jn`S8@OofLmB8qXK*_6f z1O@3sTuKCpN6D-G{VLE%w~|-;t_rGi2(a*kZ3;`$fYF(Nl2`k)X(+js{fbY)R^-ze zgTmE5u7dldJlRh=l>L&-g1Aw2BbwUpRZyL4sPdJ(s((bvZzW+Qbxxw-m^6&!X^YJ+ z-wztK30_BeQva7lLHo`n*=kO4AZB^B&#d62t-(vAu!5ho$*cWn1r?tvQ`xWZzqHA# z{ZR$q!uz5*+4YUuG zosRO9yxPy7Ghx$qK7>SLG`|`n0Wl zb&fE;1{p|I{5SKXEXLTS;S1PGjnp5-t!M8G|kPU*tHUGS%~xnXh{Lt+pV7!QF#OrxN7dg&!rE#WeWLZ?AP0}&A5)6`5w7-A*R zsK57izxyZIv5lFwGy2BgzJ0rI-@bkO_U(RePk!OeU%jY<)ss4J>R1I@+q4SY~GeN_oXcmcm0XU^$*FcR%<>o}mwi}@W}D=WUQ z>K$C6b9n1|tmBhy9W8oW$No+b74zG(PPROy7!ZCj`N&RcFcw{}+qQd~YDB=Xj|x>* zgp-|+?a@n*t{>>kGm{JQ^Ds3M@N?Qy5zXf+%BV-zJHmS8NPBZ;OIK%Ir{f@{{StyYc5)~MfM=%EsD zwZcg+3(tZE7BsM+fdvgLXkbAD3mRC^!2drDG-<}qwf=KenpyUu2S;FQ>8|$x7`?V; z#3nUkR5PBpxBey9bYXa!;hoWphH1_0otbT#20Eejk5uhF?S4-mjb8EdfCK1aOsAOy zy&xv8;24{({rC8)0%OXX-=>)}M(xj`EUVe`QXC?{*vN1_(r{ru z2SKQ&ip)4`vLC^xrM-hV8}UIj%vr5P=miWn{SB^z?Z#zpXaEIl!70kYh~r-boT?=; z3+#AnRuI!WX2Q6QcoLL`^$^jogyl)Qwi3YYC-D``roG5%cAOczpBdB46phq4&a2mq zvtAN}B+e#MpFx#orpd~V#|f$9COpk($yzp9%RVzsTDGOp$9s@>Y>BYErnv zsYa!&cmz&sDI0#~xtUQ)m4n6|@7?W&QOyViI+UF`t#1`0v?SpLKEtD96s4pE6_q-q!pRT01%CNRq3 z5MZ)PDS(lxrMmt%U=x1|wZaQXQQ{RSpZZ7G0*Xiw^v%+(hWCk&a{)^R>=gH+KulLHEIlNgpojjM3Q_wXJb#>^^os@wMW^)S1P$2~HkjILaG^ z)V3^vDrHaXF%7lPNdGws>!NWuESMpk5k^_Tva&$eyAY?6M%SNaJ-8n}k14BueHacz z7|%hR0g}q(+PdS?B8&#O-rm8wg!fz6IOrTOSa%$Gqk*>kF_e#@9QlR`)J>pl5^xgG z2DIyqH+*zzF|01|wjYKK!12OEr3rUG(==+AQ<>BEkhBiD`I%}Dv}#EWrUZuC3ey_v zChg}s35@g}i4kx=y`+EA)jtFOJ=97AGpv2o=P`;v!vF|@|4Bgn1jJ7QCIL?X;;pX$ z{T`4^QS>lN9^c0uSPTrc*GhmP$~p%9&$_^%N0u;fwqD5=9Em$QK=OVV9b2rKlA@-j z$*Qn68Ca9j#<(zRV_avZxQ=bii2F%kntSD4xB#|Cyxqr!Xe6*b$$E^yD0_HF3H`>o z#I!Q9eu9BDPC)J5qr{q&p;%}%0xO;%fI|rZ!(vQsnHMz1(fBbClL=2zfR&x(36vPt zqr}8YlO@^$S4C61P%p`mf%vlO=N07WiAg+T#Onav$8f}y<2JdV-*(~9#WjuSY3hDT z_?)#HISgVNbr5@o0DGMb<+2{&ht!>NSBfg@0S2UQPB2I%rHZ&PJ3Cxw%DMs%(96S! z_fTh+)hapl5E$hRMNWp?TFq3KtWPjV^${@n0H9?(fWv|q8u5LSQ#k-S%8me=5K5-% zQRLW$EgS5S4g9$VTw-c)w3bGdrbU&Sfsz9E4UCxLv`pL1-qTpsG>P^&PJe1QyNz&? z!*BPwA&s%ORE@(~VWZy&f`E4lVCyWT#`5oPTr$+D-A zB?%6N@GM&C6R6azA(|Px9rSVqT5&E{w!u3Qb|b@!od~bt#V&-GHwgYtK82m>6m}>a zvl|B8PcQ5LsjL4@3@6=1>@i+|?CwSg+D?LY5^b;<u?O4@}Ptr z{xGVgwqdoT3foQfhLvq$qG*M^b2auA%sKOqiG*b+WR6=45 z47J;+jU{!0>WuU$1}6t3C1WOkdE%^2iozL)Gy|RzON}u$#K0Julo$aV{-+5uhGt|T z0iTg7C%ZS&Ra|%8cpi)^x#lcp+Jl_^?Q3|lsFaF$oun8zM^|}*HBwcwj)B34+|l?A zC?i|xPg5@E5>@~+Eh@`*352stpbWbNn2A)L3|+vOd7Z$B3yeB%-NaWw((HmEzk|}k1ROE7j&|x@laiEW9-*jm~XolNBG-?W^_z9TlRseeueZU)Wjf<4*^4rmr zpde&Klo%=+GcYc8?sfP7#Dy;|G${x3><9_L2on%B0ktFn;bsaByaFW7fmf1Wl>;xa zg%TLBKZ^|jmCBGu46G>ESq!d=VvtPmIuw3@$P%HCFX$+X&{vN6^SUS%! zm0V7)*LhVTxK<6b%DJ6dv^1>S^4gyu_VV*lGW-lN#QsP$M@MK$f6VbaW}4dDzk-8M z9_Ab!ao&AidYHm^VgET#*1xcOL{#gaYuL9qQQ7kv1vkAmI};Cm%;&{l`_I*CR@q~; zuJYW}Ywl&_*D20>#vUMU6bvRDXB%6m0&DrFsFAhw2)D&4#;LwlR!3!ZOjg5+RqJ<2 zb{SQGc1@@xC-|)WKB|+1RGxXwUE!UymvAY1=pU)&!&`y;bI1Qc75GhKJm6V8_~Q8U zy!xA<{o#Tviu70L-x0Hh(L+y&j(&EUJT*ti=~ERNHR$v81rPu#}yz_+e^r=S(|Q`tuppu6nm>Pb+lWx(WE#=V-ut?t$QY2aS{%}MwW_v){XGdP)HkQ!uQ4KPqA>vRGb z4&i+aI0TDLr3)DLUv`DY&^~H#tOdh%S8_A=YQAM~S1MkXA3KM;Qgy&5ad)Na^&}mS z-IYp|P@lU}3D=%OL1i2Dmv--5h z5g*Luo_utKCU5U)``=KQoLzYzTF$QgYfeAT={`=IIc?!|Kc}sn9^^F4X$PlWoOW{> z<@7M8J)GXpDakjx@^3lqE}6p zg3~W>N_)rb$}e;J6{J4v-R+Bn*w#3^axY-A6$2Mjzra+sRsf%RnR2Ts_kGIMP;QKJ z2t|vjXDC-kxu+=CM!Bz3?itDrP_6!93G z%C%6A!pl?lQSMrJizzbc);lP72jzm4yNz;xN4fQsJ3~1##MU2E?ncVZP>#-wvycCi zDBTFjgpU$>C{vI3Bq3kJi_KA_@w&c+j_Ctj*w_gDHAZqxz9@RufN*6aG zSuM+j*g*|}FasZuRZa~g?{(oNJU8CAz?L7%P{TB_{2mhGpTyC}H34Kyj+1_)NYCu! z)1s6OV#ukWOafKoRIpr0{$b)y`v)=Ong)e@3D9*flB|3WRvA^fCfXNP8unRX&N!+PV zg6TNmvakxlxPb<`?2K!c-ar3CvFUP}uP&!l5bYCQ~ixHxNN=M>-974(qu@YE{k zhs^vy7xY}K;0+4is9>dn>lM6B!8;W6D|nxRq+fbk6yBj=kAhv82YN`~^gO7_A5!o! z1)o=PPbm0P1!b#+bU_0P8d%W4f(8~eu%Lkj4J>G2K?4gKSkSC}zbc3!} zZwz+EqF&KAL9se|T*%9J3^n<~0AQJKK3^s1iAykd*B1>Jp4e_JkUCjqW z!Dx=0ySr~!jtV>*LebXF`Ir`QT)!*yNf`=i+I@!?9Tzj(2xhXw?IfDlU!x!FWC7+- zHin{gow4R{hzFEM>EEIs+%E^&GG8mn|01m#tM%e`o3{tTVcAfQHNU^=D*a%)(!l-2 zEpNeyvP0h98t9gTl94rkYZ3XDJ75cH=vnPZi>R&+qO~6F4zxuhnELAK&>{RU1NdJM zU<%&0Hqlp+Zz9Fy8$zA?y@yqI^K;xB4s{%ew&u-?q+7pH*Slg-7;vCF5R8Vp^+@PY zEQB~-eQ;N!Ufh${>%E7HH#7$#Z9%;gLk$Jm>v!wBt8}lo@fO{`vvH%|F8ciW@`fYz zm(DA=n>cL-r=aM=TFR}PuJHUaf%g_nVP`N9?d*p3@KAT_rHpbmq=>t#!TX+_jax|0 z&9DS^B!{YKB{#|c+u@#2B!>8AQXERS#F6+A4Wn^tdy4Kwy2I93O(4_5oyDosdvNec6WYKYUsrL?KcI(p+L9yAoV{eNgAVD z;Kth9@Sk;rc+m}WxgP8Z=*^)6Z5=xNL=esycAl$&spiVZN{Y7j{eiYHH5jLg_E0-S zCUk;O_!szAptvB=MVTnM6E`CmMLPy1uTOMbpXlOd?Ej)cl<>{XM?1U2E!esBNZ<$; z2+i9QXzvP##8*m7#lVfY1(8ldG&{So_*JP`bj7apm6AV_tADkmc#{xQC0E~7KU!A0 zX!=G`x@i0++~DMIXQ|RT+vVp=)t30hQZ)DgS`E}7$<#oter$Bu(Q%w&{fjfDa_?tU z;P$vA)?VKc4IKc5_*to%pWU4eAz@=`#=%HTZULieacoi1p8i~!Sp0T}f=9~co|HaU zRxL)$E_Q-Dws@m37GK6u<iRZX#XQh5s0dZ|V3>FTSKy zWbPzF9|-3^8_t$p>@@fY`pfu;LjySA04Kh=_`(Oi<4Z)zC7soNxA+ncf_>iPtn~{ zj%#RFAKxcZQLn=3K9QbZE4)J8vt5JR?|0x@neHCxd6&ZJ4w9Y^DV**i>G>;#)14$e zcPpIkCh4L3PdBc4Yt_BrW`z%^d%<>v)4e7=U&BlEeudNhJK=OsO3!u3yD=W;{&ADS zoqNc874Fq^Q)Sq*YA6EE)holkWb56aw-+W5p z&i&;p3U}@?F{jMWxzAjsaOWQKGYWU^9nUJ;wu>M*NX7( z6yax!@c$^ne=YH>eoL`F^7Z}BBK*c8d{q%nKUZCf7k?fi$b{*-8Q1Uve^4Uu_c7uI zytEYQr#aXt1^sap{-&1y|0(*v!8~|x!uwvl@56gD-j#S);e9{eO1!J_(w}(K5~XEG zOOO6+mX^>uyj6Is@ovDo2`{Zd`l$h3QLo2KKd-q3FP_@}tMYn;KL1%n9X0ayy}YgA zlG_ySAQx{|wCUz=s+ZL;Z)?6ly9*qz=qu7WNL@5kQb2ftC`lpB#dgI4%DMY~LG?xA zBZYLA79E+>=92c?f>xJt+$d=Gc1NIm;-V82RjIGzw~L8fm{cA9E=-Vre9Te(kq*eY z4zBp{o?~(K57xzz59;d@LLPZ!*{``=tRp9IQ5a_4FX^`na$GHLh;IDBtn$Mee>k&T zJmU}L#UI*vOfDyaakQI#e - - 4.0.0 - jni - jni - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index 065d6abbdd..bd73fcbf5e 100644 --- a/pom.xml +++ b/pom.xml @@ -465,7 +465,7 @@ jjwt jmeter jmh - jni + java-native jooby jsf json @@ -1502,4 +1502,4 @@ 1.4.197 - \ No newline at end of file + From 0e9ec5c2da96c35911ccbe2213d7b42255c82a0c Mon Sep 17 00:00:00 2001 From: Philippe Date: Wed, 30 Sep 2020 21:57:08 -0300 Subject: [PATCH 165/260] [BAEL-4203] JNA --- apache-bookkeeper/data/zk/myid | 1 - java-native/core | 0 java-native/hs_err_pid100.log | 793 --------------------------------- java-native/hs_err_pid98.log | 789 -------------------------------- 4 files changed, 1583 deletions(-) delete mode 100644 apache-bookkeeper/data/zk/myid delete mode 100644 java-native/core delete mode 100644 java-native/hs_err_pid100.log delete mode 100644 java-native/hs_err_pid98.log diff --git a/apache-bookkeeper/data/zk/myid b/apache-bookkeeper/data/zk/myid deleted file mode 100644 index d00491fd7e..0000000000 --- a/apache-bookkeeper/data/zk/myid +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/java-native/core b/java-native/core deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/java-native/hs_err_pid100.log b/java-native/hs_err_pid100.log deleted file mode 100644 index c05a3fad99..0000000000 --- a/java-native/hs_err_pid100.log +++ /dev/null @@ -1,793 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGSEGV (0xb) at pc=0x00007f7ecd45c090, pid=100, tid=115 -# -# JRE version: OpenJDK Runtime Environment (14.0.2+12) (build 14.0.2+12-46) -# Java VM: OpenJDK 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, serial gc, linux-amd64) -# Problematic frame: -# C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 -# -# Core dump will be written. Default location: /project/java-native/core -# -# If you would like to submit a bug report, please visit: -# https://bugreport.java.com/bugreport/crash.jsp -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- S U M M A R Y ------------ - -Command Line: /project/java-native/target/surefire/surefirebooter15072611568838389395.jar /project/java-native/target/surefire 2020-10-01T00-09-53_430-jvmRun2 surefire3272641396836511080tmp surefire_29468511371192344687tmp - -Host: Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz, 1 cores, 1G, Oracle Linux Server release 8.2 -Time: Thu Oct 1 00:10:23 2020 UTC elapsed time: 13 seconds (0d 0h 0m 13s) - ---------------- T H R E A D --------------- - -Current thread (0x00007f7ec4028800): JavaThread "main" [_thread_in_native, id=115, stack(0x00007f7ecde0a000,0x00007f7ecdf0b000)] - -Stack: [0x00007f7ecde0a000,0x00007f7ecdf0b000], sp=0x00007f7ecdf07788, free space=1013k -Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 -j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 -j com.sun.jna.Pointer.setMemory(JJB)V+9 -j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 -v ~StubRoutines::call_stub -V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb -V [libjvm.so+0xbb0efb] invoke(InstanceKlass*, methodHandle const&, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*) [clone .constprop.117]+0x85b -V [libjvm.so+0xbb19cd] Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0xfd -V [libjvm.so+0x83b8e3] JVM_InvokeMethod+0xf3 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 -j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 -j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 -j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 -v ~StubRoutines::call_stub -V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb -V [libjvm.so+0x80d2e3] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) [clone .isra.125] [clone .constprop.264]+0x193 -V [libjvm.so+0x80f338] jni_CallStaticVoidMethod+0x108 -C [libjli.so+0x4647] JavaMain+0xcd7 -C [libjli.so+0x85a9] ThreadJavaMain+0x9 - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 -j com.sun.jna.Pointer.setMemory(JJB)V+9 -j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 -v ~StubRoutines::call_stub -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 -j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 -j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 -j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 -v ~StubRoutines::call_stub - -siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000 - -Register to memory mapping: - -RAX=0x0 is NULL -RBX={method} {0x00007f7ecb469628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' -RCX=0x0000000000000080 is an unknown value -RDX=0x0000000000019000 is an unknown value -RSP=0x00007f7ecdf07788 is pointing into the stack for thread: 0x00007f7ec4028800 -RBP=0x00007f7ecdf077c0 is pointing into the stack for thread: 0x00007f7ec4028800 -RSI=0x0 is NULL -RDI=0x0 is NULL -R8 =0x0 is NULL -R9 =0x0000000000019000 is an unknown value -R10=0x0000000000000009 is an unknown value -R11=0x00007f7ecd45bfd0: in /lib64/libc.so.6 at 0x00007f7ecd2fe000 -R12=0x0 is NULL -R13={method} {0x00007f7ecb469628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' -R14=0x00007f7ecdf078b8 is pointing into the stack for thread: 0x00007f7ec4028800 -R15=0x00007f7ec4028800 is a thread - - -Registers: -RAX=0x0000000000000000, RBX=0x00007f7ecb469628, RCX=0x0000000000000080, RDX=0x0000000000019000 -RSP=0x00007f7ecdf07788, RBP=0x00007f7ecdf077c0, RSI=0x0000000000000000, RDI=0x0000000000000000 -R8 =0x0000000000000000, R9 =0x0000000000019000, R10=0x0000000000000009, R11=0x00007f7ecd45bfd0 -R12=0x0000000000000000, R13=0x00007f7ecb469628, R14=0x00007f7ecdf078b8, R15=0x00007f7ec4028800 -RIP=0x00007f7ecd45c090, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000006 - TRAPNO=0x000000000000000e - -Top of Stack: (sp=0x00007f7ecdf07788) -0x00007f7ecdf07788: 00007f7ec9756e8d 00007f7ecb469628 -0x00007f7ecdf07798: 00007f7ec4028b10 0000000000000000 -0x00007f7ecdf077a8: 0000000000019000 0000000000000000 -0x00007f7ecdf077b8: 0000000000000000 00007f7ecdf07860 - -Instructions: (pc=0x00007f7ecd45c090) -0x00007f7ecd45bf90: f3 0f 1e fa 48 39 d1 0f 82 53 d9 fa ff 0f 1f 00 -0x00007f7ecd45bfa0: f3 0f 1e fa 48 c1 e2 02 c5 f9 6e c6 48 89 f8 c4 -0x00007f7ecd45bfb0: e2 7d 58 c0 eb 2a 66 2e 0f 1f 84 00 00 00 00 00 -0x00007f7ecd45bfc0: f3 0f 1e fa 48 39 d1 0f 82 23 d9 fa ff 0f 1f 00 -0x00007f7ecd45bfd0: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 -0x00007f7ecd45bfe0: 48 83 fa 20 0f 82 04 01 00 00 48 83 fa 40 77 77 -0x00007f7ecd45bff0: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 66 90 -0x00007f7ecd45c000: f3 0f 1e fa c5 f8 77 48 89 d1 40 0f b6 c6 48 89 -0x00007f7ecd45c010: fa f3 aa 48 89 d0 c3 66 0f 1f 84 00 00 00 00 00 -0x00007f7ecd45c020: f3 0f 1e fa 48 39 d1 0f 82 c3 d8 fa ff 0f 1f 00 -0x00007f7ecd45c030: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 -0x00007f7ecd45c040: 48 83 fa 20 0f 82 a4 00 00 00 48 83 fa 40 77 0e -0x00007f7ecd45c050: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 48 81 -0x00007f7ecd45c060: fa 00 08 00 00 77 9d 48 81 fa 80 00 00 00 77 19 -0x00007f7ecd45c070: c5 fe 7f 07 c5 fe 7f 47 20 c5 fe 7f 44 17 e0 c5 -0x00007f7ecd45c080: fe 7f 44 17 c0 c5 f8 77 c3 48 8d 8f 80 00 00 00 -0x00007f7ecd45c090: c5 fe 7f 07 48 83 e1 80 c5 fe 7f 44 17 e0 c5 fe -0x00007f7ecd45c0a0: 7f 47 20 c5 fe 7f 44 17 c0 c5 fe 7f 47 40 c5 fe -0x00007f7ecd45c0b0: 7f 44 17 a0 c5 fe 7f 47 60 c5 fe 7f 44 17 80 48 -0x00007f7ecd45c0c0: 01 fa 48 83 e2 80 48 39 d1 74 ba c5 fd 7f 01 c5 -0x00007f7ecd45c0d0: fd 7f 41 20 c5 fd 7f 41 40 c5 fd 7f 41 60 48 81 -0x00007f7ecd45c0e0: c1 80 00 00 00 48 39 ca 75 e1 c5 f8 77 c3 80 fa -0x00007f7ecd45c0f0: 10 73 1c c4 e1 f9 7e c1 80 fa 08 73 20 80 fa 04 -0x00007f7ecd45c100: 73 27 80 fa 01 77 2c 72 02 88 0f c5 f8 77 c3 c5 -0x00007f7ecd45c110: fa 7f 44 17 f0 c5 fa 7f 07 c5 f8 77 c3 48 89 4c -0x00007f7ecd45c120: 17 f8 48 89 0f c5 f8 77 c3 89 4c 17 fc 89 0f c5 -0x00007f7ecd45c130: f8 77 c3 66 89 4c 17 fe 66 89 0f c5 f8 77 c3 90 -0x00007f7ecd45c140: f3 0f 1e fa 48 c1 e2 02 48 83 fa 20 0f 82 3e 01 -0x00007f7ecd45c150: 00 00 c5 fe 6f 16 c5 ed 76 17 c5 fd d7 c2 83 e8 -0x00007f7ecd45c160: ff 0f 85 e9 00 00 00 48 83 fa 40 0f 86 c0 00 00 -0x00007f7ecd45c170: 00 c5 fd 76 c0 48 81 fa 00 01 00 00 0f 87 9e 01 -0x00007f7ecd45c180: 00 00 48 81 fa 80 00 00 00 0f 82 28 02 00 00 c5 - - -Stack slot to memory mapping: -stack at sp + 0 slots: 0x00007f7ec9756e8d: Java_com_sun_jna_Native_setMemory+0x00000000000000bd in /root/.cache/JNA/temp/jna17886832672380520920.tmp at 0x00007f7ec9750000 -stack at sp + 1 slots: {method} {0x00007f7ecb469628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' -stack at sp + 2 slots: 0x00007f7ec4028b10 points into unknown readable memory: 80 b8 24 cd 7e 7f 00 00 -stack at sp + 3 slots: 0x0 is NULL -stack at sp + 4 slots: 0x0000000000019000 is an unknown value -stack at sp + 5 slots: 0x0 is NULL -stack at sp + 6 slots: 0x0 is NULL -stack at sp + 7 slots: 0x00007f7ecdf07860 is pointing into the stack for thread: 0x00007f7ec4028800 - - ---------------- P R O C E S S --------------- - -Threads class SMR info: -_java_thread_list=0x00007f7ec41c0640, length=12, elements={ -0x00007f7ec4028800, 0x00007f7ec40a2000, 0x00007f7ec40a3800, 0x00007f7ec40ad000, -0x00007f7ec40af000, 0x00007f7ec40b1000, 0x00007f7ec40b3000, 0x00007f7ec40b5000, -0x00007f7ec40ef800, 0x00007f7ec40f4800, 0x00007f7ec4188000, 0x00007f7ec41bf000 -} - -Java Threads: ( => current thread ) -=>0x00007f7ec4028800 JavaThread "main" [_thread_in_native, id=115, stack(0x00007f7ecde0a000,0x00007f7ecdf0b000)] - 0x00007f7ec40a2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=121, stack(0x00007f7ecab9d000,0x00007f7ecac9e000)] - 0x00007f7ec40a3800 JavaThread "Finalizer" daemon [_thread_blocked, id=124, stack(0x00007f7ecaa9c000,0x00007f7ecab9d000)] - 0x00007f7ec40ad000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=125, stack(0x00007f7eca2a7000,0x00007f7eca3a8000)] - 0x00007f7ec40af000 JavaThread "Service Thread" daemon [_thread_blocked, id=128, stack(0x00007f7eca1a6000,0x00007f7eca2a7000)] - 0x00007f7ec40b1000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=132, stack(0x00007f7eca0a5000,0x00007f7eca1a6000)] - 0x00007f7ec40b3000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=135, stack(0x00007f7ec9fa4000,0x00007f7eca0a5000)] - 0x00007f7ec40b5000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=137, stack(0x00007f7ec9ea3000,0x00007f7ec9fa4000)] - 0x00007f7ec40ef800 JavaThread "Notification Thread" daemon [_thread_blocked, id=146, stack(0x00007f7ec9da2000,0x00007f7ec9ea3000)] - 0x00007f7ec40f4800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=148, stack(0x00007f7ec9b9f000,0x00007f7ec9ca0000)] - 0x00007f7ec4188000 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=151, stack(0x00007f7ec9a87000,0x00007f7ec9b88000)] - 0x00007f7ec41bf000 JavaThread "surefire-forkedjvm-ping-30s" daemon [_thread_blocked, id=154, stack(0x00007f7ec9979000,0x00007f7ec9a7a000)] - -Other Threads: - 0x00007f7ec409e800 VMThread "VM Thread" [stack: 0x00007f7ecaca0000,0x00007f7ecada0000] [id=118] - 0x00007f7ec40f2000 WatcherThread [stack: 0x00007f7ec9ca2000,0x00007f7ec9da2000] [id=147] - -Threads with active compile tasks: - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -Heap address: 0x00000000e0c00000, size: 500 MB, Compressed Oops mode: 32-bit -Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 -Compressed class space size: 1073741824 Address: 0x0000000800b11000 - -Heap: - def new generation total 9792K, used 7588K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) - eden space 8704K, 74% used [0x00000000e0c00000, 0x00000000e1259340, 0x00000000e1480000) - from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) - to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) - tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) - the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea620, 0x00000000eb3ea800, 0x00000000ec800000) - Metaspace used 4998K, capacity 7071K, committed 7296K, reserved 1056768K - class space used 637K, capacity 881K, committed 896K, reserved 1048576K - -Card table byte_map: [0x00007f7ecb723000,0x00007f7ecb81e000] _byte_map_base: 0x00007f7ecb01d000 - -Polling page: 0x00007f7ecdf20000 - -Metaspace: - -Usage: - Non-class: 6.04 MB capacity, 4.26 MB ( 70%) used, 1.76 MB ( 29%) free+waste, 30.81 KB ( <1%) overhead. - Class: 881.00 KB capacity, 637.46 KB ( 72%) used, 226.48 KB ( 26%) free+waste, 17.06 KB ( 2%) overhead. - Both: 6.91 MB capacity, 4.88 MB ( 71%) used, 1.98 MB ( 29%) free+waste, 47.88 KB ( <1%) overhead. - -Virtual space: - Non-class space: 8.00 MB reserved, 6.25 MB ( 78%) committed - Class space: 1.00 GB reserved, 896.00 KB ( <1%) committed - Both: 1.01 GB reserved, 7.12 MB ( <1%) committed - -Chunk freelists: - Non-Class: 34.00 KB - Class: 11.00 KB - Both: 45.00 KB - -MaxMetaspaceSize: unlimited -CompressedClassSpaceSize: 1.00 GB - -CodeHeap 'non-profiled nmethods': size=120036Kb used=272Kb max_used=272Kb free=119763Kb - bounds [0x00007f7eb419c000, 0x00007f7eb440c000, 0x00007f7ebb6d5000] -CodeHeap 'profiled nmethods': size=120032Kb used=1610Kb max_used=1610Kb free=118421Kb - bounds [0x00007f7eacc64000, 0x00007f7eaced4000, 0x00007f7eb419c000] -CodeHeap 'non-nmethods': size=5692Kb used=1155Kb max_used=1170Kb free=4536Kb - bounds [0x00007f7eac6d5000, 0x00007f7eac945000, 0x00007f7eacc64000] - total_blobs=1295 nmethods=879 adapters=332 - compilation: enabled - stopped_count=0, restarted_count=0 - full_count=0 - -Compilation events (20 events): -Event: 12.944 Thread 0x00007f7ec40b3000 876 ! 3 jdk.internal.loader.BuiltinClassLoader::findClassOnClassPathOrNull (64 bytes) -Event: 12.955 Thread 0x00007f7ec40b3000 nmethod 876 0x00007f7eacdf1a90 code [0x00007f7eacdf1e00, 0x00007f7eacdf3260] -Event: 12.963 Thread 0x00007f7ec40b3000 877 ! 3 java.util.zip.ZipFile$ZipFileInflaterInputStream::close (67 bytes) -Event: 12.969 Thread 0x00007f7ec40b3000 nmethod 877 0x00007f7eacdf3a90 code [0x00007f7eacdf3c80, 0x00007f7eacdf4390] -Event: 12.969 Thread 0x00007f7ec40b3000 878 3 java.util.ArrayDeque::add (7 bytes) -Event: 12.969 Thread 0x00007f7ec40b3000 nmethod 878 0x00007f7eacdf4690 code [0x00007f7eacdf4820, 0x00007f7eacdf4980] -Event: 12.969 Thread 0x00007f7ec40b3000 879 3 java.util.ArrayDeque::addLast (51 bytes) -Event: 12.974 Thread 0x00007f7ec40b3000 nmethod 879 0x00007f7eacdf4a10 code [0x00007f7eacdf4be0, 0x00007f7eacdf5090] -Event: 12.982 Thread 0x00007f7ec40b3000 880 3 java.util.zip.ZipFile$InflaterCleanupAction::run (12 bytes) -Event: 12.982 Thread 0x00007f7ec40b3000 nmethod 880 0x00007f7eacdf5210 code [0x00007f7eacdf53a0, 0x00007f7eacdf5500] -Event: 12.982 Thread 0x00007f7ec40b3000 881 ! 3 java.util.zip.ZipFile$CleanableResource::releaseInflater (53 bytes) -Event: 12.986 Thread 0x00007f7ec40b3000 nmethod 881 0x00007f7eacdf5610 code [0x00007f7eacdf57e0, 0x00007f7eacdf5d00] -Event: 12.986 Thread 0x00007f7ec40b3000 882 ! 3 java.util.zip.Inflater::reset (64 bytes) -Event: 12.991 Thread 0x00007f7ec40b3000 nmethod 882 0x00007f7eacdf5f10 code [0x00007f7eacdf60c0, 0x00007f7eacdf64b0] -Event: 12.993 Thread 0x00007f7ec40b1000 884 4 java.lang.Object:: (1 bytes) -Event: 12.995 Thread 0x00007f7ec40b1000 nmethod 884 0x00007f7eb41dfd90 code [0x00007f7eb41dff00, 0x00007f7eb41dffb8] -Event: 13.004 Thread 0x00007f7ec40b3000 885 3 sun.net.www.protocol.jar.Handler::checkNestedProtocol (18 bytes) -Event: 13.005 Thread 0x00007f7ec40b3000 nmethod 885 0x00007f7eacdf6690 code [0x00007f7eacdf6840, 0x00007f7eacdf6a20] -Event: 13.116 Thread 0x00007f7ec40b1000 886 4 java.lang.Math::min (11 bytes) -Event: 13.117 Thread 0x00007f7ec40b1000 nmethod 886 0x00007f7eb41e0090 code [0x00007f7eb41e0200, 0x00007f7eb41e0258] - -GC Heap History (2 events): -Event: 7.487 GC heap before -{Heap before GC invocations=0 (full 0): - def new generation total 9792K, used 8704K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) - eden space 8704K, 100% used [0x00000000e0c00000, 0x00000000e1480000, 0x00000000e1480000) - from space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) - to space 1088K, 0% used [0x00000000e1590000, 0x00000000e1590000, 0x00000000e16a0000) - tenured generation total 21888K, used 0K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) - the space 21888K, 0% used [0x00000000eb2a0000, 0x00000000eb2a0000, 0x00000000eb2a0200, 0x00000000ec800000) - Metaspace used 3048K, capacity 5805K, committed 6016K, reserved 1056768K - class space used 360K, capacity 627K, committed 640K, reserved 1048576K -} -Event: 7.606 GC heap after -{Heap after GC invocations=1 (full 0): - def new generation total 9792K, used 1088K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) - eden space 8704K, 0% used [0x00000000e0c00000, 0x00000000e0c00000, 0x00000000e1480000) - from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) - to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) - tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) - the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea620, 0x00000000eb3ea800, 0x00000000ec800000) - Metaspace used 3048K, capacity 5805K, committed 6016K, reserved 1056768K - class space used 360K, capacity 627K, committed 640K, reserved 1048576K -} - -Deoptimization events (20 events): -Event: 1.087 Thread 0x00007f7ec4028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f7eb41a0990 relative=0x00000000000001d0 -Event: 1.087 Thread 0x00007f7ec4028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7eb41a0990 method=java.lang.String.hashCode()I @ 42 c2 -Event: 1.087 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eb41a0990 sp=0x00007f7ecdf08320 -Event: 1.087 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71de25 sp=0x00007f7ecdf082d8 mode 2 -Event: 3.662 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eaccb7d84 sp=0x00007f7ecdf08350 -Event: 3.662 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf077e0 mode 0 -Event: 4.371 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eaccc4422 sp=0x00007f7ecdf044a0 -Event: 4.371 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf03928 mode 0 -Event: 4.510 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eacc890af sp=0x00007f7ecdf081b0 -Event: 4.510 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf07658 mode 0 -Event: 5.564 Thread 0x00007f7ec4028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f7eb41a88e8 relative=0x0000000000000068 -Event: 5.564 Thread 0x00007f7ec4028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f7eb41a88e8 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 5.564 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eb41a88e8 sp=0x00007f7ecdf088d0 -Event: 5.564 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71de25 sp=0x00007f7ecdf08880 mode 2 -Event: 6.331 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eacccd5e8 sp=0x00007f7ecdf08580 -Event: 6.331 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf079f0 mode 0 -Event: 6.941 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eacccd5e8 sp=0x00007f7ecdf07660 -Event: 6.941 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf06af8 mode 0 -Event: 12.327 Thread 0x00007f7ec4028800 DEOPT PACKING pc=0x00007f7eaccc95c5 sp=0x00007f7ecdf06910 -Event: 12.327 Thread 0x00007f7ec4028800 DEOPT UNPACKING pc=0x00007f7eac71e33a sp=0x00007f7ecdf05d90 mode 0 - -Classes unloaded (0 events): -No events - -Classes redefined (0 events): -No events - -Internal exceptions (17 events): -Event: 2.190 Thread 0x00007f7ec4028800 Exception (0x00000000e0dc5a48) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 5.245 Thread 0x00007f7ec4028800 Exception (0x00000000e12092c8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 5.649 Thread 0x00007f7ec4028800 Exception (0x00000000e1280798) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.015 Thread 0x00007f7ec4028800 Exception (0x00000000e12d47e0) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.382 Thread 0x00007f7ec4028800 Exception (0x00000000e1346640) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.595 Thread 0x00007f7ec4028800 Exception (0x00000000e137b378) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.672 Thread 0x00007f7ec4028800 Exception (0x00000000e139ef70) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.707 Thread 0x00007f7ec4028800 Exception (0x00000000e13a9150) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.739 Thread 0x00007f7ec4028800 Exception (0x00000000e13b6dd8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] -Event: 6.925 Thread 0x00007f7ec4028800 Exception (0x00000000e13ec548) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 7.737 Thread 0x00007f7ec4028800 Exception (0x00000000e0c25148) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 7.990 Thread 0x00007f7ec4028800 Exception (0x00000000e0c900c0) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 8.395 Thread 0x00007f7ec4028800 Exception (0x00000000e0cfd370) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 8.486 Thread 0x00007f7ec4028800 Exception (0x00000000e0d15688) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 8.487 Thread 0x00007f7ec4028800 Exception (0x00000000e0d18078) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] -Event: 10.634 Thread 0x00007f7ec4028800 Exception (0x00000000e0f88b50) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 10.647 Thread 0x00007f7ec4028800 Exception (0x00000000e0f8c210) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] - -Events (20 events): -Event: 12.778 loading class sun/security/provider/ByteArrayAccess -Event: 12.778 loading class sun/security/provider/ByteArrayAccess done -Event: 12.784 loading class java/io/DeleteOnExitHook -Event: 12.786 loading class java/io/DeleteOnExitHook done -Event: 12.786 loading class java/io/DeleteOnExitHook$1 -Event: 12.786 loading class java/io/DeleteOnExitHook$1 done -Event: 12.815 loading class java/io/FileOutputStream$1 -Event: 12.815 loading class java/io/FileOutputStream$1 done -Event: 12.822 Loaded shared library /root/.cache/JNA/temp/jna17886832672380520920.tmp -Event: 12.822 loading class java/nio/ShortBuffer -Event: 12.822 loading class java/nio/ShortBuffer done -Event: 12.822 loading class java/nio/FloatBuffer -Event: 12.834 loading class java/nio/FloatBuffer done -Event: 12.834 loading class java/nio/DoubleBuffer -Event: 12.835 loading class java/nio/DoubleBuffer done -Event: 12.922 Executing VM operation: HandshakeAllThreads -Event: 12.925 Executing VM operation: HandshakeAllThreads done -Event: 12.980 Loaded shared library /usr/java/openjdk-14/lib/libzip.so -Event: 13.028 Executing VM operation: HandshakeAllThreads -Event: 13.036 Executing VM operation: HandshakeAllThreads done - - -Dynamic libraries: -e0c00000-e16a0000 rw-p 00000000 00:00 0 -e16a0000-eb2a0000 ---p 00000000 00:00 0 -eb2a0000-ec800000 rw-p 00000000 00:00 0 -ec800000-100000000 ---p 00000000 00:00 0 -800000000-800003000 rwxp 00001000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -800003000-8003e4000 rw-p 00004000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -8003e4000-800b10000 r--p 003e5000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -800b10000-800b11000 rw-p 00b11000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -800b11000-800bf1000 rw-p 00000000 00:00 0 -800bf1000-840b11000 ---p 00000000 00:00 0 -55a64bfce000-55a64bfcf000 r-xp 00000000 08:01 3160482 /usr/java/openjdk-14/bin/java -55a64bfd0000-55a64bfd1000 r--p 00001000 08:01 3160482 /usr/java/openjdk-14/bin/java -55a64bfd1000-55a64bfd2000 rw-p 00002000 08:01 3160482 /usr/java/openjdk-14/bin/java -55a64c580000-55a64c5a1000 rw-p 00000000 00:00 0 [heap] -7f7e90000000-7f7e90288000 rw-p 00000000 00:00 0 -7f7e90288000-7f7e94000000 ---p 00000000 00:00 0 -7f7e94000000-7f7e94427000 rw-p 00000000 00:00 0 -7f7e94427000-7f7e98000000 ---p 00000000 00:00 0 -7f7e98000000-7f7e98021000 rw-p 00000000 00:00 0 -7f7e98021000-7f7e9c000000 ---p 00000000 00:00 0 -7f7e9c000000-7f7e9c021000 rw-p 00000000 00:00 0 -7f7e9c021000-7f7ea0000000 ---p 00000000 00:00 0 -7f7ea0000000-7f7ea0021000 rw-p 00000000 00:00 0 -7f7ea0021000-7f7ea4000000 ---p 00000000 00:00 0 -7f7ea4000000-7f7ea4021000 rw-p 00000000 00:00 0 -7f7ea4021000-7f7ea8000000 ---p 00000000 00:00 0 -7f7ea8000000-7f7ea8021000 rw-p 00000000 00:00 0 -7f7ea8021000-7f7eac000000 ---p 00000000 00:00 0 -7f7eac6d5000-7f7eac945000 rwxp 00000000 00:00 0 -7f7eac945000-7f7eacc64000 ---p 00000000 00:00 0 -7f7eacc64000-7f7eaced4000 rwxp 00000000 00:00 0 -7f7eaced4000-7f7eb419c000 ---p 00000000 00:00 0 -7f7eb419c000-7f7eb440c000 rwxp 00000000 00:00 0 -7f7eb440c000-7f7ebb6d5000 ---p 00000000 00:00 0 -7f7ebb6d5000-7f7ec4000000 r--s 00000000 08:01 3160985 /usr/java/openjdk-14/lib/modules -7f7ec4000000-7f7ec44c4000 rw-p 00000000 00:00 0 -7f7ec44c4000-7f7ec8000000 ---p 00000000 00:00 0 -7f7ec9292000-7f7ec9750000 rw-p 00000000 00:00 0 -7f7ec9750000-7f7ec9768000 r-xp 00000000 08:01 3163771 /root/.cache/JNA/temp/jna17886832672380520920.tmp (deleted) -7f7ec9768000-7f7ec9968000 ---p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna17886832672380520920.tmp (deleted) -7f7ec9968000-7f7ec9969000 rw-p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna17886832672380520920.tmp (deleted) -7f7ec9969000-7f7ec9976000 r-xp 00000000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so -7f7ec9976000-7f7ec9978000 r--p 0000c000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so -7f7ec9978000-7f7ec9979000 rw-p 0000e000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so -7f7ec9979000-7f7ec997d000 ---p 00000000 00:00 0 -7f7ec997d000-7f7ec9a7a000 rw-p 00000000 00:00 0 -7f7ec9a7a000-7f7ec9a7f000 r-xp 00000000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so -7f7ec9a7f000-7f7ec9a80000 r--p 00004000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so -7f7ec9a80000-7f7ec9a81000 rw-p 00005000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so -7f7ec9a81000-7f7ec9a85000 r-xp 00000000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so -7f7ec9a85000-7f7ec9a86000 r--p 00003000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so -7f7ec9a86000-7f7ec9a87000 rw-p 00004000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so -7f7ec9a87000-7f7ec9a8b000 ---p 00000000 00:00 0 -7f7ec9a8b000-7f7ec9b88000 rw-p 00000000 00:00 0 -7f7ec9b88000-7f7ec9b9d000 r-xp 00000000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so -7f7ec9b9d000-7f7ec9b9e000 r--p 00014000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so -7f7ec9b9e000-7f7ec9b9f000 rw-p 00015000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so -7f7ec9b9f000-7f7ec9ba3000 ---p 00000000 00:00 0 -7f7ec9ba3000-7f7ec9ca0000 rw-p 00000000 00:00 0 -7f7ec9ca0000-7f7ec9ca1000 ---p 00000000 00:00 0 -7f7ec9ca1000-7f7ec9da2000 rw-p 00000000 00:00 0 -7f7ec9da2000-7f7ec9da6000 ---p 00000000 00:00 0 -7f7ec9da6000-7f7ec9ea3000 rw-p 00000000 00:00 0 -7f7ec9ea3000-7f7ec9ea7000 ---p 00000000 00:00 0 -7f7ec9ea7000-7f7ec9fa4000 rw-p 00000000 00:00 0 -7f7ec9fa4000-7f7ec9fa8000 ---p 00000000 00:00 0 -7f7ec9fa8000-7f7eca0a5000 rw-p 00000000 00:00 0 -7f7eca0a5000-7f7eca0a9000 ---p 00000000 00:00 0 -7f7eca0a9000-7f7eca1a6000 rw-p 00000000 00:00 0 -7f7eca1a6000-7f7eca1aa000 ---p 00000000 00:00 0 -7f7eca1aa000-7f7eca2a7000 rw-p 00000000 00:00 0 -7f7eca2a7000-7f7eca2ab000 ---p 00000000 00:00 0 -7f7eca2ab000-7f7eca3a8000 rw-p 00000000 00:00 0 -7f7eca3a8000-7f7eca3fb000 r--p 00000000 08:01 3154692 /usr/lib/locale/C.utf8/LC_CTYPE -7f7eca3fb000-7f7ecaa9c000 r--p 00000000 08:01 3154691 /usr/lib/locale/C.utf8/LC_COLLATE -7f7ecaa9c000-7f7ecaaa0000 ---p 00000000 00:00 0 -7f7ecaaa0000-7f7ecab9d000 rw-p 00000000 00:00 0 -7f7ecab9d000-7f7ecaba1000 ---p 00000000 00:00 0 -7f7ecaba1000-7f7ecac9e000 rw-p 00000000 00:00 0 -7f7ecac9e000-7f7ecac9f000 ---p 00000000 00:00 0 -7f7ecac9f000-7f7ecb4bc000 rw-p 00000000 00:00 0 -7f7ecb4bc000-7f7ecb67c000 ---p 00000000 00:00 0 -7f7ecb67c000-7f7ecb687000 rw-p 00000000 00:00 0 -7f7ecb687000-7f7ecb723000 ---p 00000000 00:00 0 -7f7ecb723000-7f7ecb729000 rw-p 00000000 00:00 0 -7f7ecb729000-7f7ecb776000 ---p 00000000 00:00 0 -7f7ecb776000-7f7ecb781000 rw-p 00000000 00:00 0 -7f7ecb781000-7f7ecb81d000 ---p 00000000 00:00 0 -7f7ecb81d000-7f7ecb823000 rw-p 00000000 00:00 0 -7f7ecb823000-7f7ecb909000 ---p 00000000 00:00 0 -7f7ecb909000-7f7ecb90e000 rw-p 00000000 00:00 0 -7f7ecb90e000-7f7ecb9f4000 ---p 00000000 00:00 0 -7f7ecb9f4000-7f7ecb9ff000 r-xp 00000000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f7ecb9ff000-7f7ecbbfe000 ---p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f7ecbbfe000-7f7ecbbff000 r--p 0000a000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f7ecbbff000-7f7ecbc00000 rw-p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f7ecbc00000-7f7ecbc06000 rw-p 00000000 00:00 0 -7f7ecbc06000-7f7ecbc0d000 r-xp 00000000 08:01 3155596 /usr/lib64/librt-2.28.so -7f7ecbc0d000-7f7ecbe0d000 ---p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so -7f7ecbe0d000-7f7ecbe0e000 r--p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so -7f7ecbe0e000-7f7ecbe0f000 rw-p 00008000 08:01 3155596 /usr/lib64/librt-2.28.so -7f7ecbe0f000-7f7ecbf90000 r-xp 00000000 08:01 3155521 /usr/lib64/libm-2.28.so -7f7ecbf90000-7f7ecc18f000 ---p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so -7f7ecc18f000-7f7ecc190000 r--p 00180000 08:01 3155521 /usr/lib64/libm-2.28.so -7f7ecc190000-7f7ecc191000 rw-p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so -7f7ecc191000-7f7ecd1a0000 r-xp 00000000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f7ecd1a0000-7f7ecd1a1000 ---p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f7ecd1a1000-7f7ecd245000 r--p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f7ecd245000-7f7ecd27d000 rw-p 010b3000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f7ecd27d000-7f7ecd2fe000 rw-p 00000000 00:00 0 -7f7ecd2fe000-7f7ecd4b7000 r-xp 00000000 08:01 3155424 /usr/lib64/libc-2.28.so -7f7ecd4b7000-7f7ecd6b6000 ---p 001b9000 08:01 3155424 /usr/lib64/libc-2.28.so -7f7ecd6b6000-7f7ecd6ba000 r--p 001b8000 08:01 3155424 /usr/lib64/libc-2.28.so -7f7ecd6ba000-7f7ecd6bc000 rw-p 001bc000 08:01 3155424 /usr/lib64/libc-2.28.so -7f7ecd6bc000-7f7ecd6c0000 rw-p 00000000 00:00 0 -7f7ecd6c0000-7f7ecd6c3000 r-xp 00000000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f7ecd6c3000-7f7ecd8c2000 ---p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f7ecd8c2000-7f7ecd8c3000 r--p 00002000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f7ecd8c3000-7f7ecd8c4000 rw-p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f7ecd8c4000-7f7ecd8df000 r-xp 00000000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f7ecd8df000-7f7ecdade000 ---p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f7ecdade000-7f7ecdadf000 r--p 0001a000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f7ecdadf000-7f7ecdae0000 rw-p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f7ecdae0000-7f7ecdae4000 rw-p 00000000 00:00 0 -7f7ecdae4000-7f7ecdafa000 r-xp 00000000 08:01 3155650 /usr/lib64/libz.so.1.2.11 -7f7ecdafa000-7f7ecdcf9000 ---p 00016000 08:01 3155650 /usr/lib64/libz.so.1.2.11 -7f7ecdcf9000-7f7ecdcfa000 r--p 00015000 08:01 3155650 /usr/lib64/libz.so.1.2.11 -7f7ecdcfa000-7f7ecdcfb000 rw-p 00000000 00:00 0 -7f7ecdcfb000-7f7ecdd24000 r-xp 00000000 08:01 3155395 /usr/lib64/ld-2.28.so -7f7ecdd28000-7f7ecdd39000 r-xp 00000000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f7ecdd39000-7f7ecdd3a000 ---p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f7ecdd3a000-7f7ecdd3b000 r--p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f7ecdd3b000-7f7ecdd3c000 rw-p 00012000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f7ecdd3c000-7f7ecdd3d000 r--p 00000000 08:01 3154699 /usr/lib/locale/C.utf8/LC_NUMERIC -7f7ecdd3d000-7f7ecdd3e000 r--p 00000000 08:01 3154702 /usr/lib/locale/C.utf8/LC_TIME -7f7ecdd3e000-7f7ecdd3f000 r--p 00000000 08:01 3154697 /usr/lib/locale/C.utf8/LC_MONETARY -7f7ecdd3f000-7f7ecdd40000 r--p 00000000 08:01 3154696 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES -7f7ecdd40000-7f7ecdd41000 r--p 00000000 08:01 3154700 /usr/lib/locale/C.utf8/LC_PAPER -7f7ecdd41000-7f7ecdd42000 r--p 00000000 08:01 3154698 /usr/lib/locale/C.utf8/LC_NAME -7f7ecdd42000-7f7ecdd43000 r--p 00000000 08:01 3154690 /usr/lib/locale/C.utf8/LC_ADDRESS -7f7ecdd43000-7f7ecdd44000 r--p 00000000 08:01 3154701 /usr/lib/locale/C.utf8/LC_TELEPHONE -7f7ecdd44000-7f7ecdd45000 r--p 00000000 08:01 3154694 /usr/lib/locale/C.utf8/LC_MEASUREMENT -7f7ecdd45000-7f7ecdd4c000 r--s 00000000 08:01 3155357 /usr/lib64/gconv/gconv-modules.cache -7f7ecdd4c000-7f7ecdd4d000 r--p 00000000 08:01 3154693 /usr/lib/locale/C.utf8/LC_IDENTIFICATION -7f7ecdd4d000-7f7ecdd67000 r--p 00000000 08:01 3154703 /usr/lib/locale/locale-archive -7f7ecdd67000-7f7ecddad000 rw-p 00000000 00:00 0 -7f7ecddad000-7f7ecddb4000 ---p 00000000 00:00 0 -7f7ecddb4000-7f7ecddbb000 r-xp 00000000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so -7f7ecddbb000-7f7ecddbc000 r--p 00006000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so -7f7ecddbc000-7f7ecddbd000 rw-p 00007000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so -7f7ecddbd000-7f7ecdde1000 r-xp 00000000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so -7f7ecdde1000-7f7ecdde2000 r--p 00023000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so -7f7ecdde2000-7f7ecdde4000 rw-p 00024000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so -7f7ecdde4000-7f7ecddec000 rw-s 00000000 08:01 3163766 /tmp/hsperfdata_root/100 -7f7ecddec000-7f7ecde07000 r-xp 00000000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so -7f7ecde07000-7f7ecde09000 r--p 0001a000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so -7f7ecde09000-7f7ecde0a000 rw-p 0001c000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so -7f7ecde0a000-7f7ecde0e000 ---p 00000000 00:00 0 -7f7ecde0e000-7f7ecdf0d000 rw-p 00000000 00:00 0 -7f7ecdf0d000-7f7ecdf1b000 r-xp 00000000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f7ecdf1b000-7f7ecdf1c000 ---p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f7ecdf1c000-7f7ecdf1d000 r--p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f7ecdf1d000-7f7ecdf1e000 rw-p 0000f000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f7ecdf1e000-7f7ecdf20000 rw-p 00000000 00:00 0 -7f7ecdf20000-7f7ecdf21000 ---p 00000000 00:00 0 -7f7ecdf21000-7f7ecdf22000 r--p 00000000 00:00 0 -7f7ecdf22000-7f7ecdf23000 ---p 00000000 00:00 0 -7f7ecdf23000-7f7ecdf24000 r--p 00028000 08:01 3155395 /usr/lib64/ld-2.28.so -7f7ecdf24000-7f7ecdf25000 rw-p 00029000 08:01 3155395 /usr/lib64/ld-2.28.so -7f7ecdf25000-7f7ecdf26000 rw-p 00000000 00:00 0 -7ffd671f1000-7ffd67212000 rw-p 00000000 00:00 0 [stack] -7ffd67244000-7ffd67247000 r--p 00000000 00:00 0 [vvar] -7ffd67247000-7ffd67249000 r-xp 00000000 00:00 0 [vdso] -ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] - - -VM Arguments: -java_command: /project/java-native/target/surefire/surefirebooter15072611568838389395.jar /project/java-native/target/surefire 2020-10-01T00-09-53_430-jvmRun2 surefire3272641396836511080tmp surefire_29468511371192344687tmp -java_class_path (initial): /project/java-native/target/surefire/surefirebooter15072611568838389395.jar -Launcher Type: SUN_STANDARD - -[Global flags] - intx CICompilerCount = 2 {product} {ergonomic} - size_t InitialHeapSize = 33554432 {product} {ergonomic} - size_t MaxHeapSize = 524288000 {product} {ergonomic} - size_t MaxNewSize = 174718976 {product} {ergonomic} - size_t MinHeapDeltaBytes = 196608 {product} {ergonomic} - size_t MinHeapSize = 8388608 {product} {ergonomic} - size_t NewSize = 11141120 {product} {ergonomic} - uintx NonNMethodCodeHeapSize = 5826188 {pd product} {ergonomic} - uintx NonProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} - size_t OldSize = 22413312 {product} {ergonomic} - uintx ProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} - uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} - bool SegmentedCodeCache = true {product} {ergonomic} - size_t SoftMaxHeapSize = 524288000 {manageable} {ergonomic} - bool UseCompressedClassPointers = true {lp64_product} {ergonomic} - bool UseCompressedOops = true {lp64_product} {ergonomic} - bool UseSerialGC = true {product} {ergonomic} - -Logging: -Log output configuration: - #0: stdout all=warning uptime,level,tags - #1: stderr all=off uptime,level,tags - -Environment Variables: -JAVA_HOME=/usr/java/openjdk-14 -PATH=/usr/java/openjdk-14/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - -Signal Handlers: -SIGSEGV: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR2: [libjvm.so+0xb1bb30], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:Oracle Linux Server release 8.2 -uname:Linux 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 -OS uptime: 0 days 13:49 hours -libc:glibc 2.28 NPTL 2.28 -rlimit: STACK 8192k, CORE infinity, NPROC infinity, NOFILE 1048576, AS infinity, DATA infinity, FSIZE infinity -load average:4.05 1.87 0.76 - -/proc/meminfo: -MemTotal: 2045412 kB -MemFree: 1098032 kB -MemAvailable: 1368704 kB -Buffers: 83692 kB -Cached: 471224 kB -SwapCached: 0 kB -Active: 573576 kB -Inactive: 305820 kB -Active(anon): 404060 kB -Inactive(anon): 199632 kB -Active(file): 169516 kB -Inactive(file): 106188 kB -Unevictable: 0 kB -Mlocked: 0 kB -SwapTotal: 1415172 kB -SwapFree: 1415172 kB -Dirty: 324 kB -Writeback: 0 kB -AnonPages: 324536 kB -Mapped: 120864 kB -Shmem: 290620 kB -Slab: 42348 kB -SReclaimable: 27356 kB -SUnreclaim: 14992 kB -KernelStack: 4672 kB -PageTables: 2744 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 2437876 kB -Committed_AS: 1792468 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 0 kB -VmallocChunk: 0 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -DirectMap4k: 42944 kB -DirectMap2M: 2054144 kB - - -/proc/sys/kernel/threads-max (system-wide limit on the number of threads): -15537 - - -/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): -65530 - - -/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): -32768 - - - -container (cgroup) information: -container_type: cgroupv1 -cpu_cpuset_cpus: 0 -cpu_memory_nodes: 0 -active_processor_count: 1 -cpu_quota: no quota -cpu_period: 100000 -cpu_shares: no shares -memory_limit_in_bytes: unlimited -memory_and_swap_limit_in_bytes: unlimited -memory_soft_limit_in_bytes: unlimited -memory_usage_in_bytes: 356708352 -memory_max_usage_in_bytes: 394252288 - -KVM virtualization detected -Steal ticks since vm start: 0 -Steal ticks percentage since vm start: 0.000 - -CPU:total 1 (initial active 1) (1 cores per cpu, 1 threads per core) family 6 model 69 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, lzcnt, tsc, tscinvbit -CPU Model and flags from /proc/cpuinfo: -model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase avx2 invpcid md_clear flush_l1d - -Memory: 4k page, physical 2045412k(1098032k free), swap 1415172k(1415172k free) - -vm_info: OpenJDK 64-Bit Server VM (14.0.2+12-46) for linux-amd64 JRE (14.0.2+12-46), built on Jul 8 2020 23:30:21 by "mach5one" with gcc 8.3.0 - -END. diff --git a/java-native/hs_err_pid98.log b/java-native/hs_err_pid98.log deleted file mode 100644 index 25a01096e2..0000000000 --- a/java-native/hs_err_pid98.log +++ /dev/null @@ -1,789 +0,0 @@ -# -# A fatal error has been detected by the Java Runtime Environment: -# -# SIGSEGV (0xb) at pc=0x00007f01b8795090, pid=98, tid=114 -# -# JRE version: OpenJDK Runtime Environment (14.0.2+12) (build 14.0.2+12-46) -# Java VM: OpenJDK 64-Bit Server VM (14.0.2+12-46, mixed mode, sharing, tiered, compressed oops, serial gc, linux-amd64) -# Problematic frame: -# C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 -# -# Core dump will be written. Default location: /project/java-native/core -# -# If you would like to submit a bug report, please visit: -# https://bugreport.java.com/bugreport/crash.jsp -# The crash happened outside the Java Virtual Machine in native code. -# See problematic frame for where to report the bug. -# - ---------------- S U M M A R Y ------------ - -Command Line: /project/java-native/target/surefire/surefirebooter255261521587421006.jar /project/java-native/target/surefire 2020-10-01T00-29-55_633-jvmRun3 surefire15563279322398545368tmp surefire_13579138375161683305tmp - -Host: Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz, 1 cores, 1G, Oracle Linux Server release 8.2 -Time: Thu Oct 1 00:30:20 2020 UTC elapsed time: 10 seconds (0d 0h 0m 10s) - ---------------- T H R E A D --------------- - -Current thread (0x00007f01b0028800): JavaThread "main" [_thread_in_native, id=114, stack(0x00007f01b9143000,0x00007f01b9244000)] - -Stack: [0x00007f01b9143000,0x00007f01b9244000], sp=0x00007f01b9240788, free space=1013k -Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) -C [libc.so.6+0x15e090] __memset_avx2_unaligned_erms+0x60 -j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 -j com.sun.jna.Pointer.setMemory(JJB)V+9 -j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 -v ~StubRoutines::call_stub -V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb -V [libjvm.so+0xbb0efb] invoke(InstanceKlass*, methodHandle const&, Handle, bool, objArrayHandle, BasicType, objArrayHandle, bool, Thread*) [clone .constprop.117]+0x85b -V [libjvm.so+0xbb19cd] Reflection::invoke_method(oopDesc*, Handle, objArrayHandle, Thread*)+0xfd -V [libjvm.so+0x83b8e3] JVM_InvokeMethod+0xf3 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 -j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 -j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 -j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 -v ~StubRoutines::call_stub -V [libjvm.so+0x78e42b] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x2fb -V [libjvm.so+0x80d2e3] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) [clone .isra.125] [clone .constprop.264]+0x193 -V [libjvm.so+0x80f338] jni_CallStaticVoidMethod+0x108 -C [libjli.so+0x4647] JavaMain+0xcd7 -C [libjli.so+0x85a9] ThreadJavaMain+0x9 - -Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) -j com.sun.jna.Native.setMemory(Lcom/sun/jna/Pointer;JJJB)V+0 -j com.sun.jna.Pointer.setMemory(JJB)V+9 -j com.baeldung.jna.StdCUnitTest.whenAccessViolation_thenShouldThrowError()V+17 -v ~StubRoutines::call_stub -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+0 java.base@14.0.2 -j jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+100 java.base@14.0.2 -j jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+6 java.base@14.0.2 -j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+59 java.base@14.0.2 -j org.junit.platform.commons.util.ReflectionUtils.invokeMethod(Ljava/lang/reflect/Method;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 -j org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(Ljava/lang/reflect/Method;Ljava/lang/Object;Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/extension/ExtensionRegistry;)Ljava/lang/Object;+32 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(Lorg/junit/jupiter/api/extension/ExtensionContext;Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;)V+24 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda$232.execute()V+12 -j org.junit.jupiter.engine.execution.ThrowableCollector.execute(Lorg/junit/jupiter/api/function/Executable;)V+1 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)V+21 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/jupiter/engine/execution/JupiterEngineExecutionContext;+44 -j org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/Node$DynamicTestExecutor;)Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;+6 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+35 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;Lorg/junit/platform/engine/TestDescriptor;)V+17 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$190.accept(Ljava/lang/Object;)V+12 -j java.util.stream.ForEachOps$ForEachOp$OfRef.accept(Ljava/lang/Object;)V+5 java.base@14.0.2 -j java.util.stream.ReferencePipeline$2$1.accept(Ljava/lang/Object;)V+21 java.base@14.0.2 -j java.util.Iterator.forEachRemaining(Ljava/util/function/Consumer;)V+21 java.base@14.0.2 -j java.util.Spliterators$IteratorSpliterator.forEachRemaining(Ljava/util/function/Consumer;)V+52 java.base@14.0.2 -j java.util.stream.AbstractPipeline.copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V+32 java.base@14.0.2 -j java.util.stream.AbstractPipeline.wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;+13 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;+3 java.base@14.0.2 -j java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;+3 java.base@14.0.2 -j java.util.stream.AbstractPipeline.evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;+88 java.base@14.0.2 -j java.util.stream.ReferencePipeline.forEach(Ljava/util/function/Consumer;)V+6 java.base@14.0.2 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+75 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor$$Lambda$187.execute()V+8 -j org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(Lorg/junit/platform/engine/support/hierarchical/SingleTestExecutor$Executable;)Lorg/junit/platform/engine/TestExecutionResult;+1 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+27 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(Lorg/junit/platform/engine/support/hierarchical/EngineExecutionContext;Lorg/junit/platform/engine/support/hierarchical/ExecutionTracker;)V+53 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute()V+23 -j org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(Lorg/junit/platform/engine/ExecutionRequest;)V+13 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/engine/TestEngine;Lorg/junit/platform/engine/ExecutionRequest;)V+2 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/core/Root;Lorg/junit/platform/engine/ConfigurationParameters;[Lorg/junit/platform/launcher/TestExecutionListener;)V+101 -j org.junit.platform.launcher.core.DefaultLauncher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;[Lorg/junit/platform/launcher/TestExecutionListener;)V+36 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invokeAllTests(Lorg/apache/maven/surefire/util/TestsToRun;)Lorg/apache/maven/surefire/suite/RunResult;+55 -j org.junit.platform.surefire.provider.JUnitPlatformProvider.invoke(Ljava/lang/Object;)Lorg/apache/maven/surefire/suite/RunResult;+31 -j org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(Lorg/apache/maven/surefire/booter/ForkingReporterFactory;)Lorg/apache/maven/surefire/suite/RunResult;+9 -j org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess()Lorg/apache/maven/surefire/suite/RunResult;+7 -j org.apache.maven.surefire.booter.ForkedBooter.execute()V+1 -j org.apache.maven.surefire.booter.ForkedBooter.main([Ljava/lang/String;)V+35 -v ~StubRoutines::call_stub - -siginfo: si_signo: 11 (SIGSEGV), si_code: 1 (SEGV_MAPERR), si_addr: 0x0000000000000000 - -Register to memory mapping: - -RAX=0x0 is NULL -RBX={method} {0x00007f01b6799628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' -RCX=0x0000000000000080 is an unknown value -RDX=0x0000000000019000 is an unknown value -RSP=0x00007f01b9240788 is pointing into the stack for thread: 0x00007f01b0028800 -RBP=0x00007f01b92407c0 is pointing into the stack for thread: 0x00007f01b0028800 -RSI=0x0 is NULL -RDI=0x0 is NULL -R8 =0x0 is NULL -R9 =0x0000000000019000 is an unknown value -R10=0x0000000000000009 is an unknown value -R11=0x00007f01b8794fd0: in /lib64/libc.so.6 at 0x00007f01b8637000 -R12=0x0 is NULL -R13={method} {0x00007f01b6799628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' -R14=0x00007f01b92408b8 is pointing into the stack for thread: 0x00007f01b0028800 -R15=0x00007f01b0028800 is a thread - - -Registers: -RAX=0x0000000000000000, RBX=0x00007f01b6799628, RCX=0x0000000000000080, RDX=0x0000000000019000 -RSP=0x00007f01b9240788, RBP=0x00007f01b92407c0, RSI=0x0000000000000000, RDI=0x0000000000000000 -R8 =0x0000000000000000, R9 =0x0000000000019000, R10=0x0000000000000009, R11=0x00007f01b8794fd0 -R12=0x0000000000000000, R13=0x00007f01b6799628, R14=0x00007f01b92408b8, R15=0x00007f01b0028800 -RIP=0x00007f01b8795090, EFLAGS=0x0000000000010202, CSGSFS=0x002b000000000033, ERR=0x0000000000000006 - TRAPNO=0x000000000000000e - -Top of Stack: (sp=0x00007f01b9240788) -0x00007f01b9240788: 00007f01b4a8fe8d 00007f01b6799628 -0x00007f01b9240798: 00007f01b0028b10 0000000000000000 -0x00007f01b92407a8: 0000000000019000 0000000000000000 -0x00007f01b92407b8: 0000000000000000 00007f01b9240860 - -Instructions: (pc=0x00007f01b8795090) -0x00007f01b8794f90: f3 0f 1e fa 48 39 d1 0f 82 53 d9 fa ff 0f 1f 00 -0x00007f01b8794fa0: f3 0f 1e fa 48 c1 e2 02 c5 f9 6e c6 48 89 f8 c4 -0x00007f01b8794fb0: e2 7d 58 c0 eb 2a 66 2e 0f 1f 84 00 00 00 00 00 -0x00007f01b8794fc0: f3 0f 1e fa 48 39 d1 0f 82 23 d9 fa ff 0f 1f 00 -0x00007f01b8794fd0: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 -0x00007f01b8794fe0: 48 83 fa 20 0f 82 04 01 00 00 48 83 fa 40 77 77 -0x00007f01b8794ff0: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 66 90 -0x00007f01b8795000: f3 0f 1e fa c5 f8 77 48 89 d1 40 0f b6 c6 48 89 -0x00007f01b8795010: fa f3 aa 48 89 d0 c3 66 0f 1f 84 00 00 00 00 00 -0x00007f01b8795020: f3 0f 1e fa 48 39 d1 0f 82 c3 d8 fa ff 0f 1f 00 -0x00007f01b8795030: f3 0f 1e fa c5 f9 6e c6 48 89 f8 c4 e2 7d 78 c0 -0x00007f01b8795040: 48 83 fa 20 0f 82 a4 00 00 00 48 83 fa 40 77 0e -0x00007f01b8795050: c5 fe 7f 44 17 e0 c5 fe 7f 07 c5 f8 77 c3 48 81 -0x00007f01b8795060: fa 00 08 00 00 77 9d 48 81 fa 80 00 00 00 77 19 -0x00007f01b8795070: c5 fe 7f 07 c5 fe 7f 47 20 c5 fe 7f 44 17 e0 c5 -0x00007f01b8795080: fe 7f 44 17 c0 c5 f8 77 c3 48 8d 8f 80 00 00 00 -0x00007f01b8795090: c5 fe 7f 07 48 83 e1 80 c5 fe 7f 44 17 e0 c5 fe -0x00007f01b87950a0: 7f 47 20 c5 fe 7f 44 17 c0 c5 fe 7f 47 40 c5 fe -0x00007f01b87950b0: 7f 44 17 a0 c5 fe 7f 47 60 c5 fe 7f 44 17 80 48 -0x00007f01b87950c0: 01 fa 48 83 e2 80 48 39 d1 74 ba c5 fd 7f 01 c5 -0x00007f01b87950d0: fd 7f 41 20 c5 fd 7f 41 40 c5 fd 7f 41 60 48 81 -0x00007f01b87950e0: c1 80 00 00 00 48 39 ca 75 e1 c5 f8 77 c3 80 fa -0x00007f01b87950f0: 10 73 1c c4 e1 f9 7e c1 80 fa 08 73 20 80 fa 04 -0x00007f01b8795100: 73 27 80 fa 01 77 2c 72 02 88 0f c5 f8 77 c3 c5 -0x00007f01b8795110: fa 7f 44 17 f0 c5 fa 7f 07 c5 f8 77 c3 48 89 4c -0x00007f01b8795120: 17 f8 48 89 0f c5 f8 77 c3 89 4c 17 fc 89 0f c5 -0x00007f01b8795130: f8 77 c3 66 89 4c 17 fe 66 89 0f c5 f8 77 c3 90 -0x00007f01b8795140: f3 0f 1e fa 48 c1 e2 02 48 83 fa 20 0f 82 3e 01 -0x00007f01b8795150: 00 00 c5 fe 6f 16 c5 ed 76 17 c5 fd d7 c2 83 e8 -0x00007f01b8795160: ff 0f 85 e9 00 00 00 48 83 fa 40 0f 86 c0 00 00 -0x00007f01b8795170: 00 c5 fd 76 c0 48 81 fa 00 01 00 00 0f 87 9e 01 -0x00007f01b8795180: 00 00 48 81 fa 80 00 00 00 0f 82 28 02 00 00 c5 - - -Stack slot to memory mapping: -stack at sp + 0 slots: 0x00007f01b4a8fe8d: Java_com_sun_jna_Native_setMemory+0x00000000000000bd in /root/.cache/JNA/temp/jna8092103267992246554.tmp at 0x00007f01b4a89000 -stack at sp + 1 slots: {method} {0x00007f01b6799628} 'setMemory' '(Lcom/sun/jna/Pointer;JJJB)V' in 'com/sun/jna/Native' -stack at sp + 2 slots: 0x00007f01b0028b10 points into unknown readable memory: 80 48 58 b8 01 7f 00 00 -stack at sp + 3 slots: 0x0 is NULL -stack at sp + 4 slots: 0x0000000000019000 is an unknown value -stack at sp + 5 slots: 0x0 is NULL -stack at sp + 6 slots: 0x0 is NULL -stack at sp + 7 slots: 0x00007f01b9240860 is pointing into the stack for thread: 0x00007f01b0028800 - - ---------------- P R O C E S S --------------- - -Threads class SMR info: -_java_thread_list=0x00007f01b01d8a40, length=12, elements={ -0x00007f01b0028800, 0x00007f01b00a2000, 0x00007f01b00a3800, 0x00007f01b00ad000, -0x00007f01b00af000, 0x00007f01b00b1000, 0x00007f01b00b3000, 0x00007f01b00b5000, -0x00007f01b00ef800, 0x00007f01b00f4800, 0x00007f01b0188800, 0x00007f01b01d7800 -} - -Java Threads: ( => current thread ) -=>0x00007f01b0028800 JavaThread "main" [_thread_in_native, id=114, stack(0x00007f01b9143000,0x00007f01b9244000)] - 0x00007f01b00a2000 JavaThread "Reference Handler" daemon [_thread_blocked, id=120, stack(0x00007f01b5ed6000,0x00007f01b5fd7000)] - 0x00007f01b00a3800 JavaThread "Finalizer" daemon [_thread_blocked, id=123, stack(0x00007f01b5dd5000,0x00007f01b5ed6000)] - 0x00007f01b00ad000 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=125, stack(0x00007f01b55e0000,0x00007f01b56e1000)] - 0x00007f01b00af000 JavaThread "Service Thread" daemon [_thread_blocked, id=128, stack(0x00007f01b54df000,0x00007f01b55e0000)] - 0x00007f01b00b1000 JavaThread "C2 CompilerThread0" daemon [_thread_blocked, id=130, stack(0x00007f01b53de000,0x00007f01b54df000)] - 0x00007f01b00b3000 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=133, stack(0x00007f01b52dd000,0x00007f01b53de000)] - 0x00007f01b00b5000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=138, stack(0x00007f01b51dc000,0x00007f01b52dd000)] - 0x00007f01b00ef800 JavaThread "Notification Thread" daemon [_thread_blocked, id=140, stack(0x00007f01b50db000,0x00007f01b51dc000)] - 0x00007f01b00f4800 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=146, stack(0x00007f01b4ed8000,0x00007f01b4fd9000)] - 0x00007f01b0188800 JavaThread "surefire-forkedjvm-command-thread" daemon [_thread_in_native, id=150, stack(0x00007f01b4dc0000,0x00007f01b4ec1000)] - 0x00007f01b01d7800 JavaThread "surefire-forkedjvm-ping-30s" daemon [_thread_blocked, id=153, stack(0x00007f01b4cb2000,0x00007f01b4db3000)] - -Other Threads: - 0x00007f01b009e800 VMThread "VM Thread" [stack: 0x00007f01b5fd9000,0x00007f01b60d9000] [id=117] - 0x00007f01b00f2000 WatcherThread [stack: 0x00007f01b4fdb000,0x00007f01b50db000] [id=141] - -Threads with active compile tasks: - -VM state:not at safepoint (normal execution) - -VM Mutex/Monitor currently owned by a thread: None - -Heap address: 0x00000000e0c00000, size: 500 MB, Compressed Oops mode: 32-bit -Narrow klass base: 0x0000000800000000, Narrow klass shift: 3 -Compressed class space size: 1073741824 Address: 0x0000000800b11000 - -Heap: - def new generation total 9792K, used 7590K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) - eden space 8704K, 74% used [0x00000000e0c00000, 0x00000000e1259a00, 0x00000000e1480000) - from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) - to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) - tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) - the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea690, 0x00000000eb3ea800, 0x00000000ec800000) - Metaspace used 4992K, capacity 7071K, committed 7296K, reserved 1056768K - class space used 637K, capacity 881K, committed 896K, reserved 1048576K - -Card table byte_map: [0x00007f01b6a5c000,0x00007f01b6b57000] _byte_map_base: 0x00007f01b6356000 - -Polling page: 0x00007f01b9259000 - -Metaspace: - -Usage: - Non-class: 6.04 MB capacity, 4.25 MB ( 70%) used, 1.76 MB ( 29%) free+waste, 30.81 KB ( <1%) overhead. - Class: 881.00 KB capacity, 637.47 KB ( 72%) used, 226.47 KB ( 26%) free+waste, 17.06 KB ( 2%) overhead. - Both: 6.91 MB capacity, 4.88 MB ( 71%) used, 1.98 MB ( 29%) free+waste, 47.88 KB ( <1%) overhead. - -Virtual space: - Non-class space: 8.00 MB reserved, 6.25 MB ( 78%) committed - Class space: 1.00 GB reserved, 896.00 KB ( <1%) committed - Both: 1.01 GB reserved, 7.12 MB ( <1%) committed - -Chunk freelists: - Non-Class: 62.00 KB - Class: 11.00 KB - Both: 73.00 KB - -MaxMetaspaceSize: unlimited -CompressedClassSpaceSize: 1.00 GB - -CodeHeap 'non-profiled nmethods': size=120036Kb used=270Kb max_used=270Kb free=119765Kb - bounds [0x00007f01a019c000, 0x00007f01a040c000, 0x00007f01a76d5000] -CodeHeap 'profiled nmethods': size=120032Kb used=1585Kb max_used=1585Kb free=118446Kb - bounds [0x00007f0198c64000, 0x00007f0198ed4000, 0x00007f01a019c000] -CodeHeap 'non-nmethods': size=5692Kb used=1156Kb max_used=1171Kb free=4535Kb - bounds [0x00007f01986d5000, 0x00007f0198945000, 0x00007f0198c64000] - total_blobs=1295 nmethods=879 adapters=332 - compilation: enabled - stopped_count=0, restarted_count=0 - full_count=0 - -Compilation events (20 events): -Event: 10.134 Thread 0x00007f01b00b3000 876 3 java.util.zip.ZipEntry:: (74 bytes) -Event: 10.135 Thread 0x00007f01b00b3000 nmethod 876 0x00007f0198ded390 code [0x00007f0198ded580, 0x00007f0198dedaf0] -Event: 10.135 Thread 0x00007f01b00b3000 873 3 java.util.jar.JarFile$1::apply (13 bytes) -Event: 10.138 Thread 0x00007f01b00b3000 nmethod 873 0x00007f0198dedd10 code [0x00007f0198dedec0, 0x00007f0198dee1a0] -Event: 10.138 Thread 0x00007f01b00b3000 874 3 java.util.jar.JarFile$JarFileEntry:: (16 bytes) -Event: 10.138 Thread 0x00007f01b00b3000 nmethod 874 0x00007f0198dee310 code [0x00007f0198dee4c0, 0x00007f0198dee6c0] -Event: 10.141 Thread 0x00007f01b00b1000 877 4 java.lang.StringBuilder:: (7 bytes) -Event: 10.144 Thread 0x00007f01b00b1000 nmethod 877 0x00007f01a01df010 code [0x00007f01a01df180, 0x00007f01a01df298] -Event: 10.151 Thread 0x00007f01b00b3000 878 ! 3 java.util.zip.ZipFile$ZipFileInflaterInputStream::close (67 bytes) -Event: 10.152 Thread 0x00007f01b00b3000 nmethod 878 0x00007f0198dee790 code [0x00007f0198dee980, 0x00007f0198def090] -Event: 10.158 Thread 0x00007f01b00b3000 879 3 java.util.ArrayDeque::add (7 bytes) -Event: 10.159 Thread 0x00007f01b00b3000 nmethod 879 0x00007f0198def390 code [0x00007f0198def520, 0x00007f0198def680] -Event: 10.166 Thread 0x00007f01b00b3000 880 3 java.util.zip.ZipFile$InflaterCleanupAction::run (12 bytes) -Event: 10.167 Thread 0x00007f01b00b3000 nmethod 880 0x00007f0198def710 code [0x00007f0198def8a0, 0x00007f0198defa00] -Event: 10.167 Thread 0x00007f01b00b3000 881 ! 3 java.util.zip.Inflater::reset (64 bytes) -Event: 10.167 Thread 0x00007f01b00b3000 nmethod 881 0x00007f0198defb10 code [0x00007f0198defcc0, 0x00007f0198df00b0] -Event: 10.179 Thread 0x00007f01b00b1000 883 4 java.lang.Object:: (1 bytes) -Event: 10.180 Thread 0x00007f01b00b1000 nmethod 883 0x00007f01a01df710 code [0x00007f01a01df880, 0x00007f01a01df938] -Event: 10.185 Thread 0x00007f01b00b3000 884 3 sun.net.www.protocol.jar.Handler::checkNestedProtocol (18 bytes) -Event: 10.186 Thread 0x00007f01b00b3000 nmethod 884 0x00007f0198df0290 code [0x00007f0198df0440, 0x00007f0198df0620] - -GC Heap History (2 events): -Event: 5.704 GC heap before -{Heap before GC invocations=0 (full 0): - def new generation total 9792K, used 8704K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) - eden space 8704K, 100% used [0x00000000e0c00000, 0x00000000e1480000, 0x00000000e1480000) - from space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) - to space 1088K, 0% used [0x00000000e1590000, 0x00000000e1590000, 0x00000000e16a0000) - tenured generation total 21888K, used 0K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) - the space 21888K, 0% used [0x00000000eb2a0000, 0x00000000eb2a0000, 0x00000000eb2a0200, 0x00000000ec800000) - Metaspace used 3047K, capacity 5805K, committed 6016K, reserved 1056768K - class space used 361K, capacity 627K, committed 640K, reserved 1048576K -} -Event: 5.793 GC heap after -{Heap after GC invocations=1 (full 0): - def new generation total 9792K, used 1088K [0x00000000e0c00000, 0x00000000e16a0000, 0x00000000eb2a0000) - eden space 8704K, 0% used [0x00000000e0c00000, 0x00000000e0c00000, 0x00000000e1480000) - from space 1088K, 100% used [0x00000000e1590000, 0x00000000e16a0000, 0x00000000e16a0000) - to space 1088K, 0% used [0x00000000e1480000, 0x00000000e1480000, 0x00000000e1590000) - tenured generation total 21888K, used 1321K [0x00000000eb2a0000, 0x00000000ec800000, 0x0000000100000000) - the space 21888K, 6% used [0x00000000eb2a0000, 0x00000000eb3ea690, 0x00000000eb3ea800, 0x00000000ec800000) - Metaspace used 3047K, capacity 5805K, committed 6016K, reserved 1056768K - class space used 361K, capacity 627K, committed 640K, reserved 1048576K -} - -Deoptimization events (16 events): -Event: 0.632 Thread 0x00007f01b0028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f01a01a0598 relative=0x00000000000001d8 -Event: 0.632 Thread 0x00007f01b0028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f01a01a0598 method=java.lang.String.hashCode()I @ 42 c2 -Event: 0.632 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f01a01a0598 sp=0x00007f01b9241330 -Event: 0.632 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871de25 sp=0x00007f01b92412e8 mode 2 -Event: 2.512 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cb6484 sp=0x00007f01b9240b90 -Event: 2.513 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b9240008 mode 0 -Event: 2.799 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cc1322 sp=0x00007f01b92411c0 -Event: 2.799 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b9240648 mode 0 -Event: 3.948 Thread 0x00007f01b0028800 Uncommon trap: trap_request=0xffffff45 fr.pc=0x00007f01a01a2068 relative=0x0000000000000068 -Event: 3.948 Thread 0x00007f01b0028800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00007f01a01a2068 method=java.lang.String.isLatin1()Z @ 10 c2 -Event: 3.948 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f01a01a2068 sp=0x00007f01b92418d0 -Event: 3.948 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871de25 sp=0x00007f01b9241880 mode 2 -Event: 6.052 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cca4e8 sp=0x00007f01b9240f60 -Event: 6.052 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b92403d0 mode 0 -Event: 9.484 Thread 0x00007f01b0028800 DEOPT PACKING pc=0x00007f0198cc64c5 sp=0x00007f01b923f9a0 -Event: 9.485 Thread 0x00007f01b0028800 DEOPT UNPACKING pc=0x00007f019871e33a sp=0x00007f01b923ee20 mode 0 - -Classes unloaded (0 events): -No events - -Classes redefined (0 events): -No events - -Internal exceptions (17 events): -Event: 1.373 Thread 0x00007f01b0028800 Exception (0x00000000e0dc59d8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 3.603 Thread 0x00007f01b0028800 Exception (0x00000000e1209430) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 4.004 Thread 0x00007f01b0028800 Exception (0x00000000e12808b8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 4.253 Thread 0x00007f01b0028800 Exception (0x00000000e12d4648) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 4.809 Thread 0x00007f01b0028800 Exception (0x00000000e1346010) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 4.925 Thread 0x00007f01b0028800 Exception (0x00000000e137ad28) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 4.993 Thread 0x00007f01b0028800 Exception (0x00000000e139e938) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 5.012 Thread 0x00007f01b0028800 Exception (0x00000000e13a8b18) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 5.041 Thread 0x00007f01b0028800 Exception (0x00000000e13b69e8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] -Event: 5.141 Thread 0x00007f01b0028800 Exception (0x00000000e13ebf18) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 5.852 Thread 0x00007f01b0028800 Exception (0x00000000e0c24ce8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.079 Thread 0x00007f01b0028800 Exception (0x00000000e0c8faf8) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.396 Thread 0x00007f01b0028800 Exception (0x00000000e0cfcd80) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.442 Thread 0x00007f01b0028800 Exception (0x00000000e0d15098) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 6.449 Thread 0x00007f01b0028800 Exception (0x00000000e0d17a88) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 832] -Event: 8.061 Thread 0x00007f01b0028800 Exception (0x00000000e0f73890) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] -Event: 8.061 Thread 0x00007f01b0028800 Exception (0x00000000e0f76c98) -thrown [open/src/hotspot/share/interpreter/linkResolver.cpp, line 766] - -Events (20 events): -Event: 10.009 loading class sun/security/provider/ByteArrayAccess -Event: 10.009 loading class sun/security/provider/ByteArrayAccess done -Event: 10.010 loading class java/io/DeleteOnExitHook -Event: 10.010 loading class java/io/DeleteOnExitHook done -Event: 10.010 loading class java/io/DeleteOnExitHook$1 -Event: 10.011 loading class java/io/DeleteOnExitHook$1 done -Event: 10.043 loading class java/io/FileOutputStream$1 -Event: 10.043 loading class java/io/FileOutputStream$1 done -Event: 10.046 Loaded shared library /root/.cache/JNA/temp/jna8092103267992246554.tmp -Event: 10.046 loading class java/nio/ShortBuffer -Event: 10.048 loading class java/nio/ShortBuffer done -Event: 10.051 loading class java/nio/FloatBuffer -Event: 10.051 loading class java/nio/FloatBuffer done -Event: 10.054 loading class java/nio/DoubleBuffer -Event: 10.057 loading class java/nio/DoubleBuffer done -Event: 10.132 Executing VM operation: HandshakeAllThreads -Event: 10.132 Executing VM operation: HandshakeAllThreads done -Event: 10.168 Loaded shared library /usr/java/openjdk-14/lib/libzip.so -Event: 10.207 Executing VM operation: HandshakeAllThreads -Event: 10.210 Executing VM operation: HandshakeAllThreads done - - -Dynamic libraries: -e0c00000-e16a0000 rw-p 00000000 00:00 0 -e16a0000-eb2a0000 ---p 00000000 00:00 0 -eb2a0000-ec800000 rw-p 00000000 00:00 0 -ec800000-100000000 ---p 00000000 00:00 0 -800000000-800003000 rwxp 00001000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -800003000-8003e4000 rw-p 00004000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -8003e4000-800b10000 r--p 003e5000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -800b10000-800b11000 rw-p 00b11000 08:01 3160994 /usr/java/openjdk-14/lib/server/classes.jsa -800b11000-800bf1000 rw-p 00000000 00:00 0 -800bf1000-840b11000 ---p 00000000 00:00 0 -56394c07f000-56394c080000 r-xp 00000000 08:01 3160482 /usr/java/openjdk-14/bin/java -56394c081000-56394c082000 r--p 00001000 08:01 3160482 /usr/java/openjdk-14/bin/java -56394c082000-56394c083000 rw-p 00002000 08:01 3160482 /usr/java/openjdk-14/bin/java -56394c563000-56394c584000 rw-p 00000000 00:00 0 [heap] -7f017c000000-7f017c3ce000 rw-p 00000000 00:00 0 -7f017c3ce000-7f0180000000 ---p 00000000 00:00 0 -7f0180000000-7f01802f1000 rw-p 00000000 00:00 0 -7f01802f1000-7f0184000000 ---p 00000000 00:00 0 -7f0184000000-7f0184021000 rw-p 00000000 00:00 0 -7f0184021000-7f0188000000 ---p 00000000 00:00 0 -7f0188000000-7f0188021000 rw-p 00000000 00:00 0 -7f0188021000-7f018c000000 ---p 00000000 00:00 0 -7f018c000000-7f018c021000 rw-p 00000000 00:00 0 -7f018c021000-7f0190000000 ---p 00000000 00:00 0 -7f0190000000-7f0190021000 rw-p 00000000 00:00 0 -7f0190021000-7f0194000000 ---p 00000000 00:00 0 -7f0194000000-7f0194021000 rw-p 00000000 00:00 0 -7f0194021000-7f0198000000 ---p 00000000 00:00 0 -7f01986d5000-7f0198945000 rwxp 00000000 00:00 0 -7f0198945000-7f0198c64000 ---p 00000000 00:00 0 -7f0198c64000-7f0198ed4000 rwxp 00000000 00:00 0 -7f0198ed4000-7f01a019c000 ---p 00000000 00:00 0 -7f01a019c000-7f01a040c000 rwxp 00000000 00:00 0 -7f01a040c000-7f01a76d5000 ---p 00000000 00:00 0 -7f01a76d5000-7f01b0000000 r--s 00000000 08:01 3160985 /usr/java/openjdk-14/lib/modules -7f01b0000000-7f01b04f4000 rw-p 00000000 00:00 0 -7f01b04f4000-7f01b4000000 ---p 00000000 00:00 0 -7f01b45cb000-7f01b4a89000 rw-p 00000000 00:00 0 -7f01b4a89000-7f01b4aa1000 r-xp 00000000 08:01 3163771 /root/.cache/JNA/temp/jna8092103267992246554.tmp (deleted) -7f01b4aa1000-7f01b4ca1000 ---p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna8092103267992246554.tmp (deleted) -7f01b4ca1000-7f01b4ca2000 rw-p 00018000 08:01 3163771 /root/.cache/JNA/temp/jna8092103267992246554.tmp (deleted) -7f01b4ca2000-7f01b4caf000 r-xp 00000000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so -7f01b4caf000-7f01b4cb1000 r--p 0000c000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so -7f01b4cb1000-7f01b4cb2000 rw-p 0000e000 08:01 3160983 /usr/java/openjdk-14/lib/libverify.so -7f01b4cb2000-7f01b4cb6000 ---p 00000000 00:00 0 -7f01b4cb6000-7f01b4db3000 rw-p 00000000 00:00 0 -7f01b4db3000-7f01b4db8000 r-xp 00000000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so -7f01b4db8000-7f01b4db9000 r--p 00004000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so -7f01b4db9000-7f01b4dba000 rw-p 00005000 08:01 3160973 /usr/java/openjdk-14/lib/libmanagement_ext.so -7f01b4dba000-7f01b4dbe000 r-xp 00000000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so -7f01b4dbe000-7f01b4dbf000 r--p 00003000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so -7f01b4dbf000-7f01b4dc0000 rw-p 00004000 08:01 3160971 /usr/java/openjdk-14/lib/libmanagement.so -7f01b4dc0000-7f01b4dc4000 ---p 00000000 00:00 0 -7f01b4dc4000-7f01b4ec1000 rw-p 00000000 00:00 0 -7f01b4ec1000-7f01b4ed6000 r-xp 00000000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so -7f01b4ed6000-7f01b4ed7000 r--p 00014000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so -7f01b4ed7000-7f01b4ed8000 rw-p 00015000 08:01 3160975 /usr/java/openjdk-14/lib/libnet.so -7f01b4ed8000-7f01b4edc000 ---p 00000000 00:00 0 -7f01b4edc000-7f01b4fd9000 rw-p 00000000 00:00 0 -7f01b4fd9000-7f01b4fda000 ---p 00000000 00:00 0 -7f01b4fda000-7f01b50db000 rw-p 00000000 00:00 0 -7f01b50db000-7f01b50df000 ---p 00000000 00:00 0 -7f01b50df000-7f01b51dc000 rw-p 00000000 00:00 0 -7f01b51dc000-7f01b51e0000 ---p 00000000 00:00 0 -7f01b51e0000-7f01b52dd000 rw-p 00000000 00:00 0 -7f01b52dd000-7f01b52e1000 ---p 00000000 00:00 0 -7f01b52e1000-7f01b53de000 rw-p 00000000 00:00 0 -7f01b53de000-7f01b53e2000 ---p 00000000 00:00 0 -7f01b53e2000-7f01b54df000 rw-p 00000000 00:00 0 -7f01b54df000-7f01b54e3000 ---p 00000000 00:00 0 -7f01b54e3000-7f01b55e0000 rw-p 00000000 00:00 0 -7f01b55e0000-7f01b55e4000 ---p 00000000 00:00 0 -7f01b55e4000-7f01b56e1000 rw-p 00000000 00:00 0 -7f01b56e1000-7f01b5734000 r--p 00000000 08:01 3154692 /usr/lib/locale/C.utf8/LC_CTYPE -7f01b5734000-7f01b5dd5000 r--p 00000000 08:01 3154691 /usr/lib/locale/C.utf8/LC_COLLATE -7f01b5dd5000-7f01b5dd9000 ---p 00000000 00:00 0 -7f01b5dd9000-7f01b5ed6000 rw-p 00000000 00:00 0 -7f01b5ed6000-7f01b5eda000 ---p 00000000 00:00 0 -7f01b5eda000-7f01b5fd7000 rw-p 00000000 00:00 0 -7f01b5fd7000-7f01b5fd8000 ---p 00000000 00:00 0 -7f01b5fd8000-7f01b67f5000 rw-p 00000000 00:00 0 -7f01b67f5000-7f01b69b5000 ---p 00000000 00:00 0 -7f01b69b5000-7f01b69c0000 rw-p 00000000 00:00 0 -7f01b69c0000-7f01b6a5c000 ---p 00000000 00:00 0 -7f01b6a5c000-7f01b6a62000 rw-p 00000000 00:00 0 -7f01b6a62000-7f01b6aaf000 ---p 00000000 00:00 0 -7f01b6aaf000-7f01b6aba000 rw-p 00000000 00:00 0 -7f01b6aba000-7f01b6b56000 ---p 00000000 00:00 0 -7f01b6b56000-7f01b6b5c000 rw-p 00000000 00:00 0 -7f01b6b5c000-7f01b6c42000 ---p 00000000 00:00 0 -7f01b6c42000-7f01b6c47000 rw-p 00000000 00:00 0 -7f01b6c47000-7f01b6d2d000 ---p 00000000 00:00 0 -7f01b6d2d000-7f01b6d38000 r-xp 00000000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f01b6d38000-7f01b6f37000 ---p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f01b6f37000-7f01b6f38000 r--p 0000a000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f01b6f38000-7f01b6f39000 rw-p 0000b000 08:01 3155554 /usr/lib64/libnss_files-2.28.so -7f01b6f39000-7f01b6f3f000 rw-p 00000000 00:00 0 -7f01b6f3f000-7f01b6f46000 r-xp 00000000 08:01 3155596 /usr/lib64/librt-2.28.so -7f01b6f46000-7f01b7146000 ---p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so -7f01b7146000-7f01b7147000 r--p 00007000 08:01 3155596 /usr/lib64/librt-2.28.so -7f01b7147000-7f01b7148000 rw-p 00008000 08:01 3155596 /usr/lib64/librt-2.28.so -7f01b7148000-7f01b72c9000 r-xp 00000000 08:01 3155521 /usr/lib64/libm-2.28.so -7f01b72c9000-7f01b74c8000 ---p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so -7f01b74c8000-7f01b74c9000 r--p 00180000 08:01 3155521 /usr/lib64/libm-2.28.so -7f01b74c9000-7f01b74ca000 rw-p 00181000 08:01 3155521 /usr/lib64/libm-2.28.so -7f01b74ca000-7f01b84d9000 r-xp 00000000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f01b84d9000-7f01b84da000 ---p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f01b84da000-7f01b857e000 r--p 0100f000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f01b857e000-7f01b85b6000 rw-p 010b3000 08:01 3160996 /usr/java/openjdk-14/lib/server/libjvm.so -7f01b85b6000-7f01b8637000 rw-p 00000000 00:00 0 -7f01b8637000-7f01b87f0000 r-xp 00000000 08:01 3155424 /usr/lib64/libc-2.28.so -7f01b87f0000-7f01b89ef000 ---p 001b9000 08:01 3155424 /usr/lib64/libc-2.28.so -7f01b89ef000-7f01b89f3000 r--p 001b8000 08:01 3155424 /usr/lib64/libc-2.28.so -7f01b89f3000-7f01b89f5000 rw-p 001bc000 08:01 3155424 /usr/lib64/libc-2.28.so -7f01b89f5000-7f01b89f9000 rw-p 00000000 00:00 0 -7f01b89f9000-7f01b89fc000 r-xp 00000000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f01b89fc000-7f01b8bfb000 ---p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f01b8bfb000-7f01b8bfc000 r--p 00002000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f01b8bfc000-7f01b8bfd000 rw-p 00003000 08:01 3155440 /usr/lib64/libdl-2.28.so -7f01b8bfd000-7f01b8c18000 r-xp 00000000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f01b8c18000-7f01b8e17000 ---p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f01b8e17000-7f01b8e18000 r--p 0001a000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f01b8e18000-7f01b8e19000 rw-p 0001b000 08:01 3155583 /usr/lib64/libpthread-2.28.so -7f01b8e19000-7f01b8e1d000 rw-p 00000000 00:00 0 -7f01b8e1d000-7f01b8e33000 r-xp 00000000 08:01 3155650 /usr/lib64/libz.so.1.2.11 -7f01b8e33000-7f01b9032000 ---p 00016000 08:01 3155650 /usr/lib64/libz.so.1.2.11 -7f01b9032000-7f01b9033000 r--p 00015000 08:01 3155650 /usr/lib64/libz.so.1.2.11 -7f01b9033000-7f01b9034000 rw-p 00000000 00:00 0 -7f01b9034000-7f01b905d000 r-xp 00000000 08:01 3155395 /usr/lib64/ld-2.28.so -7f01b9061000-7f01b9072000 r-xp 00000000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f01b9072000-7f01b9073000 ---p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f01b9073000-7f01b9074000 r--p 00011000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f01b9074000-7f01b9075000 rw-p 00012000 08:01 3160976 /usr/java/openjdk-14/lib/libnio.so -7f01b9075000-7f01b9076000 r--p 00000000 08:01 3154699 /usr/lib/locale/C.utf8/LC_NUMERIC -7f01b9076000-7f01b9077000 r--p 00000000 08:01 3154702 /usr/lib/locale/C.utf8/LC_TIME -7f01b9077000-7f01b9078000 r--p 00000000 08:01 3154697 /usr/lib/locale/C.utf8/LC_MONETARY -7f01b9078000-7f01b9079000 r--p 00000000 08:01 3154696 /usr/lib/locale/C.utf8/LC_MESSAGES/SYS_LC_MESSAGES -7f01b9079000-7f01b907a000 r--p 00000000 08:01 3154700 /usr/lib/locale/C.utf8/LC_PAPER -7f01b907a000-7f01b907b000 r--p 00000000 08:01 3154698 /usr/lib/locale/C.utf8/LC_NAME -7f01b907b000-7f01b907c000 r--p 00000000 08:01 3154690 /usr/lib/locale/C.utf8/LC_ADDRESS -7f01b907c000-7f01b907d000 r--p 00000000 08:01 3154701 /usr/lib/locale/C.utf8/LC_TELEPHONE -7f01b907d000-7f01b907e000 r--p 00000000 08:01 3154694 /usr/lib/locale/C.utf8/LC_MEASUREMENT -7f01b907e000-7f01b9085000 r--s 00000000 08:01 3155357 /usr/lib64/gconv/gconv-modules.cache -7f01b9085000-7f01b9086000 r--p 00000000 08:01 3154693 /usr/lib/locale/C.utf8/LC_IDENTIFICATION -7f01b9086000-7f01b90a0000 r--p 00000000 08:01 3154703 /usr/lib/locale/locale-archive -7f01b90a0000-7f01b90e6000 rw-p 00000000 00:00 0 -7f01b90e6000-7f01b90ed000 ---p 00000000 00:00 0 -7f01b90ed000-7f01b90f4000 r-xp 00000000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so -7f01b90f4000-7f01b90f5000 r--p 00006000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so -7f01b90f5000-7f01b90f6000 rw-p 00007000 08:01 3160984 /usr/java/openjdk-14/lib/libzip.so -7f01b90f6000-7f01b911a000 r-xp 00000000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so -7f01b911a000-7f01b911b000 r--p 00023000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so -7f01b911b000-7f01b911d000 rw-p 00024000 08:01 3160962 /usr/java/openjdk-14/lib/libjava.so -7f01b911d000-7f01b9125000 rw-s 00000000 08:01 3163742 /tmp/hsperfdata_root/98 -7f01b9125000-7f01b9140000 r-xp 00000000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so -7f01b9140000-7f01b9142000 r--p 0001a000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so -7f01b9142000-7f01b9143000 rw-p 0001c000 08:01 3160966 /usr/java/openjdk-14/lib/libjimage.so -7f01b9143000-7f01b9147000 ---p 00000000 00:00 0 -7f01b9147000-7f01b9246000 rw-p 00000000 00:00 0 -7f01b9246000-7f01b9254000 r-xp 00000000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f01b9254000-7f01b9255000 ---p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f01b9255000-7f01b9256000 r--p 0000e000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f01b9256000-7f01b9257000 rw-p 0000f000 08:01 3160967 /usr/java/openjdk-14/lib/libjli.so -7f01b9257000-7f01b9259000 rw-p 00000000 00:00 0 -7f01b9259000-7f01b925a000 ---p 00000000 00:00 0 -7f01b925a000-7f01b925b000 r--p 00000000 00:00 0 -7f01b925b000-7f01b925c000 ---p 00000000 00:00 0 -7f01b925c000-7f01b925d000 r--p 00028000 08:01 3155395 /usr/lib64/ld-2.28.so -7f01b925d000-7f01b925e000 rw-p 00029000 08:01 3155395 /usr/lib64/ld-2.28.so -7f01b925e000-7f01b925f000 rw-p 00000000 00:00 0 -7fff92d75000-7fff92d96000 rw-p 00000000 00:00 0 [stack] -7fff92da2000-7fff92da5000 r--p 00000000 00:00 0 [vvar] -7fff92da5000-7fff92da7000 r-xp 00000000 00:00 0 [vdso] -ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] - - -VM Arguments: -java_command: /project/java-native/target/surefire/surefirebooter255261521587421006.jar /project/java-native/target/surefire 2020-10-01T00-29-55_633-jvmRun3 surefire15563279322398545368tmp surefire_13579138375161683305tmp -java_class_path (initial): /project/java-native/target/surefire/surefirebooter255261521587421006.jar -Launcher Type: SUN_STANDARD - -[Global flags] - intx CICompilerCount = 2 {product} {ergonomic} - size_t InitialHeapSize = 33554432 {product} {ergonomic} - size_t MaxHeapSize = 524288000 {product} {ergonomic} - size_t MaxNewSize = 174718976 {product} {ergonomic} - size_t MinHeapDeltaBytes = 196608 {product} {ergonomic} - size_t MinHeapSize = 8388608 {product} {ergonomic} - size_t NewSize = 11141120 {product} {ergonomic} - uintx NonNMethodCodeHeapSize = 5826188 {pd product} {ergonomic} - uintx NonProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} - size_t OldSize = 22413312 {product} {ergonomic} - uintx ProfiledCodeHeapSize = 122916026 {pd product} {ergonomic} - uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} - bool SegmentedCodeCache = true {product} {ergonomic} - size_t SoftMaxHeapSize = 524288000 {manageable} {ergonomic} - bool UseCompressedClassPointers = true {lp64_product} {ergonomic} - bool UseCompressedOops = true {lp64_product} {ergonomic} - bool UseSerialGC = true {product} {ergonomic} - -Logging: -Log output configuration: - #0: stdout all=warning uptime,level,tags - #1: stderr all=off uptime,level,tags - -Environment Variables: -JAVA_HOME=/usr/java/openjdk-14 -PATH=/usr/java/openjdk-14/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin - -Signal Handlers: -SIGSEGV: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGBUS: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGFPE: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGPIPE: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGXFSZ: [libjvm.so+0xb1bca0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGILL: [libjvm.so+0xd30e60], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGUSR2: [libjvm.so+0xb1bb30], sa_mask[0]=00100000000000000000000000000000, sa_flags=SA_RESTART|SA_SIGINFO -SIGHUP: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGINT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGTERM: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO -SIGQUIT: [libjvm.so+0xb1c2a0], sa_mask[0]=11111111011111111101111111111110, sa_flags=SA_RESTART|SA_SIGINFO - - ---------------- S Y S T E M --------------- - -OS:Oracle Linux Server release 8.2 -uname:Linux 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 -OS uptime: 0 days 14:09 hours -libc:glibc 2.28 NPTL 2.28 -rlimit: STACK 8192k, CORE infinity, NPROC infinity, NOFILE 1048576, AS infinity, DATA infinity, FSIZE infinity -load average:3.31 1.71 0.93 - -/proc/meminfo: -MemTotal: 2045412 kB -MemFree: 1093300 kB -MemAvailable: 1371360 kB -Buffers: 84560 kB -Cached: 472628 kB -SwapCached: 0 kB -Active: 588744 kB -Inactive: 294936 kB -Active(anon): 402104 kB -Inactive(anon): 198736 kB -Active(file): 186640 kB -Inactive(file): 96200 kB -Unevictable: 0 kB -Mlocked: 0 kB -SwapTotal: 1415172 kB -SwapFree: 1415172 kB -Dirty: 676 kB -Writeback: 0 kB -AnonPages: 326512 kB -Mapped: 116960 kB -Shmem: 290620 kB -Slab: 42612 kB -SReclaimable: 27604 kB -SUnreclaim: 15008 kB -KernelStack: 4640 kB -PageTables: 2556 kB -NFS_Unstable: 0 kB -Bounce: 0 kB -WritebackTmp: 0 kB -CommitLimit: 2437876 kB -Committed_AS: 1765096 kB -VmallocTotal: 34359738367 kB -VmallocUsed: 0 kB -VmallocChunk: 0 kB -HugePages_Total: 0 -HugePages_Free: 0 -HugePages_Rsvd: 0 -HugePages_Surp: 0 -Hugepagesize: 2048 kB -DirectMap4k: 44992 kB -DirectMap2M: 2052096 kB - - -/proc/sys/kernel/threads-max (system-wide limit on the number of threads): -15537 - - -/proc/sys/vm/max_map_count (maximum number of memory map areas a process may have): -65530 - - -/proc/sys/kernel/pid_max (system-wide limit on number of process identifiers): -32768 - - - -container (cgroup) information: -container_type: cgroupv1 -cpu_cpuset_cpus: 0 -cpu_memory_nodes: 0 -active_processor_count: 1 -cpu_quota: no quota -cpu_period: 100000 -cpu_shares: no shares -memory_limit_in_bytes: unlimited -memory_and_swap_limit_in_bytes: unlimited -memory_soft_limit_in_bytes: unlimited -memory_usage_in_bytes: 348696576 -memory_max_usage_in_bytes: 387022848 - -KVM virtualization detected -Steal ticks since vm start: 0 -Steal ticks percentage since vm start: 0.000 - -CPU:total 1 (initial active 1) (1 cores per cpu, 1 threads per core) family 6 model 69 stepping 1, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, lzcnt, tsc, tscinvbit -CPU Model and flags from /proc/cpuinfo: -model name : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz -flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx rdtscp lm constant_tsc rep_good nopl xtopology nonstop_tsc cpuid tsc_known_freq pni pclmulqdq monitor ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase avx2 invpcid md_clear flush_l1d - -Memory: 4k page, physical 2045412k(1093300k free), swap 1415172k(1415172k free) - -vm_info: OpenJDK 64-Bit Server VM (14.0.2+12-46) for linux-amd64 JRE (14.0.2+12-46), built on Jul 8 2020 23:30:21 by "mach5one" with gcc 8.3.0 - -END. From 3dddb550b63ab5725ad0ac0d588dd7f55bb87772 Mon Sep 17 00:00:00 2001 From: psevestre Date: Thu, 1 Oct 2020 17:13:15 -0300 Subject: [PATCH 166/260] [BAEL-4204] JNA (#10113) * [BAEL-4203] JNA * [BAEL-4203] JNA --- {jni => java-native}/README.md | 0 java-native/pom.xml | 39 +++++++++++++++ .../com_baeldung_jni_ExampleObjectsJNI.cpp | 0 .../cpp/com_baeldung_jni_ExampleObjectsJNI.h | 0 .../com_baeldung_jni_ExampleParametersJNI.cpp | 0 .../com_baeldung_jni_ExampleParametersJNI.h | 0 .../cpp/com_baeldung_jni_HelloWorldJNI.cpp | 0 .../main/cpp/com_baeldung_jni_HelloWorldJNI.h | 0 .../src/main/cpp/generateNativeLib.bat | 0 .../src/main/cpp/generateNativeLib.sh | 0 .../src/main/cpp/generateNativeLibMac.sh | 0 .../src/main/java/com/baeldung/jna/CMath.java | 10 ++++ .../src/main/java/com/baeldung/jna/Main.java | 8 +++ .../main/java/com/baeldung/jna/NativeFS.java | 46 +++++++++++++++++ .../src/main/java/com/baeldung/jna/StdC.java | 17 +++++++ .../com/baeldung/jni/ExampleObjectsJNI.java | 0 .../baeldung/jni/ExampleParametersJNI.java | 0 .../java/com/baeldung/jni/HelloWorldJNI.java | 0 .../main/java/com/baeldung/jni/UserData.java | 0 .../src/main/resources/logback.xml | 0 .../java/com/baeldung/jna/CMathUnitTest.java | 18 +++++++ .../com/baeldung/jna/NativeFSUnitTest.java | 38 ++++++++++++++ .../java/com/baeldung/jna/StdCUnitTest.java | 47 ++++++++++++++++++ .../com/baeldung/jni/JNINativeManualTest.java | 0 jni/native/linux_x86_64/libnative.so | Bin 19856 -> 0 bytes jni/native/macos/libnative.dylib | Bin 23056 -> 0 bytes jni/pom.xml | 14 ------ pom.xml | 4 +- 28 files changed, 225 insertions(+), 16 deletions(-) rename {jni => java-native}/README.md (100%) create mode 100644 java-native/pom.xml rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp (100%) rename {jni => java-native}/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h (100%) rename {jni => java-native}/src/main/cpp/generateNativeLib.bat (100%) rename {jni => java-native}/src/main/cpp/generateNativeLib.sh (100%) mode change 100755 => 100644 rename {jni => java-native}/src/main/cpp/generateNativeLibMac.sh (100%) mode change 100755 => 100644 create mode 100644 java-native/src/main/java/com/baeldung/jna/CMath.java create mode 100644 java-native/src/main/java/com/baeldung/jna/Main.java create mode 100644 java-native/src/main/java/com/baeldung/jna/NativeFS.java create mode 100644 java-native/src/main/java/com/baeldung/jna/StdC.java rename {jni => java-native}/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java (100%) rename {jni => java-native}/src/main/java/com/baeldung/jni/ExampleParametersJNI.java (100%) rename {jni => java-native}/src/main/java/com/baeldung/jni/HelloWorldJNI.java (100%) rename {jni => java-native}/src/main/java/com/baeldung/jni/UserData.java (100%) rename {jni => java-native}/src/main/resources/logback.xml (100%) create mode 100644 java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java create mode 100644 java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java create mode 100644 java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java rename {jni => java-native}/src/test/java/com/baeldung/jni/JNINativeManualTest.java (100%) delete mode 100755 jni/native/linux_x86_64/libnative.so delete mode 100755 jni/native/macos/libnative.dylib delete mode 100644 jni/pom.xml diff --git a/jni/README.md b/java-native/README.md similarity index 100% rename from jni/README.md rename to java-native/README.md diff --git a/java-native/pom.xml b/java-native/pom.xml new file mode 100644 index 0000000000..29fc13b8d8 --- /dev/null +++ b/java-native/pom.xml @@ -0,0 +1,39 @@ + + + 4.0.0 + java-native + java-native + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + 5.6.0 + + + + + net.java.dev.jna + jna-platform + ${jna.version} + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + false + + + + + \ No newline at end of file diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp b/java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp rename to java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.cpp diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h b/java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h rename to java-native/src/main/cpp/com_baeldung_jni_ExampleObjectsJNI.h diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp b/java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp rename to java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.cpp diff --git a/jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h b/java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h rename to java-native/src/main/cpp/com_baeldung_jni_ExampleParametersJNI.h diff --git a/jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp b/java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp rename to java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.cpp diff --git a/jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h b/java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h similarity index 100% rename from jni/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h rename to java-native/src/main/cpp/com_baeldung_jni_HelloWorldJNI.h diff --git a/jni/src/main/cpp/generateNativeLib.bat b/java-native/src/main/cpp/generateNativeLib.bat similarity index 100% rename from jni/src/main/cpp/generateNativeLib.bat rename to java-native/src/main/cpp/generateNativeLib.bat diff --git a/jni/src/main/cpp/generateNativeLib.sh b/java-native/src/main/cpp/generateNativeLib.sh old mode 100755 new mode 100644 similarity index 100% rename from jni/src/main/cpp/generateNativeLib.sh rename to java-native/src/main/cpp/generateNativeLib.sh diff --git a/jni/src/main/cpp/generateNativeLibMac.sh b/java-native/src/main/cpp/generateNativeLibMac.sh old mode 100755 new mode 100644 similarity index 100% rename from jni/src/main/cpp/generateNativeLibMac.sh rename to java-native/src/main/cpp/generateNativeLibMac.sh diff --git a/java-native/src/main/java/com/baeldung/jna/CMath.java b/java-native/src/main/java/com/baeldung/jna/CMath.java new file mode 100644 index 0000000000..3ab5bdf48b --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/CMath.java @@ -0,0 +1,10 @@ +package com.baeldung.jna; + +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Platform; + +public interface CMath extends Library { + CMath INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", CMath.class); + double cosh(double value); +} diff --git a/java-native/src/main/java/com/baeldung/jna/Main.java b/java-native/src/main/java/com/baeldung/jna/Main.java new file mode 100644 index 0000000000..a81c878cde --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/Main.java @@ -0,0 +1,8 @@ +package com.baeldung.jna; + +public class Main { + + public static void main(String[] args) { + + } +} \ No newline at end of file diff --git a/java-native/src/main/java/com/baeldung/jna/NativeFS.java b/java-native/src/main/java/com/baeldung/jna/NativeFS.java new file mode 100644 index 0000000000..58f2bda035 --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/NativeFS.java @@ -0,0 +1,46 @@ +package com.baeldung.jna; + +import java.util.Collections; +import java.util.Map; + +import com.sun.jna.FunctionMapper; +import com.sun.jna.LastErrorException; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.NativeLong; +import com.sun.jna.Platform; +import com.sun.jna.Structure; +import com.sun.jna.Structure.FieldOrder; + +public interface NativeFS extends Library { + + FunctionMapper mapper = (library,method) -> { + if (Platform.isWindows()) { + return "_" + method.getName(); + } + else { + return "__x" + method.getName(); // On Linux, stat is actually _xstat + } + }; + + public NativeFS INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", + NativeFS.class, + Collections.singletonMap(Library.OPTION_FUNCTION_MAPPER, mapper)); + + int stat(String path, Stat stat) throws LastErrorException; + + @FieldOrder({"st_dev","st_ino","st_mode","st_nlink","st_uid","st_gid","st_rdev","st_size","st_atime","st_mtime","st_ctime"}) + public class Stat extends Structure { + public int st_dev; + public int st_ino; + public short st_mode; + public short st_nlink; + public short st_uid; + public short st_gid; + public int st_rdev; + public NativeLong st_size; + public NativeLong st_atime; + public NativeLong st_mtime; + public NativeLong st_ctime; + } +} diff --git a/java-native/src/main/java/com/baeldung/jna/StdC.java b/java-native/src/main/java/com/baeldung/jna/StdC.java new file mode 100644 index 0000000000..1adbe684c4 --- /dev/null +++ b/java-native/src/main/java/com/baeldung/jna/StdC.java @@ -0,0 +1,17 @@ +package com.baeldung.jna; + +import com.sun.jna.LastErrorException; +import com.sun.jna.Library; +import com.sun.jna.Native; +import com.sun.jna.Platform; +import com.sun.jna.Pointer; + +public interface StdC extends Library { + StdC INSTANCE = Native.load(Platform.isWindows() ? "msvcrt" : "c", StdC.class ); + Pointer malloc(long n); + void free(Pointer p); + Pointer memset(Pointer p, int c, long n); + int open(String path, int flags) throws LastErrorException; + int close(int fd) throws LastErrorException; +} + diff --git a/jni/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java b/java-native/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java rename to java-native/src/main/java/com/baeldung/jni/ExampleObjectsJNI.java diff --git a/jni/src/main/java/com/baeldung/jni/ExampleParametersJNI.java b/java-native/src/main/java/com/baeldung/jni/ExampleParametersJNI.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/ExampleParametersJNI.java rename to java-native/src/main/java/com/baeldung/jni/ExampleParametersJNI.java diff --git a/jni/src/main/java/com/baeldung/jni/HelloWorldJNI.java b/java-native/src/main/java/com/baeldung/jni/HelloWorldJNI.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/HelloWorldJNI.java rename to java-native/src/main/java/com/baeldung/jni/HelloWorldJNI.java diff --git a/jni/src/main/java/com/baeldung/jni/UserData.java b/java-native/src/main/java/com/baeldung/jni/UserData.java similarity index 100% rename from jni/src/main/java/com/baeldung/jni/UserData.java rename to java-native/src/main/java/com/baeldung/jni/UserData.java diff --git a/jni/src/main/resources/logback.xml b/java-native/src/main/resources/logback.xml similarity index 100% rename from jni/src/main/resources/logback.xml rename to java-native/src/main/resources/logback.xml diff --git a/java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java b/java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java new file mode 100644 index 0000000000..a9cc6ed1c4 --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jna/CMathUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.jna; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + +import com.sun.jna.Native; +import com.sun.jna.Platform; + +class CMathUnitTest { + @Test + void whenCallNative_thenSuccess() { + CMath lib = Native.load(Platform.isWindows() ? "msvcrt" : "c", CMath.class); + double result = lib.cosh(0); + assertEquals(1.0,result); + } + +} diff --git a/java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java b/java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java new file mode 100644 index 0000000000..d296f9e2ca --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jna/NativeFSUnitTest.java @@ -0,0 +1,38 @@ +package com.baeldung.jna; + +import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; + +import org.junit.jupiter.api.Test; + +import com.baeldung.jna.NativeFS.Stat; +import com.sun.jna.LastErrorException; +import com.sun.jna.Platform; + +public class NativeFSUnitTest { + + + @Test + public void whenCallNative_thenSuccess() throws IOException { + NativeFS lib = NativeFS.INSTANCE; + + File f = Files.createTempFile("junit", ".bin").toFile(); + f.deleteOnExit(); + Stat stat = new Stat(); + try { + if (Platform.isWindows()) { + int rc = lib.stat(f.getAbsolutePath(), stat); + assertEquals(0, rc); + assertEquals(0,stat.st_size.longValue()); + } + } + catch(LastErrorException error) { + fail("stat failed: error code=" + error.getErrorCode()); + } + + } +} diff --git a/java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java b/java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java new file mode 100644 index 0000000000..c536fd63d5 --- /dev/null +++ b/java-native/src/test/java/com/baeldung/jna/StdCUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.jna; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.BeforeClass; +import org.junit.jupiter.api.Test; + +import com.sun.jna.Native; +import com.sun.jna.Platform; +import com.sun.jna.Pointer; + +class StdCUnitTest { + + @BeforeClass + public static void setupProtectedMode() { + Native.setProtected(true); + } + + @Test + public void whenMalloc_thenSuccess() { + StdC lib = StdC.INSTANCE; + Pointer p = lib.malloc(1024); + p.setMemory(0l, 1024l, (byte) 0); + lib.free(p); + } + + @Test + public void whenAccessViolation_thenShouldThrowError() { + // Running this test on Linux requires additional setup using libjsig.so + // Details here: http://java-native-access.github.io/jna/5.6.0/javadoc/overview-summary.html#crash-protection + // IMPORTANT NOTICE: Code for illustration purposes only. DON'T DO THIS IN YOUR OWN CODE + if ( Platform.isWindows()) { + Error e = null; + Pointer p = new Pointer(0l); + + try { + p.setMemory(0, 100*1024, (byte) 0); + } + catch(Error err) { + e = err; + } + + assertNotNull(e, "Should throw Error"); + } + } + +} diff --git a/jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java b/java-native/src/test/java/com/baeldung/jni/JNINativeManualTest.java similarity index 100% rename from jni/src/test/java/com/baeldung/jni/JNINativeManualTest.java rename to java-native/src/test/java/com/baeldung/jni/JNINativeManualTest.java diff --git a/jni/native/linux_x86_64/libnative.so b/jni/native/linux_x86_64/libnative.so deleted file mode 100755 index 213491e2688a87bdecd1fea411e578149f8e3f32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19856 zcmeHPe|%h3mA{iTZD>Oipe?0E7_fzg$~4m^ZD_ZWHkt5Jk`nSmBT!!_Gm~UOG81Rs zl(bq6hOmTe+Afvf)8NW(q2~8zDz_o@y$Qj7_pU zr*>(i20&6!R)^PZ5$M!h*KKcQ8(x|}G=0_6PrkY3&-1!mOJ90ppX*AJI}g{zxJb=B zTzAZ=>Yh`0|2gx|ec*=^x3~%^?|rx~!R5wvIj$ABD6ParN=gYqS}g$orS9$(D>@aJbRnUt`L zSfSS~IR!Y*?JQzPFBJHI%$<__B{u#Lx4(#WFBObo)SuEN(w-`54~=6=&r169G$9~u z5`aC;^)Jn`=N;J&B{n_xK<<3hcPBLn(mMjMJm{fzSSZ^^lk_goiT^vx1>r}M9+CDu zBK7}H(#O#bq-U*c{|ZU3ka~_wI{6KyUr0M&p#g{_A1CZVseiw$uj-cscu4;fvYl1? zFkSELjYjmi;g1=*&h&63Y%sk8fa!HD4SFyX3w4I$MkvVnC%gxY+ji+qQbTo*KOPUonSRsu4coTY`69b?@7nF5+nSA7IMUhLQtNBHKESs5 zclq@|v{!HUhkAmENT=Q%3F}&@rziU1Xsjm)Nj>i0%?YHc*s{OKkB0-O87Z#|G#g%TpvxcAjhH`d#3924NfM+N_hV?bkaN>R5{k-d1PYjH1a}Be#VkL3DUL(Tlz(w+h^<2fA+6 zJN)4ua<=|{y)P7tN69^m-TJOF-snbUI2uQX$3x|HaKKD&TIr$??qGf+)K8vja-|K| zg^aW-RimrXB$ax%aDc`x2gmaD`+NI(LXG~Izc&Ook8}S@^wvd;P$y8{GwA*7&d=2= zffn?7g-(7<&P3f3KCObKW4A;b(0k+!Etp*bH?(($0*0?~gWesW zsfuh*PgLdbF2NvGz_p@Wz{2JQTSLg`iU#XyGMeBIa(+qcTVL((=@AMAKX+E4vC&(m zcf%XGmOU2zWzb(6#>99M_2tdVT+VG)evRJUAv835c?+j)BB7dS0u%f!Lc!VnSyYLS zq5!5sBh(rX#ZFnI50kY)5;cCq&w9e`aU&R5z1kCxde##fNZ)k^FkcboWqK$`+`8T# zkBcW6NRc4BuDV)Z=P6^?)z@vU*4KK<(|2n<6|B0gZOhg=-RoH=$Zc(4F88eUno<66 zAG&XJGz6g;T;9lfg%R)C9g=%U}b_??H#b;^HK262CzuSpnl18=-y_X2vu`8jBm zT+sY=nNQE|Md9$d3}ydH(h|$U=g=GCYia&`_9dA|@-KYjR;&!>vUeoyW7A(iMe^BP zyhN2C-zfboUN!UBVtT1UQtz?q{j*H2dk)C=RYm`@Tu+SK=oicN%7l&nj9jlw+UO_b z`}%a5o0qTjD|~#7pi}j*1Wcz16CF#Ubec5Ll`hJhGSSgs>2$b9)J6(g zFLpC+Xxu1Bz6=l61`ifKC6vxod>UCZEAPN>@ugL`BfN_;Q%7cyR_-C3+&(qQ@fhLc zqN#C?cN0!SI`t^W+X<(koEqc!O@x!{ruK2XiEwhw)Bwk~5l$|d>f`uU!fD8-c5-|p z;WX4!jT~P~IJs)7isM%iPA-}%<;S<{TlhoQT}eI zqspX6<;>&`?jLmDj6u+*4exze8%~S`wUIe1S5eJ|eM#@QHtKs)8$O)818t{`wmu0Q zw2EipfJENG$%5q!>tv+)Nz9KLDkaQx0jvFC`D9Sq~?V(mgTwQ2tLz zWdFNFc}nOyoUG#vQ`$&FGN`R9;>H=9j+F}*Ze53Df$%&0HZ5F~$szlaA0T}2VB5_* zo}#Lw<|V^>-yKd&5AJ=}l~{ZG-szbcG=C}j^={aktS4JW7x$9wqZPLi7%AAWRMbsJ z=Dr_tMgK}-Ptr7y{4#aVQ~Q*9G%S27aRL>b)Iow+JMrEoafLWGm}CK%yBFJ z;nw5B4M`Nb8-pK(zCzuK3cmdgZ?6&GakMkq@^1+rtuTlS*)OZ?q{#lbz@gwPTmhG< zh2c=31tv#)No~L8lI1sRw;#WY_x;|xVDo@B{JDPAW_aSRAp_9v8zZBXi;CU#1cXpL z>T)<)%Dd0EA4bvY4JBVGO}|#zf=prE)rwNEAY%>vk+O?%Kkz*&oEeKbakPTg ziInF?LB}qT#QP+10hLZ(IMNCW8lZ$5_3GP_47q+)s1KFo9(M)hW<2gC!ORW#H=bql zzO~0zo7f))%P|aiayl;a1u28FdQevK+l1eKkXrT>{O$s@MDizpB6}DAVTqgkj#1-` z6g;^Y07`#@%#-<@TltYT+?vezp2mHTDCCh1@V|do&PUTgC8Va%^OKO8$m;IaNhm@# zZ?h(<)JW@uiF7UOI<|}&g0me?euio>42i?Z0B47^Wf&JE?2#c-w;)li!WwCFfm z^Z-P0`GE5#{4Zhg6iUGb^60r23VT*cdv*v8S=9z9OdfrJMqF}~%HwtB_Dq<^;r(0| zPFe9wEI;5rV;2bbIlzVflj`(!eoM3S2+!oR!zvP_iDB@dmgyG9c`~>N{h zxU^wkacS#Vap{gni%Ub}#ihNI#ifZO#ie^sn1w-gmPJXDT5da=UX zgC-oR1geb=H4+#eq7|SvGQ^GHkDjGu-RLNZYa_y}5n<#AH+cpFe`uAE65w-GB%ZsA z#B;YGdGrr6GucloKFe6z=>*omj_qW6&Sgthad)-1FdRtrep%XAFt^bRVd|a%F1**& zJv7PfouW~SVT{=hieMS7`!maY#&_G@9kFPyyL$C%_hpx%Nhtx@=x*r>xg&|*cI=kA zW1&DOyekxR`(q*ZMmKZ&BSCkDO>D+yxWaMpG{imliQxy^{%h2>{~B!juSstO)pz4q zU`>xd(z!T}ktTvqxbB#*M-e&VM*=6rQ3=Z+*UZiu3fh2 zs&y+aCwbzj!PSkr^L>ad3rp_It3G$`txzQM0hnt~V?8fn-n~P`ZnoT94wW_e=FH4H zfOF^|S?TZ%=I8xBqvvbL|9gy*I>0nfUJYj;JD#Bn`SjA0&Tq`f9|w6O+P=b^-@8g_-Y$W|_QBOKMob!H@o!Vf2{w=OF-<#l@hjNAh=Ui&yqxuMSyxl$l zJ=eo0oa*yM zWc2?9^4pRBJ9B7l`J2r0yE6K}i2M%ZYv%mC>a_mvBA=d* z&sy>)cs}*l&yfFPli!g!g>&Nx7NhiH(g!~%arTFZ{)GN^9peP`8;I5NI&2yS_|kasAqn_ zv*~OLoNa-#EpWC4&bGkW7C74iXIntDfI3H3=f>)sSe*;2b70k8SlaSLXW5h#PJ5hY zoX*ZE6$z03o>rY1w#o1F)LEE1-(D{H-4ZU7P@PZHx{?yT15x_Jdoxjj^xj8FE%mD8 zp{O*2J&ZLgC3Plxnao#bp|m+cNxr^ef$iqF6k}uZM!nZbasHl4jN^2|grw+g#R6A$ z@)I|Z=-`WzDi5!W-2MqV!9v331;>>gCnVl3^YJRn^Hsfs)c>Df_1(PPqR-32)`ukg zmV}2S{HcV$mhdeJ=gJ0OBHl3w@09TK5eK^@a6op-&^T(m>M5edI3{@W~I+%%0I32 zc})4am0p-04_12iclDH?k5M@w``gODfHlhYwbJq3Z%%slchN%sLe?ec8>^n;bR342 zUcw45GgHKUKE7nHrx##b%Ey<*YW^~3<+BTznzyX--nH$cx-uLn8*MeH1}8+V!K z+T*w<`){TVNhH3P0r)B|qO0eosvdp+Kb!vf4*Fk^4??AX3G|SD^*mPkKY9}V3mo(h z$_J;?e}mMop7TmS$T{sFLWT=prfD|+zlYPa{Q+un>iIj)kEfrsQ#~KC%Y&3X9-rg< z*?#`2)MJldpn1@h!~g%x>Dl9JE}rX`qn+*F;jfT%dmO=sCH;~2k-d!ZJvzY8fPOxw zSbrV_-EAdt>~RPB1lN;2k3Hw0{|(T|etUex5-cEc+0*GjzukfU5a_w=|A7Plyg9kc zy%BV>(;m+)0 zG|lxFF?-y{`BbgBdwj|xpi}$U<4~TLbbFl6 zpB(gSSm5Tee;=o3#|<3@oyxVx(Y)cHXA35TT>9y2*bx}K^^z8M_mmK(6AZEmkL`R1Qfe8Ax>L$IuuDJyPKACtP-RRW=6w!n4 z-1T5o@9c@gc9&FAo_p5Vk{H57=#Tx{A* z!5Yr-9H$>pV~QrR6iAT*6l>~1N>X`}onLU=r66a{`{L>0y%*`yP zqRfnoI5T>RA#k~h^ZmJHU}G8i$B%6m?DGB zQ_3j^H_aN0^*@MxwA4nq{h5VjT2##*|1?|dVa6Lz7T(BboYRf@!!*hR?JU;Had7%m zCA6tn+H8d~NDKa>0(LDt^fbr{4y~#(MQQyXgyC8&qGp)Yp>6$U3Ei|r!a}VKMU(N> zXEI%h@XRa=nJ2!x*YLLk8ZiO8)LkTMggl**gr_|b?g?HU4l<5)`Qu&86Wkqvq<}_D zd5FL53P>-Jkb^SwK@{xo4F@0>HK;&PDBjP5a6jh3Dzz6Y&+H}h z8Bu8e2(Jp*3lT}}e=4{_(iOn#p(W8i6Fx19DtWa}s^9_1jn`S8@OofLmB8qXK*_6f z1O@3sTuKCpN6D-G{VLE%w~|-;t_rGi2(a*kZ3;`$fYF(Nl2`k)X(+js{fbY)R^-ze zgTmE5u7dldJlRh=l>L&-g1Aw2BbwUpRZyL4sPdJ(s((bvZzW+Qbxxw-m^6&!X^YJ+ z-wztK30_BeQva7lLHo`n*=kO4AZB^B&#d62t-(vAu!5ho$*cWn1r?tvQ`xWZzqHA# z{ZR$q!uz5*+4YUuG zosRO9yxPy7Ghx$qK7>SLG`|`n0Wl zb&fE;1{p|I{5SKXEXLTS;S1PGjnp5-t!M8G|kPU*tHUGS%~xnXh{Lt+pV7!QF#OrxN7dg&!rE#WeWLZ?AP0}&A5)6`5w7-A*R zsK57izxyZIv5lFwGy2BgzJ0rI-@bkO_U(RePk!OeU%jY<)ss4J>R1I@+q4SY~GeN_oXcmcm0XU^$*FcR%<>o}mwi}@W}D=WUQ z>K$C6b9n1|tmBhy9W8oW$No+b74zG(PPROy7!ZCj`N&RcFcw{}+qQd~YDB=Xj|x>* zgp-|+?a@n*t{>>kGm{JQ^Ds3M@N?Qy5zXf+%BV-zJHmS8NPBZ;OIK%Ir{f@{{StyYc5)~MfM=%EsD zwZcg+3(tZE7BsM+fdvgLXkbAD3mRC^!2drDG-<}qwf=KenpyUu2S;FQ>8|$x7`?V; z#3nUkR5PBpxBey9bYXa!;hoWphH1_0otbT#20Eejk5uhF?S4-mjb8EdfCK1aOsAOy zy&xv8;24{({rC8)0%OXX-=>)}M(xj`EUVe`QXC?{*vN1_(r{ru z2SKQ&ip)4`vLC^xrM-hV8}UIj%vr5P=miWn{SB^z?Z#zpXaEIl!70kYh~r-boT?=; z3+#AnRuI!WX2Q6QcoLL`^$^jogyl)Qwi3YYC-D``roG5%cAOczpBdB46phq4&a2mq zvtAN}B+e#MpFx#orpd~V#|f$9COpk($yzp9%RVzsTDGOp$9s@>Y>BYErnv zsYa!&cmz&sDI0#~xtUQ)m4n6|@7?W&QOyViI+UF`t#1`0v?SpLKEtD96s4pE6_q-q!pRT01%CNRq3 z5MZ)PDS(lxrMmt%U=x1|wZaQXQQ{RSpZZ7G0*Xiw^v%+(hWCk&a{)^R>=gH+KulLHEIlNgpojjM3Q_wXJb#>^^os@wMW^)S1P$2~HkjILaG^ z)V3^vDrHaXF%7lPNdGws>!NWuESMpk5k^_Tva&$eyAY?6M%SNaJ-8n}k14BueHacz z7|%hR0g}q(+PdS?B8&#O-rm8wg!fz6IOrTOSa%$Gqk*>kF_e#@9QlR`)J>pl5^xgG z2DIyqH+*zzF|01|wjYKK!12OEr3rUG(==+AQ<>BEkhBiD`I%}Dv}#EWrUZuC3ey_v zChg}s35@g}i4kx=y`+EA)jtFOJ=97AGpv2o=P`;v!vF|@|4Bgn1jJ7QCIL?X;;pX$ z{T`4^QS>lN9^c0uSPTrc*GhmP$~p%9&$_^%N0u;fwqD5=9Em$QK=OVV9b2rKlA@-j z$*Qn68Ca9j#<(zRV_avZxQ=bii2F%kntSD4xB#|Cyxqr!Xe6*b$$E^yD0_HF3H`>o z#I!Q9eu9BDPC)J5qr{q&p;%}%0xO;%fI|rZ!(vQsnHMz1(fBbClL=2zfR&x(36vPt zqr}8YlO@^$S4C61P%p`mf%vlO=N07WiAg+T#Onav$8f}y<2JdV-*(~9#WjuSY3hDT z_?)#HISgVNbr5@o0DGMb<+2{&ht!>NSBfg@0S2UQPB2I%rHZ&PJ3Cxw%DMs%(96S! z_fTh+)hapl5E$hRMNWp?TFq3KtWPjV^${@n0H9?(fWv|q8u5LSQ#k-S%8me=5K5-% zQRLW$EgS5S4g9$VTw-c)w3bGdrbU&Sfsz9E4UCxLv`pL1-qTpsG>P^&PJe1QyNz&? z!*BPwA&s%ORE@(~VWZy&f`E4lVCyWT#`5oPTr$+D-A zB?%6N@GM&C6R6azA(|Px9rSVqT5&E{w!u3Qb|b@!od~bt#V&-GHwgYtK82m>6m}>a zvl|B8PcQ5LsjL4@3@6=1>@i+|?CwSg+D?LY5^b;<u?O4@}Ptr z{xGVgwqdoT3foQfhLvq$qG*M^b2auA%sKOqiG*b+WR6=45 z47J;+jU{!0>WuU$1}6t3C1WOkdE%^2iozL)Gy|RzON}u$#K0Julo$aV{-+5uhGt|T z0iTg7C%ZS&Ra|%8cpi)^x#lcp+Jl_^?Q3|lsFaF$oun8zM^|}*HBwcwj)B34+|l?A zC?i|xPg5@E5>@~+Eh@`*352stpbWbNn2A)L3|+vOd7Z$B3yeB%-NaWw((HmEzk|}k1ROE7j&|x@laiEW9-*jm~XolNBG-?W^_z9TlRseeueZU)Wjf<4*^4rmr zpde&Klo%=+GcYc8?sfP7#Dy;|G${x3><9_L2on%B0ktFn;bsaByaFW7fmf1Wl>;xa zg%TLBKZ^|jmCBGu46G>ESq!d=VvtPmIuw3@$P%HCFX$+X&{vN6^SUS%! zm0V7)*LhVTxK<6b%DJ6dv^1>S^4gyu_VV*lGW-lN#QsP$M@MK$f6VbaW}4dDzk-8M z9_Ab!ao&AidYHm^VgET#*1xcOL{#gaYuL9qQQ7kv1vkAmI};Cm%;&{l`_I*CR@q~; zuJYW}Ywl&_*D20>#vUMU6bvRDXB%6m0&DrFsFAhw2)D&4#;LwlR!3!ZOjg5+RqJ<2 zb{SQGc1@@xC-|)WKB|+1RGxXwUE!UymvAY1=pU)&!&`y;bI1Qc75GhKJm6V8_~Q8U zy!xA<{o#Tviu70L-x0Hh(L+y&j(&EUJT*ti=~ERNHR$v81rPu#}yz_+e^r=S(|Q`tuppu6nm>Pb+lWx(WE#=V-ut?t$QY2aS{%}MwW_v){XGdP)HkQ!uQ4KPqA>vRGb z4&i+aI0TDLr3)DLUv`DY&^~H#tOdh%S8_A=YQAM~S1MkXA3KM;Qgy&5ad)Na^&}mS z-IYp|P@lU}3D=%OL1i2Dmv--5h z5g*Luo_utKCU5U)``=KQoLzYzTF$QgYfeAT={`=IIc?!|Kc}sn9^^F4X$PlWoOW{> z<@7M8J)GXpDakjx@^3lqE}6p zg3~W>N_)rb$}e;J6{J4v-R+Bn*w#3^axY-A6$2Mjzra+sRsf%RnR2Ts_kGIMP;QKJ z2t|vjXDC-kxu+=CM!Bz3?itDrP_6!93G z%C%6A!pl?lQSMrJizzbc);lP72jzm4yNz;xN4fQsJ3~1##MU2E?ncVZP>#-wvycCi zDBTFjgpU$>C{vI3Bq3kJi_KA_@w&c+j_Ctj*w_gDHAZqxz9@RufN*6aG zSuM+j*g*|}FasZuRZa~g?{(oNJU8CAz?L7%P{TB_{2mhGpTyC}H34Kyj+1_)NYCu! z)1s6OV#ukWOafKoRIpr0{$b)y`v)=Ong)e@3D9*flB|3WRvA^fCfXNP8unRX&N!+PV zg6TNmvakxlxPb<`?2K!c-ar3CvFUP}uP&!l5bYCQ~ixHxNN=M>-974(qu@YE{k zhs^vy7xY}K;0+4is9>dn>lM6B!8;W6D|nxRq+fbk6yBj=kAhv82YN`~^gO7_A5!o! z1)o=PPbm0P1!b#+bU_0P8d%W4f(8~eu%Lkj4J>G2K?4gKSkSC}zbc3!} zZwz+EqF&KAL9se|T*%9J3^n<~0AQJKK3^s1iAykd*B1>Jp4e_JkUCjqW z!Dx=0ySr~!jtV>*LebXF`Ir`QT)!*yNf`=i+I@!?9Tzj(2xhXw?IfDlU!x!FWC7+- zHin{gow4R{hzFEM>EEIs+%E^&GG8mn|01m#tM%e`o3{tTVcAfQHNU^=D*a%)(!l-2 zEpNeyvP0h98t9gTl94rkYZ3XDJ75cH=vnPZi>R&+qO~6F4zxuhnELAK&>{RU1NdJM zU<%&0Hqlp+Zz9Fy8$zA?y@yqI^K;xB4s{%ew&u-?q+7pH*Slg-7;vCF5R8Vp^+@PY zEQB~-eQ;N!Ufh${>%E7HH#7$#Z9%;gLk$Jm>v!wBt8}lo@fO{`vvH%|F8ciW@`fYz zm(DA=n>cL-r=aM=TFR}PuJHUaf%g_nVP`N9?d*p3@KAT_rHpbmq=>t#!TX+_jax|0 z&9DS^B!{YKB{#|c+u@#2B!>8AQXERS#F6+A4Wn^tdy4Kwy2I93O(4_5oyDosdvNec6WYKYUsrL?KcI(p+L9yAoV{eNgAVD z;Kth9@Sk;rc+m}WxgP8Z=*^)6Z5=xNL=esycAl$&spiVZN{Y7j{eiYHH5jLg_E0-S zCUk;O_!szAptvB=MVTnM6E`CmMLPy1uTOMbpXlOd?Ej)cl<>{XM?1U2E!esBNZ<$; z2+i9QXzvP##8*m7#lVfY1(8ldG&{So_*JP`bj7apm6AV_tADkmc#{xQC0E~7KU!A0 zX!=G`x@i0++~DMIXQ|RT+vVp=)t30hQZ)DgS`E}7$<#oter$Bu(Q%w&{fjfDa_?tU z;P$vA)?VKc4IKc5_*to%pWU4eAz@=`#=%HTZULieacoi1p8i~!Sp0T}f=9~co|HaU zRxL)$E_Q-Dws@m37GK6u<iRZX#XQh5s0dZ|V3>FTSKy zWbPzF9|-3^8_t$p>@@fY`pfu;LjySA04Kh=_`(Oi<4Z)zC7soNxA+ncf_>iPtn~{ zj%#RFAKxcZQLn=3K9QbZE4)J8vt5JR?|0x@neHCxd6&ZJ4w9Y^DV**i>G>;#)14$e zcPpIkCh4L3PdBc4Yt_BrW`z%^d%<>v)4e7=U&BlEeudNhJK=OsO3!u3yD=W;{&ADS zoqNc874Fq^Q)Sq*YA6EE)holkWb56aw-+W5p z&i&;p3U}@?F{jMWxzAjsaOWQKGYWU^9nUJ;wu>M*NX7( z6yax!@c$^ne=YH>eoL`F^7Z}BBK*c8d{q%nKUZCf7k?fi$b{*-8Q1Uve^4Uu_c7uI zytEYQr#aXt1^sap{-&1y|0(*v!8~|x!uwvl@56gD-j#S);e9{eO1!J_(w}(K5~XEG zOOO6+mX^>uyj6Is@ovDo2`{Zd`l$h3QLo2KKd-q3FP_@}tMYn;KL1%n9X0ayy}YgA zlG_ySAQx{|wCUz=s+ZL;Z)?6ly9*qz=qu7WNL@5kQb2ftC`lpB#dgI4%DMY~LG?xA zBZYLA79E+>=92c?f>xJt+$d=Gc1NIm;-V82RjIGzw~L8fm{cA9E=-Vre9Te(kq*eY z4zBp{o?~(K57xzz59;d@LLPZ!*{``=tRp9IQ5a_4FX^`na$GHLh;IDBtn$Mee>k&T zJmU}L#UI*vOfDyaakQI#e - - 4.0.0 - jni - jni - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - \ No newline at end of file diff --git a/pom.xml b/pom.xml index ab1c47361c..ac1a16a728 100644 --- a/pom.xml +++ b/pom.xml @@ -465,7 +465,7 @@ jjwt jmeter jmh - jni + java-native jooby jsf json @@ -1501,4 +1501,4 @@ 1.4.197 - \ No newline at end of file + From 76676ebfd86baa9960c2bb08d8547936de6fe8bc Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:05:41 +0800 Subject: [PATCH 167/260] Update README.md --- core-java-modules/core-java-collections-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-collections-3/README.md b/core-java-modules/core-java-collections-3/README.md index c80e493767..e21e3642f9 100644 --- a/core-java-modules/core-java-collections-3/README.md +++ b/core-java-modules/core-java-collections-3/README.md @@ -13,3 +13,4 @@ - [Quick Guide to the Java Stack](https://www.baeldung.com/java-stack) - [Convert an Array of Primitives to a List](https://www.baeldung.com/java-primitive-array-to-list) - [A Guide to BitSet in Java](https://www.baeldung.com/java-bitset) +- [Get the First Key and Value From a HashMap](https://www.baeldung.com/java-hashmap-get-first-entry) From ffe826a6b6123c16b0a7c2ce08a95e77c4d116f2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:07:19 +0800 Subject: [PATCH 168/260] Update README.md --- spring-boot-modules/spring-boot-mvc-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-mvc-3/README.md b/spring-boot-modules/spring-boot-mvc-3/README.md index 796ab72425..bc3eb9e496 100644 --- a/spring-boot-modules/spring-boot-mvc-3/README.md +++ b/spring-boot-modules/spring-boot-mvc-3/README.md @@ -8,4 +8,5 @@ This module contains articles about Spring Web MVC in Spring Boot projects. - [Download an Image or a File with Spring MVC](https://www.baeldung.com/spring-controller-return-image-file) - [Spring MVC Async vs Spring WebFlux](https://www.baeldung.com/spring-mvc-async-vs-webflux) - [Differences in @Valid and @Validated Annotations in Spring](https://www.baeldung.com/spring-valid-vs-validated) +- [CharacterEncodingFilter In SpringBoot](https://www.baeldung.com/spring-boot-characterencodingfilter) - More articles: [[prev -->]](/spring-boot-modules/spring-boot-mvc-2) From cfdbef76ba47f959a9848abfd03636664d5a3484 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:09:22 +0800 Subject: [PATCH 169/260] Update README.md --- core-java-modules/core-java-security-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-security-2/README.md b/core-java-modules/core-java-security-2/README.md index ba8cce46a0..11f0a34fa9 100644 --- a/core-java-modules/core-java-security-2/README.md +++ b/core-java-modules/core-java-security-2/README.md @@ -10,4 +10,5 @@ This module contains articles about core Java Security - [SHA-256 and SHA3-256 Hashing in Java](https://www.baeldung.com/sha-256-hashing-java) - [Checksums in Java](https://www.baeldung.com/java-checksums) - [How to Read PEM File to Get Public and Private Keys](https://www.baeldung.com/java-read-pem-file-keys) +- [Listing the Available Cipher Algorithms](https://www.baeldung.com/java-list-cipher-algorithms) - More articles: [[<-- prev]](/core-java-modules/core-java-security) From 92b4aba6b4c407f8843082d2b6fa56e8ca5dea54 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:13:08 +0800 Subject: [PATCH 170/260] Create README.md --- gradle/gradle-wrapper/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 gradle/gradle-wrapper/README.md diff --git a/gradle/gradle-wrapper/README.md b/gradle/gradle-wrapper/README.md new file mode 100644 index 0000000000..972ced46c8 --- /dev/null +++ b/gradle/gradle-wrapper/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Guide to the Gradle Wrapper](https://www.baeldung.com/gradle-wrapper) From 5bae06c7ff4319dcfd3e53d46e85e497a810ead5 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:15:04 +0800 Subject: [PATCH 171/260] Update README.md --- httpclient-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/httpclient-2/README.md b/httpclient-2/README.md index 52d8b8fcff..dc0fb553b6 100644 --- a/httpclient-2/README.md +++ b/httpclient-2/README.md @@ -8,5 +8,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: -- [How to Set TLS Version in Apache HttpClient](https://www.baeldung.com/TODO) +- [How to Set TLS Version in Apache HttpClient](https://www.baeldung.com/apache-httpclient-tls) - More articles: [[<-- prev]](../httpclient) From 39c0a4fa84e2a16da1e3580fa98a3c3a7ce599f1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:16:46 +0800 Subject: [PATCH 172/260] Update README.md --- core-java-modules/core-java-io-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-io-3/README.md b/core-java-modules/core-java-io-3/README.md index 4b1a14ab3e..18caabc784 100644 --- a/core-java-modules/core-java-io-3/README.md +++ b/core-java-modules/core-java-io-3/README.md @@ -11,4 +11,5 @@ This module contains articles about core Java input and output (IO) - [Java Files Open Options](https://www.baeldung.com/java-file-options) - [Creating Temporary Directories in Java](https://www.baeldung.com/java-temp-directories) - [Reading a Line at a Given Line Number From a File in Java](https://www.baeldung.com/java-read-line-at-number) +- [Find the Last Modified File in a Directory with Java](https://www.baeldung.com/java-last-modified-file) - [[<-- Prev]](/core-java-modules/core-java-io-2) From f77d8a6b4e0315171c6ad89828a5f7d6e8ed2534 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:19:45 +0800 Subject: [PATCH 173/260] Update README.md --- core-java-modules/core-java-lang-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-lang-3/README.md b/core-java-modules/core-java-lang-3/README.md index 121d30f20f..598014bb92 100644 --- a/core-java-modules/core-java-lang-3/README.md +++ b/core-java-modules/core-java-lang-3/README.md @@ -6,4 +6,5 @@ This module contains articles about core features in the Java language - [Converting a Java String Into a Boolean](https://www.baeldung.com/java-string-to-boolean) - [When are Static Variables Initialized in Java?](https://www.baeldung.com/java-static-variables-initialization) - [Checking if a Class Exists in Java](https://www.baeldung.com/java-check-class-exists) +- [The Difference Between a.getClass() and A.class in Java](https://www.baeldung.com/java-getclass-vs-class) - [[<-- Prev]](/core-java-modules/core-java-lang-2) From d0f0e197e401325b595a6d3dc3c06cd9b29ee2e9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:22:31 +0800 Subject: [PATCH 174/260] Update README.md --- algorithms-miscellaneous-6/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/algorithms-miscellaneous-6/README.md b/algorithms-miscellaneous-6/README.md index 6ddae75f43..e1841fced7 100644 --- a/algorithms-miscellaneous-6/README.md +++ b/algorithms-miscellaneous-6/README.md @@ -9,4 +9,5 @@ - [The Caesar Cipher in Java](https://www.baeldung.com/java-caesar-cipher) - [Implementing a 2048 Solver in Java](https://www.baeldung.com/2048-java-solver) - [Finding Top K Elements in an Array](https://www.baeldung.com/java-array-top-elements) +- [Reversing a Linked List in Java](https://www.baeldung.com/java-reverse-linked-list) - More articles: [[<-- prev]](/../algorithms-miscellaneous-5) From 511c0183cf0ba6e1226f1ad35dd24d691453f175 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:24:04 +0800 Subject: [PATCH 175/260] Update README.md --- spring-boot-modules/spring-boot-environment/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-environment/README.md b/spring-boot-modules/spring-boot-environment/README.md index e916c503bc..e7b0ace7a4 100644 --- a/spring-boot-modules/spring-boot-environment/README.md +++ b/spring-boot-modules/spring-boot-environment/README.md @@ -4,4 +4,5 @@ This module contains articles about configuring the Spring Boot `Environment` ### Relevant Articles: - [EnvironmentPostProcessor in Spring Boot](https://www.baeldung.com/spring-boot-environmentpostprocessor) - - [Spring Properties File Outside jar](https://www.baeldung.com/spring-properties-file-outside-jar) \ No newline at end of file + - [Spring Properties File Outside jar](https://www.baeldung.com/spring-properties-file-outside-jar) + - [Get the Running Port in Spring Boot](https://www.baeldung.com/spring-boot-running-port) From c1c380094cca00b54d019e6cdaeb77bd98189828 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:26:20 +0800 Subject: [PATCH 176/260] Update README.md --- testing-modules/junit-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/junit-4/README.md b/testing-modules/junit-4/README.md index 6cc3981ed4..cf20c8da91 100644 --- a/testing-modules/junit-4/README.md +++ b/testing-modules/junit-4/README.md @@ -5,3 +5,4 @@ - [Introduction to JUnitParams](http://www.baeldung.com/junit-params) - [Running JUnit Tests Programmatically, from a Java Application](https://www.baeldung.com/junit-tests-run-programmatically-from-java) - [Introduction to Lambda Behave](https://www.baeldung.com/lambda-behave) +- [Conditionally Run or Ignore Tests in JUnit 4](https://www.baeldung.com/junit-conditional-assume) From e9059bbb72c77664a14dbb7c42bc7b6608448ab9 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:29:42 +0800 Subject: [PATCH 177/260] Update README.md --- testing-modules/junit-5/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/testing-modules/junit-5/README.md b/testing-modules/junit-5/README.md index e62f2dd345..984b79c29d 100644 --- a/testing-modules/junit-5/README.md +++ b/testing-modules/junit-5/README.md @@ -7,3 +7,4 @@ - [Testing an Abstract Class With JUnit](https://www.baeldung.com/junit-test-abstract-class) - [Guide to Dynamic Tests in JUnit 5](https://www.baeldung.com/junit5-dynamic-tests) - [Determine the Execution Time of JUnit Tests](https://www.baeldung.com/junit-test-execution-time) +- [@BeforeAll and @AfterAll in Non-Static Methods](https://www.baeldung.com/java-beforeall-afterall-non-static) From c68b6f68b56e5fadb245054dd0726a372727f0a1 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:31:26 +0800 Subject: [PATCH 178/260] Update README.md --- core-java-modules/core-java-security-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-security-2/README.md b/core-java-modules/core-java-security-2/README.md index 11f0a34fa9..03a5a94acc 100644 --- a/core-java-modules/core-java-security-2/README.md +++ b/core-java-modules/core-java-security-2/README.md @@ -11,4 +11,5 @@ This module contains articles about core Java Security - [Checksums in Java](https://www.baeldung.com/java-checksums) - [How to Read PEM File to Get Public and Private Keys](https://www.baeldung.com/java-read-pem-file-keys) - [Listing the Available Cipher Algorithms](https://www.baeldung.com/java-list-cipher-algorithms) +- [Get a List of Trusted Certificates in Java](https://www.baeldung.com/java-list-trusted-certificates) - More articles: [[<-- prev]](/core-java-modules/core-java-security) From ea64a31131147d288046123a897e18cf71b407df Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:33:56 +0800 Subject: [PATCH 179/260] Update README.md --- httpclient-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/httpclient-2/README.md b/httpclient-2/README.md index dc0fb553b6..6fdd743fcc 100644 --- a/httpclient-2/README.md +++ b/httpclient-2/README.md @@ -9,4 +9,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring ### Relevant Articles: - [How to Set TLS Version in Apache HttpClient](https://www.baeldung.com/apache-httpclient-tls) +- [Reading an HTTP Response Body as a String in Java](https://www.baeldung.com/java-http-response-body-as-string) - More articles: [[<-- prev]](../httpclient) From 9ee2aee60f9f79584cb61301d9f8eab3ebe9de56 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:35:14 +0800 Subject: [PATCH 180/260] Update README.md --- httpclient-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/httpclient-2/README.md b/httpclient-2/README.md index 6fdd743fcc..9d7a9683cd 100644 --- a/httpclient-2/README.md +++ b/httpclient-2/README.md @@ -10,4 +10,5 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [How to Set TLS Version in Apache HttpClient](https://www.baeldung.com/apache-httpclient-tls) - [Reading an HTTP Response Body as a String in Java](https://www.baeldung.com/java-http-response-body-as-string) +- [How To Get Cookies From the Apache HttpClient Response](https://www.baeldung.com/java-apache-httpclient-cookies) - More articles: [[<-- prev]](../httpclient) From 99d35b68e37bf6adc1edf1bcc69df59011413193 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:36:59 +0800 Subject: [PATCH 181/260] Create README.md --- persistence-modules/jooq/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 persistence-modules/jooq/README.md diff --git a/persistence-modules/jooq/README.md b/persistence-modules/jooq/README.md new file mode 100644 index 0000000000..348baab50c --- /dev/null +++ b/persistence-modules/jooq/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Getting Started with jOOQ](https://www.baeldung.com/jooq-intro) From 67981e7cba0f746046088f3fd8e816fd1a131d7f Mon Sep 17 00:00:00 2001 From: Aaron Juarez Date: Fri, 2 Oct 2020 12:46:48 -0400 Subject: [PATCH 182/260] BAEL-3862: Spark differences DS, DF, RDD (#9976) --- apache-spark/data/Tourist.csv | 2247 +++++++++++++++++ .../dataframe/dataset/rdd/TouristData.java | 75 + .../differences/rdd/ActionsUnitTest.java | 67 + .../differences/rdd/DataFrameUnitTest.java | 74 + .../differences/rdd/DatasetUnitTest.java | 83 + .../rdd/TransformationsUnitTest.java | 63 + 6 files changed, 2609 insertions(+) create mode 100644 apache-spark/data/Tourist.csv create mode 100644 apache-spark/src/main/java/com/baeldung/differences/dataframe/dataset/rdd/TouristData.java create mode 100644 apache-spark/src/test/java/com/baeldung/differences/rdd/ActionsUnitTest.java create mode 100644 apache-spark/src/test/java/com/baeldung/differences/rdd/DataFrameUnitTest.java create mode 100644 apache-spark/src/test/java/com/baeldung/differences/rdd/DatasetUnitTest.java create mode 100644 apache-spark/src/test/java/com/baeldung/differences/rdd/TransformationsUnitTest.java diff --git a/apache-spark/data/Tourist.csv b/apache-spark/data/Tourist.csv new file mode 100644 index 0000000000..4970e8c2f0 --- /dev/null +++ b/apache-spark/data/Tourist.csv @@ -0,0 +1,2247 @@ +Region,Country,Year,Series,Series_Type,Series_Type_Footnote,Value,Footnotes,Source +4,Afghanistan,2010,Tourism expenditure (millions of US dollars),,,147.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +4,Afghanistan,2016,Tourism expenditure (millions of US dollars),,,62.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +4,Afghanistan,2017,Tourism expenditure (millions of US dollars),,,16.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +4,Afghanistan,2018,Tourism expenditure (millions of US dollars),,,50.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2010,Tourist/visitor arrivals (thousands),TF,,2191.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2016,Tourist/visitor arrivals (thousands),TF,,4070.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2017,Tourist/visitor arrivals (thousands),TF,,4643.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2018,Tourist/visitor arrivals (thousands),TF,,5340.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,1995,Tourism expenditure (millions of US dollars),,,70.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2005,Tourism expenditure (millions of US dollars),,,880.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2010,Tourism expenditure (millions of US dollars),,,1778.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2016,Tourism expenditure (millions of US dollars),,,1821.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2017,Tourism expenditure (millions of US dollars),,,2050.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +8,Albania,2018,Tourism expenditure (millions of US dollars),,,2306.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,1995,Tourist/visitor arrivals (thousands),VF,,520.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2005,Tourist/visitor arrivals (thousands),VF,,1443.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2010,Tourist/visitor arrivals (thousands),VF,,2070.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2016,Tourist/visitor arrivals (thousands),VF,,2039.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2017,Tourist/visitor arrivals (thousands),VF,,2451.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2018,Tourist/visitor arrivals (thousands),VF,,2657.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2005,Tourism expenditure (millions of US dollars),,,477.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2010,Tourism expenditure (millions of US dollars),,,324.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2016,Tourism expenditure (millions of US dollars),,,246.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +12,Algeria,2017,Tourism expenditure (millions of US dollars),,,172.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,1995,Tourist/visitor arrivals (thousands),TF,,34.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2005,Tourist/visitor arrivals (thousands),TF,,24.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2010,Tourist/visitor arrivals (thousands),TF,,23.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2016,Tourist/visitor arrivals (thousands),TF,,20.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2017,Tourist/visitor arrivals (thousands),TF,,20.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2018,Tourist/visitor arrivals (thousands),TF,,20.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2016,Tourism expenditure (millions of US dollars),,,22.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +16,American Samoa,2017,Tourism expenditure (millions of US dollars),,,22.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +20,Andorra,2005,Tourist/visitor arrivals (thousands),TF,,2418.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +20,Andorra,2010,Tourist/visitor arrivals (thousands),TF,,1808.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +20,Andorra,2016,Tourist/visitor arrivals (thousands),TF,,2819.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +20,Andorra,2017,Tourist/visitor arrivals (thousands),TF,,3003.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +20,Andorra,2018,Tourist/visitor arrivals (thousands),TF,,3042.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,1995,Tourist/visitor arrivals (thousands),TF,,9.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2005,Tourist/visitor arrivals (thousands),TF,,210.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2010,Tourist/visitor arrivals (thousands),TF,,425.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2016,Tourist/visitor arrivals (thousands),TF,,397.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2017,Tourist/visitor arrivals (thousands),TF,,261.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2018,Tourist/visitor arrivals (thousands),TF,,218.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,1995,Tourism expenditure (millions of US dollars),,,27.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2005,Tourism expenditure (millions of US dollars),,,103.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2010,Tourism expenditure (millions of US dollars),,,726.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2016,Tourism expenditure (millions of US dollars),,,628.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2017,Tourism expenditure (millions of US dollars),,,884.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +24,Angola,2018,Tourism expenditure (millions of US dollars),,,557.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,1995,Tourist/visitor arrivals (thousands),TF,,39.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2005,Tourist/visitor arrivals (thousands),TF,,62.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2010,Tourist/visitor arrivals (thousands),TF,,62.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2016,Tourist/visitor arrivals (thousands),TF,,79.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2017,Tourist/visitor arrivals (thousands),TF,,68.3000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2018,Tourist/visitor arrivals (thousands),TF,,55.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,1995,Tourism expenditure (millions of US dollars),,,50.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2005,Tourism expenditure (millions of US dollars),,,86.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2010,Tourism expenditure (millions of US dollars),,,99.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2016,Tourism expenditure (millions of US dollars),,,136.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2017,Tourism expenditure (millions of US dollars),,,141.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +660,Anguilla,2018,Tourism expenditure (millions of US dollars),,,102.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,1995,Tourist/visitor arrivals (thousands),TF,,220.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2005,Tourist/visitor arrivals (thousands),TF,,245.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2010,Tourist/visitor arrivals (thousands),TF,,230.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2016,Tourist/visitor arrivals (thousands),TF,,265.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2017,Tourist/visitor arrivals (thousands),TF,,247.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2018,Tourist/visitor arrivals (thousands),TF,,269.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,1995,Tourism expenditure (millions of US dollars),,,247.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2005,Tourism expenditure (millions of US dollars),,,309.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2010,Tourism expenditure (millions of US dollars),,,298.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2016,Tourism expenditure (millions of US dollars),,,753.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2017,Tourism expenditure (millions of US dollars),,,737.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +28,Antigua and Barbuda,2018,Tourism expenditure (millions of US dollars),,,881.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,1995,Tourist/visitor arrivals (thousands),TF,,2289.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2005,Tourist/visitor arrivals (thousands),TF,,3823.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2010,Tourist/visitor arrivals (thousands),TF,,6800.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2016,Tourist/visitor arrivals (thousands),TF,,6668.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2017,Tourist/visitor arrivals (thousands),TF,,6711.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2018,Tourist/visitor arrivals (thousands),TF,,6942.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,1995,Tourism expenditure (millions of US dollars),,,2550.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2005,Tourism expenditure (millions of US dollars),,,3209.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2010,Tourism expenditure (millions of US dollars),,,5605.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2016,Tourism expenditure (millions of US dollars),,,5466.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2017,Tourism expenditure (millions of US dollars),,,5835.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +32,Argentina,2018,Tourism expenditure (millions of US dollars),,,5999.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,1995,Tourist/visitor arrivals (thousands),TF,,12.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2005,Tourist/visitor arrivals (thousands),TF,,319.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2010,Tourist/visitor arrivals (thousands),TF,,684.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2016,Tourist/visitor arrivals (thousands),TF,,1260.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2017,Tourist/visitor arrivals (thousands),TF,,1495.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2018,Tourist/visitor arrivals (thousands),TF,,1652.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,1995,Tourism expenditure (millions of US dollars),,,14.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2005,Tourism expenditure (millions of US dollars),,,243.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2010,Tourism expenditure (millions of US dollars),,,694.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2016,Tourism expenditure (millions of US dollars),,,988.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2017,Tourism expenditure (millions of US dollars),,,1140.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +51,Armenia,2018,Tourism expenditure (millions of US dollars),,,1237.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,1995,Tourist/visitor arrivals (thousands),TF,,619.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2005,Tourist/visitor arrivals (thousands),TF,,733.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2010,Tourist/visitor arrivals (thousands),TF,,824.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2016,Tourist/visitor arrivals (thousands),TF,,1102.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2017,Tourist/visitor arrivals (thousands),TF,,1070.5000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2018,Tourist/visitor arrivals (thousands),TF,,1082.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,1995,Tourism expenditure (millions of US dollars),,,554.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2005,Tourism expenditure (millions of US dollars),,,1097.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2010,Tourism expenditure (millions of US dollars),,,1254.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2016,Tourism expenditure (millions of US dollars),,,1764.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2017,Tourism expenditure (millions of US dollars),,,1857.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +533,Aruba,2018,Tourism expenditure (millions of US dollars),,,2024.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,1995,Tourist/visitor arrivals (thousands),VF,,3726.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2005,Tourist/visitor arrivals (thousands),VF,,5499.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2010,Tourist/visitor arrivals (thousands),VF,,5790.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2016,Tourist/visitor arrivals (thousands),VF,,8269.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2017,Tourist/visitor arrivals (thousands),VF,,8815.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2018,Tourist/visitor arrivals (thousands),VF,,9246.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,1995,Tourism expenditure (millions of US dollars),,,10370.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2005,Tourism expenditure (millions of US dollars),,,19719.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2010,Tourism expenditure (millions of US dollars),,,31064.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2016,Tourism expenditure (millions of US dollars),,,39059.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2017,Tourism expenditure (millions of US dollars),,,43975.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +36,Australia,2018,Tourism expenditure (millions of US dollars),,,47327.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,1995,Tourist/visitor arrivals (thousands),TCE,,17173.0000,Only paid accommodation; excluding stays at friends and relatives and second homes.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2005,Tourist/visitor arrivals (thousands),TCE,,19952.0000,Only paid accommodation; excluding stays at friends and relatives and second homes.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2010,Tourist/visitor arrivals (thousands),TCE,,22004.0000,Only paid accommodation; excluding stays at friends and relatives and second homes.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2016,Tourist/visitor arrivals (thousands),TCE,,28121.0000,Only paid accommodation; excluding stays at friends and relatives and second homes.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2017,Tourist/visitor arrivals (thousands),TCE,,29460.0000,Only paid accommodation; excluding stays at friends and relatives and second homes.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2018,Tourist/visitor arrivals (thousands),TCE,,30816.0000,Only paid accommodation; excluding stays at friends and relatives and second homes.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,1995,Tourism expenditure (millions of US dollars),,,13435.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2005,Tourism expenditure (millions of US dollars),,,16243.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2010,Tourism expenditure (millions of US dollars),,,18751.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2016,Tourism expenditure (millions of US dollars),,,19244.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2017,Tourism expenditure (millions of US dollars),,,20333.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +40,Austria,2018,Tourism expenditure (millions of US dollars),,,23233.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2005,Tourist/visitor arrivals (thousands),TF,,693.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2010,Tourist/visitor arrivals (thousands),TF,,1280.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2016,Tourist/visitor arrivals (thousands),TF,,2044.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2017,Tourist/visitor arrivals (thousands),TF,,2454.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2018,Tourist/visitor arrivals (thousands),TF,,2633.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,1995,Tourism expenditure (millions of US dollars),,,87.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2005,Tourism expenditure (millions of US dollars),,,100.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2010,Tourism expenditure (millions of US dollars),,,792.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2016,Tourism expenditure (millions of US dollars),,,2855.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2017,Tourism expenditure (millions of US dollars),,,3214.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +31,Azerbaijan,2018,Tourism expenditure (millions of US dollars),,,2830.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,1995,Tourist/visitor arrivals (thousands),TF,,1598.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2005,Tourist/visitor arrivals (thousands),TF,,1608.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2010,Tourist/visitor arrivals (thousands),TF,,1370.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2016,Tourist/visitor arrivals (thousands),TF,,1500.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2017,Tourist/visitor arrivals (thousands),TF,,1442.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2018,Tourist/visitor arrivals (thousands),TF,,1633.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,1995,Tourism expenditure (millions of US dollars),,,1356.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2005,Tourism expenditure (millions of US dollars),,,2081.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2010,Tourism expenditure (millions of US dollars),,,2159.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2016,Tourism expenditure (millions of US dollars),,,3091.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2017,Tourism expenditure (millions of US dollars),,,3017.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +44,Bahamas,2018,Tourism expenditure (millions of US dollars),,,3383.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,1995,Tourist/visitor arrivals (thousands),VF,,2311.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2005,Tourist/visitor arrivals (thousands),VF,,6313.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2010,Tourist/visitor arrivals (thousands),VF,,11952.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2016,Tourist/visitor arrivals (thousands),VF,,10158.0000,Break in the time series.;Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2017,Tourist/visitor arrivals (thousands),VF,,11374.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2018,Tourist/visitor arrivals (thousands),VF,,12045.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,1995,Tourism expenditure (millions of US dollars),,,593.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2005,Tourism expenditure (millions of US dollars),,,1603.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2010,Tourism expenditure (millions of US dollars),,,2163.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2016,Tourism expenditure (millions of US dollars),,,4021.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2017,Tourism expenditure (millions of US dollars),,,4380.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +48,Bahrain,2018,Tourism expenditure (millions of US dollars),,,3834.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,1995,Tourist/visitor arrivals (thousands),TF,,156.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2005,Tourist/visitor arrivals (thousands),TF,,208.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2010,Tourist/visitor arrivals (thousands),TF,,303.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2016,Tourist/visitor arrivals (thousands),TF,,830.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2017,Tourist/visitor arrivals (thousands),TF,,1026.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2005,Tourism expenditure (millions of US dollars),,,82.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2010,Tourism expenditure (millions of US dollars),,,103.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2016,Tourism expenditure (millions of US dollars),,,214.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2017,Tourism expenditure (millions of US dollars),,,348.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +50,Bangladesh,2018,Tourism expenditure (millions of US dollars),,,357.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,1995,Tourist/visitor arrivals (thousands),TF,,442.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2005,Tourist/visitor arrivals (thousands),TF,,548.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2010,Tourist/visitor arrivals (thousands),TF,,532.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2016,Tourist/visitor arrivals (thousands),TF,,632.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2017,Tourist/visitor arrivals (thousands),TF,,664.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2018,Tourist/visitor arrivals (thousands),TF,,680.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,1995,Tourism expenditure (millions of US dollars),,,630.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2005,Tourism expenditure (millions of US dollars),,,1081.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +52,Barbados,2010,Tourism expenditure (millions of US dollars),,,1074.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,1995,Tourist/visitor arrivals (thousands),TF,,160.6000,Excludes the Belarusian-Russian border segment.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2005,Tourist/visitor arrivals (thousands),TF,,91.0000,Excludes the Belarusian-Russian border segment.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2010,Tourist/visitor arrivals (thousands),TF,,119.3000,Excludes the Belarusian-Russian border segment.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2016,Tourist/visitor arrivals (thousands),TF,,10935.4000,Includes estimation of the Belarusian-Russian border segment.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2017,Tourist/visitor arrivals (thousands),TF,,11060.2000,Includes estimation of the Belarusian-Russian border segment.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2018,Tourist/visitor arrivals (thousands),TF,,11501.6000,Includes estimation of the Belarusian-Russian border segment.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,1995,Tourism expenditure (millions of US dollars),,,28.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2005,Tourism expenditure (millions of US dollars),,,346.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2010,Tourism expenditure (millions of US dollars),,,665.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2016,Tourism expenditure (millions of US dollars),,,1019.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2017,Tourism expenditure (millions of US dollars),,,1124.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +112,Belarus,2018,Tourism expenditure (millions of US dollars),,,1221.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,1995,Tourist/visitor arrivals (thousands),TCE,,5560.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2005,Tourist/visitor arrivals (thousands),TCE,,6747.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2010,Tourist/visitor arrivals (thousands),TCE,,7186.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2016,Tourist/visitor arrivals (thousands),TCE,,7481.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2017,Tourist/visitor arrivals (thousands),TCE,,8385.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2018,Tourist/visitor arrivals (thousands),TCE,,9119.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2005,Tourism expenditure (millions of US dollars),,,10881.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2010,Tourism expenditure (millions of US dollars),,,12680.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2016,Tourism expenditure (millions of US dollars),,,8784.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2017,Tourism expenditure (millions of US dollars),,,9636.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +56,Belgium,2018,Tourism expenditure (millions of US dollars),,,10381.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,1995,Tourist/visitor arrivals (thousands),TF,,131.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2005,Tourist/visitor arrivals (thousands),TF,,237.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2010,Tourist/visitor arrivals (thousands),TF,,242.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2016,Tourist/visitor arrivals (thousands),TF,,386.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2017,Tourist/visitor arrivals (thousands),TF,,427.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2018,Tourist/visitor arrivals (thousands),TF,,489.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,1995,Tourism expenditure (millions of US dollars),,,78.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2005,Tourism expenditure (millions of US dollars),,,214.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2010,Tourism expenditure (millions of US dollars),,,264.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2016,Tourism expenditure (millions of US dollars),,,391.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2017,Tourism expenditure (millions of US dollars),,,427.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +84,Belize,2018,Tourism expenditure (millions of US dollars),,,487.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,1995,Tourist/visitor arrivals (thousands),TF,,138.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2005,Tourist/visitor arrivals (thousands),TF,,176.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2010,Tourist/visitor arrivals (thousands),TF,,199.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2016,Tourist/visitor arrivals (thousands),TF,,267.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2017,Tourist/visitor arrivals (thousands),TF,,281.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2018,Tourist/visitor arrivals (thousands),TF,,295.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2005,Tourism expenditure (millions of US dollars),,,107.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2010,Tourism expenditure (millions of US dollars),,,149.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2016,Tourism expenditure (millions of US dollars),,,129.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +204,Benin,2017,Tourism expenditure (millions of US dollars),,,160.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,1995,Tourist/visitor arrivals (thousands),TF,,387.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2005,Tourist/visitor arrivals (thousands),TF,,270.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2010,Tourist/visitor arrivals (thousands),TF,,232.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2016,Tourist/visitor arrivals (thousands),TF,,244.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2017,Tourist/visitor arrivals (thousands),TF,,270.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2018,Tourist/visitor arrivals (thousands),TF,,282.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,1995,Tourism expenditure (millions of US dollars),,,488.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2005,Tourism expenditure (millions of US dollars),,,429.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2010,Tourism expenditure (millions of US dollars),,,442.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2016,Tourism expenditure (millions of US dollars),,,441.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2017,Tourism expenditure (millions of US dollars),,,513.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +60,Bermuda,2018,Tourism expenditure (millions of US dollars),,,583.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,1995,Tourist/visitor arrivals (thousands),TF,,4.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2005,Tourist/visitor arrivals (thousands),TF,,13.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2010,Tourist/visitor arrivals (thousands),TF,,41.0000,Break in the time series.;Including regional high end tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2016,Tourist/visitor arrivals (thousands),TF,,210.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2017,Tourist/visitor arrivals (thousands),TF,,255.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2018,Tourist/visitor arrivals (thousands),TF,,274.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,1995,Tourism expenditure (millions of US dollars),,,5.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2005,Tourism expenditure (millions of US dollars),,,19.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2010,Tourism expenditure (millions of US dollars),,,64.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2016,Tourism expenditure (millions of US dollars),,,139.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2017,Tourism expenditure (millions of US dollars),,,153.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +64,Bhutan,2018,Tourism expenditure (millions of US dollars),,,121.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),1995,Tourist/visitor arrivals (thousands),TF,,284.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2005,Tourist/visitor arrivals (thousands),TF,,524.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2010,Tourist/visitor arrivals (thousands),TF,,679.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2016,Tourist/visitor arrivals (thousands),TF,,961.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2017,Tourist/visitor arrivals (thousands),TF,,1109.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2018,Tourist/visitor arrivals (thousands),TF,,1142.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),1995,Tourism expenditure (millions of US dollars),,,92.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2005,Tourism expenditure (millions of US dollars),,,345.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2010,Tourism expenditure (millions of US dollars),,,339.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2016,Tourism expenditure (millions of US dollars),,,827.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2017,Tourism expenditure (millions of US dollars),,,912.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +68,Bolivia (Plurin. State of),2018,Tourism expenditure (millions of US dollars),,,970.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +669,Bonaire,1995,Tourist/visitor arrivals (thousands),TF,,59.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +669,Bonaire,2005,Tourist/visitor arrivals (thousands),TF,,63.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +669,Bonaire,2010,Tourist/visitor arrivals (thousands),TF,,71.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +669,Bonaire,1995,Tourism expenditure (millions of US dollars),,,37.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +669,Bonaire,2005,Tourism expenditure (millions of US dollars),,,87.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2005,Tourist/visitor arrivals (thousands),TCE,,217.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2010,Tourist/visitor arrivals (thousands),TCE,,365.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2016,Tourist/visitor arrivals (thousands),TCE,,778.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2017,Tourist/visitor arrivals (thousands),TCE,,923.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2018,Tourist/visitor arrivals (thousands),TCE,,1053.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2005,Tourism expenditure (millions of US dollars),,,557.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2010,Tourism expenditure (millions of US dollars),,,662.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2016,Tourism expenditure (millions of US dollars),,,876.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2017,Tourism expenditure (millions of US dollars),,,985.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +70,Bosnia and Herzegovina,2018,Tourism expenditure (millions of US dollars),,,1081.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,1995,Tourist/visitor arrivals (thousands),TF,,521.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2005,Tourist/visitor arrivals (thousands),TF,,1474.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2010,Tourist/visitor arrivals (thousands),TF,,1973.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2016,Tourist/visitor arrivals (thousands),TF,,1574.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2017,Tourist/visitor arrivals (thousands),TF,,1623.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,1995,Tourism expenditure (millions of US dollars),,,176.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2005,Tourism expenditure (millions of US dollars),,,563.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2010,Tourism expenditure (millions of US dollars),,,440.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2016,Tourism expenditure (millions of US dollars),,,505.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2017,Tourism expenditure (millions of US dollars),,,541.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +72,Botswana,2018,Tourism expenditure (millions of US dollars),,,575.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,1995,Tourist/visitor arrivals (thousands),TF,,1991.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2005,Tourist/visitor arrivals (thousands),TF,,5358.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2010,Tourist/visitor arrivals (thousands),TF,,5161.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2016,Tourist/visitor arrivals (thousands),TF,,6547.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2017,Tourist/visitor arrivals (thousands),TF,,6589.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2018,Tourist/visitor arrivals (thousands),TF,,6621.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,1995,Tourism expenditure (millions of US dollars),,,1085.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2005,Tourism expenditure (millions of US dollars),,,4168.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2010,Tourism expenditure (millions of US dollars),,,5522.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2016,Tourism expenditure (millions of US dollars),,,6613.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2017,Tourism expenditure (millions of US dollars),,,6175.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +76,Brazil,2018,Tourism expenditure (millions of US dollars),,,6324.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,1995,Tourist/visitor arrivals (thousands),TF,,219.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2005,Tourist/visitor arrivals (thousands),TF,,337.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2010,Tourist/visitor arrivals (thousands),TF,,330.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2016,Tourist/visitor arrivals (thousands),TF,,408.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2017,Tourist/visitor arrivals (thousands),TF,,335.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2018,Tourist/visitor arrivals (thousands),TF,,192.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,1995,Tourism expenditure (millions of US dollars),,,211.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2005,Tourism expenditure (millions of US dollars),,,412.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +92,British Virgin Islands,2010,Tourism expenditure (millions of US dollars),,,389.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2005,Tourist/visitor arrivals (thousands),TF,,126.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2010,Tourist/visitor arrivals (thousands),TF,,214.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2016,Tourist/visitor arrivals (thousands),TF,,219.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2017,Tourist/visitor arrivals (thousands),TF,,259.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2018,Tourist/visitor arrivals (thousands),TF,,278.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2005,Tourism expenditure (millions of US dollars),,,191.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2016,Tourism expenditure (millions of US dollars),,,144.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2017,Tourism expenditure (millions of US dollars),,,177.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +96,Brunei Darussalam,2018,Tourism expenditure (millions of US dollars),,,190.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,1995,Tourist/visitor arrivals (thousands),TF,,3466.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2005,Tourist/visitor arrivals (thousands),TF,,4837.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2010,Tourist/visitor arrivals (thousands),TF,,6047.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2016,Tourist/visitor arrivals (thousands),TF,,8252.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2017,Tourist/visitor arrivals (thousands),TF,,8883.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2018,Tourist/visitor arrivals (thousands),TF,,9273.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,1995,Tourism expenditure (millions of US dollars),,,662.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2005,Tourism expenditure (millions of US dollars),,,3063.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2010,Tourism expenditure (millions of US dollars),,,3807.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2016,Tourism expenditure (millions of US dollars),,,4164.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2017,Tourism expenditure (millions of US dollars),,,4678.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +100,Bulgaria,2018,Tourism expenditure (millions of US dollars),,,5072.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,1995,Tourist/visitor arrivals (thousands),THS,,124.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2005,Tourist/visitor arrivals (thousands),THS,,245.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2010,Tourist/visitor arrivals (thousands),THS,,274.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2016,Tourist/visitor arrivals (thousands),THS,,152.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2017,Tourist/visitor arrivals (thousands),THS,,143.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2018,Tourist/visitor arrivals (thousands),THS,,144.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2005,Tourism expenditure (millions of US dollars),,,46.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2010,Tourism expenditure (millions of US dollars),,,105.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2016,Tourism expenditure (millions of US dollars),,,172.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +854,Burkina Faso,2017,Tourism expenditure (millions of US dollars),,,172.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,1995,Tourist/visitor arrivals (thousands),TF,,34.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,2005,Tourist/visitor arrivals (thousands),TF,,148.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,2010,Tourist/visitor arrivals (thousands),TF,,142.0000,Break in the time series.;Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,2016,Tourist/visitor arrivals (thousands),TF,,187.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,2017,Tourist/visitor arrivals (thousands),TF,,299.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,1995,Tourism expenditure (millions of US dollars),,,2.4250,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,2005,Tourism expenditure (millions of US dollars),,,1.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +108,Burundi,2010,Tourism expenditure (millions of US dollars),,,2.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,1995,Tourist/visitor arrivals (thousands),TF,,28.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2005,Tourist/visitor arrivals (thousands),TF,,198.0000,Non-resident tourists staying in hotels and similar establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2010,Tourist/visitor arrivals (thousands),TF,,336.0000,Non-resident tourists staying in hotels and similar establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2016,Tourist/visitor arrivals (thousands),TF,,598.0000,Non-resident tourists staying in hotels and similar establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2017,Tourist/visitor arrivals (thousands),TF,,668.0000,Non-resident tourists staying in hotels and similar establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2018,Tourist/visitor arrivals (thousands),TF,,710.0000,Non-resident tourists staying in hotels and similar establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,1995,Tourism expenditure (millions of US dollars),,,29.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2005,Tourism expenditure (millions of US dollars),,,177.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2010,Tourism expenditure (millions of US dollars),,,387.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2016,Tourism expenditure (millions of US dollars),,,397.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2017,Tourism expenditure (millions of US dollars),,,450.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +132,Cabo Verde,2018,Tourism expenditure (millions of US dollars),,,524.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,1995,Tourist/visitor arrivals (thousands),TF,,220.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2005,Tourist/visitor arrivals (thousands),TF,,1422.0000,Arrivals by all means of transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2010,Tourist/visitor arrivals (thousands),TF,,2508.0000,Arrivals by all means of transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2016,Tourist/visitor arrivals (thousands),TF,,5012.0000,Arrivals by all means of transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2017,Tourist/visitor arrivals (thousands),TF,,5602.0000,Arrivals by all means of transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2018,Tourist/visitor arrivals (thousands),TF,,6201.0000,Arrivals by all means of transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,1995,Tourism expenditure (millions of US dollars),,,71.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2005,Tourism expenditure (millions of US dollars),,,929.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2010,Tourism expenditure (millions of US dollars),,,1671.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2016,Tourism expenditure (millions of US dollars),,,3523.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2017,Tourism expenditure (millions of US dollars),,,4024.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +116,Cambodia,2018,Tourism expenditure (millions of US dollars),,,4832.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2010,Tourist/visitor arrivals (thousands),VF,,573.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2016,Tourist/visitor arrivals (thousands),VF,,994.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2017,Tourist/visitor arrivals (thousands),VF,,1081.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,1995,Tourism expenditure (millions of US dollars),,,75.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2005,Tourism expenditure (millions of US dollars),,,229.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2010,Tourism expenditure (millions of US dollars),,,171.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2016,Tourism expenditure (millions of US dollars),,,508.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2017,Tourism expenditure (millions of US dollars),,,543.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +120,Cameroon,2018,Tourism expenditure (millions of US dollars),,,633.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,1995,Tourist/visitor arrivals (thousands),TF,,16932.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2005,Tourist/visitor arrivals (thousands),TF,,18771.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2010,Tourist/visitor arrivals (thousands),TF,,16219.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2016,Tourist/visitor arrivals (thousands),TF,,19971.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2017,Tourist/visitor arrivals (thousands),TF,,20883.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2018,Tourist/visitor arrivals (thousands),TF,,21134.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,1995,Tourism expenditure (millions of US dollars),,,9176.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2005,Tourism expenditure (millions of US dollars),,,15887.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +124,Canada,2010,Tourism expenditure (millions of US dollars),,,18439.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,1995,Tourist/visitor arrivals (thousands),TF,,361.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2005,Tourist/visitor arrivals (thousands),TF,,168.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2010,Tourist/visitor arrivals (thousands),TF,,288.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2016,Tourist/visitor arrivals (thousands),TF,,385.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2017,Tourist/visitor arrivals (thousands),TF,,418.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2018,Tourist/visitor arrivals (thousands),TF,,463.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,1995,Tourism expenditure (millions of US dollars),,,394.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2005,Tourism expenditure (millions of US dollars),,,356.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2010,Tourism expenditure (millions of US dollars),,,465.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2016,Tourism expenditure (millions of US dollars),,,696.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2017,Tourism expenditure (millions of US dollars),,,782.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +136,Cayman Islands,2018,Tourism expenditure (millions of US dollars),,,880.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,1995,Tourist/visitor arrivals (thousands),TF,,26.0000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,2005,Tourist/visitor arrivals (thousands),TF,,12.0000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,2010,Tourist/visitor arrivals (thousands),TF,,53.8000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,2016,Tourist/visitor arrivals (thousands),TF,,82.0000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,2017,Tourist/visitor arrivals (thousands),TF,,107.0000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,1995,Tourism expenditure (millions of US dollars),,,4.0000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,2005,Tourism expenditure (millions of US dollars),,,7.2000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +140,Central African Republic,2010,Tourism expenditure (millions of US dollars),,,14.4000,Arrivals by air at Bangui only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +148,Chad,2010,Tourist/visitor arrivals (thousands),TF,,71.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +148,Chad,2016,Tourist/visitor arrivals (thousands),TF,,98.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +148,Chad,2017,Tourist/visitor arrivals (thousands),TF,,87.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +148,Chad,1995,Tourism expenditure (millions of US dollars),,,43.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,1995,Tourist/visitor arrivals (thousands),TF,,1540.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2005,Tourist/visitor arrivals (thousands),TF,,2027.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2010,Tourist/visitor arrivals (thousands),TF,,2801.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2016,Tourist/visitor arrivals (thousands),TF,,5641.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2017,Tourist/visitor arrivals (thousands),TF,,6450.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2018,Tourist/visitor arrivals (thousands),TF,,5723.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,1995,Tourism expenditure (millions of US dollars),,,1186.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2005,Tourism expenditure (millions of US dollars),,,1608.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2010,Tourism expenditure (millions of US dollars),,,2362.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2016,Tourism expenditure (millions of US dollars),,,3744.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2017,Tourism expenditure (millions of US dollars),,,4372.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +152,Chile,2018,Tourism expenditure (millions of US dollars),,,3972.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,1995,Tourist/visitor arrivals (thousands),TF,,20034.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2005,Tourist/visitor arrivals (thousands),TF,,46809.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2010,Tourist/visitor arrivals (thousands),TF,,55664.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2016,Tourist/visitor arrivals (thousands),TF,,59270.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2017,Tourist/visitor arrivals (thousands),TF,,60740.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2018,Tourist/visitor arrivals (thousands),TF,,62900.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,1995,Tourism expenditure (millions of US dollars),,,8730.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.;Excluding passenger transport.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2005,Tourism expenditure (millions of US dollars),,,29296.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.;Excluding passenger transport.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2010,Tourism expenditure (millions of US dollars),,,45814.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.;Excluding passenger transport.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2016,Tourism expenditure (millions of US dollars),,,44432.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.;Excluding passenger transport.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2017,Tourism expenditure (millions of US dollars),,,38559.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.;Excluding passenger transport.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +156,China,2018,Tourism expenditure (millions of US dollars),,,40386.0000,"For statistical purposes, the data for China do not include those for the Hong Kong Special Administrative Region (Hong Kong SAR), Macao Special Administrative Region (Macao SAR) and Taiwan Province of China.;Excluding passenger transport.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2005,Tourist/visitor arrivals (thousands),TF,,14773.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2010,Tourist/visitor arrivals (thousands),TF,,20085.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2016,Tourist/visitor arrivals (thousands),TF,,26553.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2017,Tourist/visitor arrivals (thousands),TF,,27884.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2018,Tourist/visitor arrivals (thousands),TF,,29263.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2005,Tourism expenditure (millions of US dollars),,,13588.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2010,Tourism expenditure (millions of US dollars),,,27208.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2016,Tourism expenditure (millions of US dollars),,,37838.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2017,Tourism expenditure (millions of US dollars),,,38170.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +344,"China, Hong Kong SAR",2018,Tourism expenditure (millions of US dollars),,,41870.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",1995,Tourist/visitor arrivals (thousands),TF,,4202.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2005,Tourist/visitor arrivals (thousands),TF,,9014.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2010,Tourist/visitor arrivals (thousands),TF,,11926.0000,"Does not include other non-residents namely workers, students, etc.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2016,Tourist/visitor arrivals (thousands),TF,,15703.6000,"Does not include other non-residents namely workers, students, etc.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2017,Tourist/visitor arrivals (thousands),TF,,17255.0000,"Does not include other non-residents namely workers, students, etc.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2018,Tourist/visitor arrivals (thousands),TF,,18493.0000,"Does not include other non-residents namely workers, students, etc.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",1995,Tourism expenditure (millions of US dollars),,,3233.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2005,Tourism expenditure (millions of US dollars),,,7181.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2010,Tourism expenditure (millions of US dollars),,,22688.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2016,Tourism expenditure (millions of US dollars),,,31015.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2017,Tourism expenditure (millions of US dollars),,,36465.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +446,"China, Macao SAR",2018,Tourism expenditure (millions of US dollars),,,40358.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,1995,Tourist/visitor arrivals (thousands),TF,,1399.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2005,Tourist/visitor arrivals (thousands),TF,,933.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2010,Tourist/visitor arrivals (thousands),TF,,1405.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2016,Tourist/visitor arrivals (thousands),TF,,3254.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2017,Tourist/visitor arrivals (thousands),TF,,3631.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2018,Tourist/visitor arrivals (thousands),TF,,3904.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,1995,Tourism expenditure (millions of US dollars),,,887.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2005,Tourism expenditure (millions of US dollars),,,1891.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2010,Tourism expenditure (millions of US dollars),,,3441.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2016,Tourism expenditure (millions of US dollars),,,5584.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2017,Tourism expenditure (millions of US dollars),,,5882.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +170,Colombia,2018,Tourism expenditure (millions of US dollars),,,6617.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,1995,Tourist/visitor arrivals (thousands),TF,,23.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2005,Tourist/visitor arrivals (thousands),TF,,25.9000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2010,Tourist/visitor arrivals (thousands),TF,,15.3000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2016,Tourist/visitor arrivals (thousands),TF,,26.8000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2017,Tourist/visitor arrivals (thousands),TF,,28.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2018,Tourist/visitor arrivals (thousands),TF,,35.9000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,1995,Tourism expenditure (millions of US dollars),,,22.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2005,Tourism expenditure (millions of US dollars),,,24.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2010,Tourism expenditure (millions of US dollars),,,35.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2016,Tourism expenditure (millions of US dollars),,,50.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2017,Tourism expenditure (millions of US dollars),,,60.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +174,Comoros,2018,Tourism expenditure (millions of US dollars),,,76.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2005,Tourist/visitor arrivals (thousands),TF,,35.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2010,Tourist/visitor arrivals (thousands),TF,,194.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2016,Tourist/visitor arrivals (thousands),TF,,211.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2017,Tourist/visitor arrivals (thousands),TF,,149.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2018,Tourist/visitor arrivals (thousands),TF,,156.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,1995,Tourism expenditure (millions of US dollars),,,14.6691,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2010,Tourism expenditure (millions of US dollars),,,39.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +178,Congo,2016,Tourism expenditure (millions of US dollars),,,42.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,1995,Tourist/visitor arrivals (thousands),TF,,48.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2005,Tourist/visitor arrivals (thousands),TF,,88.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2010,Tourist/visitor arrivals (thousands),TF,,104.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2016,Tourist/visitor arrivals (thousands),TF,,146.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2017,Tourist/visitor arrivals (thousands),TF,,161.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2018,Tourist/visitor arrivals (thousands),TF,,169.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,1995,Tourism expenditure (millions of US dollars),,,28.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2005,Tourism expenditure (millions of US dollars),,,91.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2010,Tourism expenditure (millions of US dollars),,,111.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2016,Tourism expenditure (millions of US dollars),,,137.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +184,Cook Islands,2017,Tourism expenditure (millions of US dollars),,,153.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,1995,Tourist/visitor arrivals (thousands),TF,,785.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2005,Tourist/visitor arrivals (thousands),TF,,1679.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2010,Tourist/visitor arrivals (thousands),TF,,2100.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2016,Tourist/visitor arrivals (thousands),TF,,2925.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2017,Tourist/visitor arrivals (thousands),TF,,2960.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2018,Tourist/visitor arrivals (thousands),TF,,3017.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,1995,Tourism expenditure (millions of US dollars),,,763.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2005,Tourism expenditure (millions of US dollars),,,2008.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2010,Tourism expenditure (millions of US dollars),,,2426.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2016,Tourism expenditure (millions of US dollars),,,3776.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2017,Tourism expenditure (millions of US dollars),,,3826.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +188,Costa Rica,2018,Tourism expenditure (millions of US dollars),,,3995.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2010,Tourist/visitor arrivals (thousands),VF,,252.0000,Arrivals to Félix Houphouët Boigny Airport only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2016,Tourist/visitor arrivals (thousands),VF,,1583.0000,Arrivals to Félix Houphouët Boigny Airport only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2017,Tourist/visitor arrivals (thousands),VF,,1800.0000,Arrivals to Félix Houphouët Boigny Airport only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2018,Tourist/visitor arrivals (thousands),VF,,1965.0000,Arrivals to Félix Houphouët Boigny Airport only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,1995,Tourism expenditure (millions of US dollars),,,103.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2005,Tourism expenditure (millions of US dollars),,,93.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2010,Tourism expenditure (millions of US dollars),,,213.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2016,Tourism expenditure (millions of US dollars),,,477.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +384,Côte d’Ivoire,2017,Tourism expenditure (millions of US dollars),,,508.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,1995,Tourist/visitor arrivals (thousands),TCE,,1485.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2005,Tourist/visitor arrivals (thousands),TCE,,7743.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2010,Tourist/visitor arrivals (thousands),TCE,,9111.0000,Excluding arrivals in ports of nautical tourism.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2016,Tourist/visitor arrivals (thousands),TCE,,13809.0000,Excluding arrivals in ports of nautical tourism.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2017,Tourist/visitor arrivals (thousands),TCE,,15593.0000,Excluding arrivals in ports of nautical tourism.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2018,Tourist/visitor arrivals (thousands),TCE,,16645.0000,Excluding arrivals in ports of nautical tourism.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2005,Tourism expenditure (millions of US dollars),,,7625.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2010,Tourism expenditure (millions of US dollars),,,8299.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2016,Tourism expenditure (millions of US dollars),,,9820.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2017,Tourism expenditure (millions of US dollars),,,11128.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +191,Croatia,2018,Tourism expenditure (millions of US dollars),,,12075.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,1995,Tourist/visitor arrivals (thousands),TF,,742.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2005,Tourist/visitor arrivals (thousands),TF,,2261.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2010,Tourist/visitor arrivals (thousands),TF,,2507.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2016,Tourist/visitor arrivals (thousands),TF,,3975.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2017,Tourist/visitor arrivals (thousands),TF,,4594.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2018,Tourist/visitor arrivals (thousands),TF,,4684.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,1995,Tourism expenditure (millions of US dollars),,,1100.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2005,Tourism expenditure (millions of US dollars),,,2591.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2010,Tourism expenditure (millions of US dollars),,,2396.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2016,Tourism expenditure (millions of US dollars),,,3069.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2017,Tourism expenditure (millions of US dollars),,,3302.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +192,Cuba,2018,Tourism expenditure (millions of US dollars),,,2969.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,1995,Tourist/visitor arrivals (thousands),TF,,224.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2005,Tourist/visitor arrivals (thousands),TF,,222.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2010,Tourist/visitor arrivals (thousands),TF,,342.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2016,Tourist/visitor arrivals (thousands),TF,,441.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2017,Tourist/visitor arrivals (thousands),TF,,399.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2018,Tourist/visitor arrivals (thousands),TF,,432.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,1995,Tourism expenditure (millions of US dollars),,,175.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2005,Tourism expenditure (millions of US dollars),,,244.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2010,Tourism expenditure (millions of US dollars),,,438.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2016,Tourism expenditure (millions of US dollars),,,644.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2017,Tourism expenditure (millions of US dollars),,,572.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +531,Curaçao,2018,Tourism expenditure (millions of US dollars),,,605.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,1995,Tourist/visitor arrivals (thousands),TF,,2100.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2005,Tourist/visitor arrivals (thousands),TF,,2470.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2010,Tourist/visitor arrivals (thousands),TF,,2173.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2016,Tourist/visitor arrivals (thousands),TF,,3187.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2017,Tourist/visitor arrivals (thousands),TF,,3652.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2018,Tourist/visitor arrivals (thousands),TF,,3939.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,1995,Tourism expenditure (millions of US dollars),,,2018.0443,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2005,Tourism expenditure (millions of US dollars),,,2644.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2010,Tourism expenditure (millions of US dollars),,,2137.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2016,Tourism expenditure (millions of US dollars),,,2870.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2017,Tourism expenditure (millions of US dollars),,,3274.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +196,Cyprus,2018,Tourism expenditure (millions of US dollars),,,3449.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2005,Tourist/visitor arrivals (thousands),TF,,9404.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2010,Tourist/visitor arrivals (thousands),TF,,8629.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2016,Tourist/visitor arrivals (thousands),TF,,12808.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2017,Tourist/visitor arrivals (thousands),TF,,13665.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2005,Tourism expenditure (millions of US dollars),,,5772.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2010,Tourism expenditure (millions of US dollars),,,8068.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2016,Tourism expenditure (millions of US dollars),,,7041.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2017,Tourism expenditure (millions of US dollars),,,7695.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +203,Czechia,2018,Tourism expenditure (millions of US dollars),,,8291.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,1995,Tourist/visitor arrivals (thousands),TF,,35.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2005,Tourist/visitor arrivals (thousands),TF,,61.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2010,Tourist/visitor arrivals (thousands),TF,,81.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2016,Tourist/visitor arrivals (thousands),TF,,351.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2005,Tourism expenditure (millions of US dollars),,,3.2000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2010,Tourism expenditure (millions of US dollars),,,10.7000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2016,Tourism expenditure (millions of US dollars),,,4.3000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2017,Tourism expenditure (millions of US dollars),,,6.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +180,Dem. Rep. of the Congo,2018,Tourism expenditure (millions of US dollars),,,60.5000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2005,Tourist/visitor arrivals (thousands),TCE,,9587.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2010,Tourist/visitor arrivals (thousands),TCE,,9425.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2016,Tourist/visitor arrivals (thousands),TCE,,10781.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2017,Tourist/visitor arrivals (thousands),TCE,,12426.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2018,Tourist/visitor arrivals (thousands),TCE,,12749.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,1995,Tourism expenditure (millions of US dollars),,,3691.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2005,Tourism expenditure (millions of US dollars),,,5293.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2010,Tourism expenditure (millions of US dollars),,,5704.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2016,Tourism expenditure (millions of US dollars),,,7494.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2017,Tourism expenditure (millions of US dollars),,,8508.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +208,Denmark,2018,Tourism expenditure (millions of US dollars),,,9097.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,1995,Tourist/visitor arrivals (thousands),THS,,21.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2005,Tourist/visitor arrivals (thousands),THS,,30.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2010,Tourist/visitor arrivals (thousands),THS,,51.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,1995,Tourism expenditure (millions of US dollars),,,5.4000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2005,Tourism expenditure (millions of US dollars),,,7.1000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2010,Tourism expenditure (millions of US dollars),,,18.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2016,Tourism expenditure (millions of US dollars),,,33.5000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2017,Tourism expenditure (millions of US dollars),,,36.2000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +262,Djibouti,2018,Tourism expenditure (millions of US dollars),,,57.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,1995,Tourist/visitor arrivals (thousands),TF,,60.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2005,Tourist/visitor arrivals (thousands),TF,,79.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2010,Tourist/visitor arrivals (thousands),TF,,77.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2016,Tourist/visitor arrivals (thousands),TF,,78.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2017,Tourist/visitor arrivals (thousands),TF,,72.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2018,Tourist/visitor arrivals (thousands),TF,,63.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,1995,Tourism expenditure (millions of US dollars),,,42.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2005,Tourism expenditure (millions of US dollars),,,57.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2010,Tourism expenditure (millions of US dollars),,,94.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2016,Tourism expenditure (millions of US dollars),,,198.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2017,Tourism expenditure (millions of US dollars),,,161.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +212,Dominica,2018,Tourism expenditure (millions of US dollars),,,111.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,1995,Tourist/visitor arrivals (thousands),TF,,1776.0000,Including nationals residing abroad.;Arrivals by air.;Excluding the passengers at Herrera airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2005,Tourist/visitor arrivals (thousands),TF,,3691.0000,Including nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2010,Tourist/visitor arrivals (thousands),TF,,4125.0000,Including nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2016,Tourist/visitor arrivals (thousands),TF,,5959.3000,Including nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2017,Tourist/visitor arrivals (thousands),TF,,6188.0000,Including nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2018,Tourist/visitor arrivals (thousands),TF,,6569.0000,Including nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,1995,Tourism expenditure (millions of US dollars),,,1571.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2005,Tourism expenditure (millions of US dollars),,,3518.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2010,Tourism expenditure (millions of US dollars),,,4162.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2016,Tourism expenditure (millions of US dollars),,,6720.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2017,Tourism expenditure (millions of US dollars),,,7184.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +214,Dominican Republic,2018,Tourism expenditure (millions of US dollars),,,7561.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,1995,Tourist/visitor arrivals (thousands),VF,,440.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2005,Tourist/visitor arrivals (thousands),VF,,860.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2010,Tourist/visitor arrivals (thousands),VF,,1047.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2016,Tourist/visitor arrivals (thousands),VF,,1569.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2017,Tourist/visitor arrivals (thousands),VF,,1806.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2018,Tourist/visitor arrivals (thousands),VF,,2535.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,1995,Tourism expenditure (millions of US dollars),,,315.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2005,Tourism expenditure (millions of US dollars),,,488.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2010,Tourism expenditure (millions of US dollars),,,786.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2016,Tourism expenditure (millions of US dollars),,,1450.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2017,Tourism expenditure (millions of US dollars),,,1554.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +218,Ecuador,2018,Tourism expenditure (millions of US dollars),,,1878.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,1995,Tourist/visitor arrivals (thousands),TF,,2871.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2005,Tourist/visitor arrivals (thousands),TF,,8244.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2010,Tourist/visitor arrivals (thousands),TF,,14051.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2016,Tourist/visitor arrivals (thousands),TF,,5258.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2017,Tourist/visitor arrivals (thousands),TF,,8157.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2018,Tourist/visitor arrivals (thousands),TF,,11196.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,1995,Tourism expenditure (millions of US dollars),,,2954.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2005,Tourism expenditure (millions of US dollars),,,7206.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2010,Tourism expenditure (millions of US dollars),,,13633.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2016,Tourism expenditure (millions of US dollars),,,3306.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2017,Tourism expenditure (millions of US dollars),,,8636.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +818,Egypt,2018,Tourism expenditure (millions of US dollars),,,12704.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,1995,Tourist/visitor arrivals (thousands),TF,,235.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2005,Tourist/visitor arrivals (thousands),TF,,1127.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2010,Tourist/visitor arrivals (thousands),TF,,1150.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2016,Tourist/visitor arrivals (thousands),TF,,1434.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2017,Tourist/visitor arrivals (thousands),TF,,1556.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2018,Tourist/visitor arrivals (thousands),TF,,1677.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,1995,Tourism expenditure (millions of US dollars),,,152.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2005,Tourism expenditure (millions of US dollars),,,656.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2010,Tourism expenditure (millions of US dollars),,,646.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2016,Tourism expenditure (millions of US dollars),,,1161.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2017,Tourism expenditure (millions of US dollars),,,1227.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +222,El Salvador,2018,Tourism expenditure (millions of US dollars),,,1370.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +226,Equatorial Guinea,1995,Tourism expenditure (millions of US dollars),,,1.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,1995,Tourist/visitor arrivals (thousands),VF,,315.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,2005,Tourist/visitor arrivals (thousands),VF,,83.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,2010,Tourist/visitor arrivals (thousands),VF,,84.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,2016,Tourist/visitor arrivals (thousands),VF,,142.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,1995,Tourism expenditure (millions of US dollars),,,58.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,2005,Tourism expenditure (millions of US dollars),,,66.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +232,Eritrea,2016,Tourism expenditure (millions of US dollars),,,48.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,1995,Tourist/visitor arrivals (thousands),TF,,530.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2005,Tourist/visitor arrivals (thousands),TF,,1917.0000,"Border statistics are not collected any more, surveys used instead.;Calculated on the basis of accommodation statistics and “Foreign Visitor Survey” carried out by the Statistical Office of Estonia.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2010,Tourist/visitor arrivals (thousands),TF,,2511.0000,"Border statistics are not collected any more, surveys used instead.;Based on mobile positioning data.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2016,Tourist/visitor arrivals (thousands),TF,,3131.0000,"Border statistics are not collected any more, surveys used instead.;Based on mobile positioning data.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2017,Tourist/visitor arrivals (thousands),TF,,3244.0000,"Border statistics are not collected any more, surveys used instead.;Based on mobile positioning data.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2018,Tourist/visitor arrivals (thousands),TF,,3234.0000,"Border statistics are not collected any more, surveys used instead.;Based on mobile positioning data.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,1995,Tourism expenditure (millions of US dollars),,,452.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2005,Tourism expenditure (millions of US dollars),,,1229.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2016,Tourism expenditure (millions of US dollars),,,1916.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2017,Tourism expenditure (millions of US dollars),,,2126.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +233,Estonia,2018,Tourism expenditure (millions of US dollars),,,2332.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,1995,Tourist/visitor arrivals (thousands),TF,,300.0000,Arrivals in hotels only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2005,Tourist/visitor arrivals (thousands),TF,,837.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2010,Tourist/visitor arrivals (thousands),TF,,868.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2016,Tourist/visitor arrivals (thousands),TF,,947.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2017,Tourist/visitor arrivals (thousands),TF,,921.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2018,Tourist/visitor arrivals (thousands),TF,,782.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,1995,Tourism expenditure (millions of US dollars),,,54.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2005,Tourism expenditure (millions of US dollars),,,77.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2010,Tourism expenditure (millions of US dollars),,,51.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2016,Tourism expenditure (millions of US dollars),,,13.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2017,Tourism expenditure (millions of US dollars),,,13.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +748,Eswatini,2018,Tourism expenditure (millions of US dollars),,,16.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,1995,Tourist/visitor arrivals (thousands),TF,,103.0000,Arrivals to Bole airport only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2005,Tourist/visitor arrivals (thousands),TF,,227.0000,Including nationals residing abroad.;Arrivals through all ports of entry.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2010,Tourist/visitor arrivals (thousands),TF,,468.0000,Including nationals residing abroad.;Arrivals through all ports of entry.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2016,Tourist/visitor arrivals (thousands),TF,,871.0000,Including nationals residing abroad.;Arrivals through all ports of entry.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2017,Tourist/visitor arrivals (thousands),TF,,933.0000,Including nationals residing abroad.;Arrivals through all ports of entry.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2018,Tourist/visitor arrivals (thousands),TF,,849.0000,Including nationals residing abroad.;Arrivals through all ports of entry.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,1995,Tourism expenditure (millions of US dollars),,,177.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2005,Tourism expenditure (millions of US dollars),,,533.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2010,Tourism expenditure (millions of US dollars),,,1434.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2016,Tourism expenditure (millions of US dollars),,,2138.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2017,Tourism expenditure (millions of US dollars),,,2505.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +231,Ethiopia,2018,Tourism expenditure (millions of US dollars),,,3548.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,1995,Tourist/visitor arrivals (thousands),TF,,318.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2005,Tourist/visitor arrivals (thousands),TF,,545.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2010,Tourist/visitor arrivals (thousands),TF,,632.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2016,Tourist/visitor arrivals (thousands),TF,,792.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2017,Tourist/visitor arrivals (thousands),TF,,843.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2018,Tourist/visitor arrivals (thousands),TF,,870.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,1995,Tourism expenditure (millions of US dollars),,,369.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2005,Tourism expenditure (millions of US dollars),,,722.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2010,Tourism expenditure (millions of US dollars),,,825.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2016,Tourism expenditure (millions of US dollars),,,1149.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2017,Tourism expenditure (millions of US dollars),,,1243.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +242,Fiji,2018,Tourism expenditure (millions of US dollars),,,1370.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,1995,Tourist/visitor arrivals (thousands),TCE,,1779.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2005,Tourist/visitor arrivals (thousands),TCE,,2080.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2010,Tourist/visitor arrivals (thousands),TCE,,2319.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2016,Tourist/visitor arrivals (thousands),TCE,,2789.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2017,Tourist/visitor arrivals (thousands),TCE,,3180.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2018,Tourist/visitor arrivals (thousands),TCE,,3224.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,1995,Tourism expenditure (millions of US dollars),,,2383.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2005,Tourism expenditure (millions of US dollars),,,3069.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2010,Tourism expenditure (millions of US dollars),,,4497.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2016,Tourism expenditure (millions of US dollars),,,4016.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2017,Tourism expenditure (millions of US dollars),,,5207.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +246,Finland,2018,Tourism expenditure (millions of US dollars),,,5663.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,1995,Tourist/visitor arrivals (thousands),TF,,60033.0000,Estimated based on surveys at national borders.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2005,Tourist/visitor arrivals (thousands),TF,,74988.0000,Arrivals of non-resident visitors.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2010,Tourist/visitor arrivals (thousands),TF,,76647.0000,Arrivals of non-resident visitors.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2016,Tourist/visitor arrivals (thousands),TF,,82682.0000,Arrivals of non-resident visitors.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2017,Tourist/visitor arrivals (thousands),TF,,86758.0000,Arrivals of non-resident visitors.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2018,Tourist/visitor arrivals (thousands),TF,,89322.0000,Estimate.;Arrivals of non-resident visitors.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,1995,Tourism expenditure (millions of US dollars),,,31295.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2005,Tourism expenditure (millions of US dollars),,,52126.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2010,Tourism expenditure (millions of US dollars),,,56178.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2016,Tourism expenditure (millions of US dollars),,,63557.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2017,Tourism expenditure (millions of US dollars),,,67936.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +250,France,2018,Tourism expenditure (millions of US dollars),,,73125.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +254,French Guiana,2005,Tourist/visitor arrivals (thousands),TF,,95.0000,Survey at Cayenne-Rochambeau airport on departure.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +254,French Guiana,2016,Tourist/visitor arrivals (thousands),TF,,96.0000,Survey at Cayenne-Rochambeau airport on departure.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +254,French Guiana,2017,Tourist/visitor arrivals (thousands),TF,,111.0000,Survey at Cayenne-Rochambeau airport on departure.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +254,French Guiana,2005,Tourism expenditure (millions of US dollars),,,44.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,1995,Tourist/visitor arrivals (thousands),TF,,172.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2005,Tourist/visitor arrivals (thousands),TF,,208.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2010,Tourist/visitor arrivals (thousands),TF,,154.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2016,Tourist/visitor arrivals (thousands),TF,,192.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2017,Tourist/visitor arrivals (thousands),TF,,199.0000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2018,Tourist/visitor arrivals (thousands),TF,,216.3000,Excluding nationals residing abroad.;Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,1995,Tourism expenditure (millions of US dollars),,,326.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2005,Tourism expenditure (millions of US dollars),,,759.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2010,Tourism expenditure (millions of US dollars),,,630.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +258,French Polynesia,2016,Tourism expenditure (millions of US dollars),,,782.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +266,Gabon,1995,Tourist/visitor arrivals (thousands),TF,,125.0000,Arrivals of non-resident tourists at Libreville airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +266,Gabon,2005,Tourist/visitor arrivals (thousands),TF,,269.0000,Arrivals of non-resident tourists at Libreville airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +266,Gabon,1995,Tourism expenditure (millions of US dollars),,,94.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +266,Gabon,2005,Tourism expenditure (millions of US dollars),,,13.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +266,Gabon,2010,Tourism expenditure (millions of US dollars),,,89.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +266,Gabon,2016,Tourism expenditure (millions of US dollars),,,28.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,1995,Tourist/visitor arrivals (thousands),TF,,45.0000,Including nationals residing abroad.;Arrivals by air only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2005,Tourist/visitor arrivals (thousands),TF,,108.0000,Including nationals residing abroad.;Arrivals by air only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2010,Tourist/visitor arrivals (thousands),TF,,91.0000,Including nationals residing abroad.;Arrivals by air only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2016,Tourist/visitor arrivals (thousands),TF,,450.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2017,Tourist/visitor arrivals (thousands),TF,,522.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2018,Tourist/visitor arrivals (thousands),TF,,552.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2005,Tourism expenditure (millions of US dollars),,,59.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2010,Tourism expenditure (millions of US dollars),,,80.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2016,Tourism expenditure (millions of US dollars),,,120.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2017,Tourism expenditure (millions of US dollars),,,116.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +270,Gambia,2018,Tourism expenditure (millions of US dollars),,,168.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2010,Tourist/visitor arrivals (thousands),TF,,1067.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2016,Tourist/visitor arrivals (thousands),TF,,3297.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2017,Tourist/visitor arrivals (thousands),TF,,4069.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2018,Tourist/visitor arrivals (thousands),TF,,4757.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2005,Tourism expenditure (millions of US dollars),,,287.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2010,Tourism expenditure (millions of US dollars),,,737.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2016,Tourism expenditure (millions of US dollars),,,2315.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2017,Tourism expenditure (millions of US dollars),,,2971.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +268,Georgia,2018,Tourism expenditure (millions of US dollars),,,3518.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,1995,Tourist/visitor arrivals (thousands),TCE,,14847.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2005,Tourist/visitor arrivals (thousands),TCE,,21500.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2010,Tourist/visitor arrivals (thousands),TCE,,26875.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2016,Tourist/visitor arrivals (thousands),TCE,,35555.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2017,Tourist/visitor arrivals (thousands),TCE,,37452.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2018,Tourist/visitor arrivals (thousands),TCE,,38881.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,1995,Tourism expenditure (millions of US dollars),,,24053.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2005,Tourism expenditure (millions of US dollars),,,40518.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2010,Tourism expenditure (millions of US dollars),,,49116.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2016,Tourism expenditure (millions of US dollars),,,52229.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2017,Tourism expenditure (millions of US dollars),,,56330.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +276,Germany,2018,Tourism expenditure (millions of US dollars),,,60260.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,1995,Tourist/visitor arrivals (thousands),TF,,286.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2005,Tourist/visitor arrivals (thousands),TF,,429.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2010,Tourist/visitor arrivals (thousands),TF,,931.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,1995,Tourism expenditure (millions of US dollars),,,30.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2005,Tourism expenditure (millions of US dollars),,,867.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2010,Tourism expenditure (millions of US dollars),,,706.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2016,Tourism expenditure (millions of US dollars),,,952.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2017,Tourism expenditure (millions of US dollars),,,919.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +288,Ghana,2018,Tourism expenditure (millions of US dollars),,,996.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,1995,Tourist/visitor arrivals (thousands),TF,,10130.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2005,Tourist/visitor arrivals (thousands),TF,,14765.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2010,Tourist/visitor arrivals (thousands),TF,,15007.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2016,Tourist/visitor arrivals (thousands),TF,,24799.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2017,Tourist/visitor arrivals (thousands),TF,,27194.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2018,Tourist/visitor arrivals (thousands),TF,,30123.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,1995,Tourism expenditure (millions of US dollars),,,4182.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2005,Tourism expenditure (millions of US dollars),,,13455.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2010,Tourism expenditure (millions of US dollars),,,13857.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2016,Tourism expenditure (millions of US dollars),,,16811.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2017,Tourism expenditure (millions of US dollars),,,19139.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +300,Greece,2018,Tourism expenditure (millions of US dollars),,,21594.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,1995,Tourist/visitor arrivals (thousands),TF,,108.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2005,Tourist/visitor arrivals (thousands),TF,,99.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2010,Tourist/visitor arrivals (thousands),TF,,110.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2016,Tourist/visitor arrivals (thousands),TF,,156.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2017,Tourist/visitor arrivals (thousands),TF,,168.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2018,Tourist/visitor arrivals (thousands),TF,,185.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,1995,Tourism expenditure (millions of US dollars),,,76.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2005,Tourism expenditure (millions of US dollars),,,71.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2010,Tourism expenditure (millions of US dollars),,,112.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2016,Tourism expenditure (millions of US dollars),,,437.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2017,Tourism expenditure (millions of US dollars),,,482.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +308,Grenada,2018,Tourism expenditure (millions of US dollars),,,548.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,1995,Tourist/visitor arrivals (thousands),TF,,640.0000,"Arrivals by air.;Excluding the north islands, Saint Barthélemy and Saint Martin (French part).;Non-resident tourists staying in all types of accommodation establishments.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2005,Tourist/visitor arrivals (thousands),TF,,372.0000,"Arrivals by air.;Excluding the north islands, Saint Barthélemy and Saint Martin (French part).","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2010,Tourist/visitor arrivals (thousands),TF,,392.0000,"Arrivals by air.;Excluding the north islands, Saint Barthélemy and Saint Martin (French part).","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2016,Tourist/visitor arrivals (thousands),TF,,581.0000,"Arrivals by air.;Excluding the north islands, Saint Barthélemy and Saint Martin (French part).","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2017,Tourist/visitor arrivals (thousands),TF,,650.0000,"Arrivals by air.;Excluding the north islands, Saint Barthélemy and Saint Martin (French part).","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2018,Tourist/visitor arrivals (thousands),TF,,735.0000,"Arrivals by air.;Excluding the north islands, Saint Barthélemy and Saint Martin (French part).","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,1995,Tourism expenditure (millions of US dollars),,,458.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2005,Tourism expenditure (millions of US dollars),,,306.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2010,Tourism expenditure (millions of US dollars),,,510.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +312,Guadeloupe,2018,Tourism expenditure (millions of US dollars),,,860.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +316,Guam,1995,Tourist/visitor arrivals (thousands),TF,,1362.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +316,Guam,2005,Tourist/visitor arrivals (thousands),TF,,1228.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +316,Guam,2010,Tourist/visitor arrivals (thousands),TF,,1197.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +316,Guam,2016,Tourist/visitor arrivals (thousands),TF,,1536.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +316,Guam,2017,Tourist/visitor arrivals (thousands),TF,,1545.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +316,Guam,2018,Tourist/visitor arrivals (thousands),TF,,1549.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2010,Tourist/visitor arrivals (thousands),TF,,1119.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2016,Tourist/visitor arrivals (thousands),TF,,1585.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2017,Tourist/visitor arrivals (thousands),TF,,1660.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2018,Tourist/visitor arrivals (thousands),TF,,1781.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,1995,Tourism expenditure (millions of US dollars),,,213.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2005,Tourism expenditure (millions of US dollars),,,791.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2010,Tourism expenditure (millions of US dollars),,,1378.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2016,Tourism expenditure (millions of US dollars),,,1550.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2017,Tourism expenditure (millions of US dollars),,,1566.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +320,Guatemala,2018,Tourism expenditure (millions of US dollars),,,1549.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2005,Tourist/visitor arrivals (thousands),TF,,45.0000,Arrivals by air at Conakry airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2010,Tourist/visitor arrivals (thousands),TF,,12.4000,Arrivals by air at Conakry airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2016,Tourist/visitor arrivals (thousands),TF,,63.0000,Arrivals by air at Conakry airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2017,Tourist/visitor arrivals (thousands),TF,,99.0000,Arrivals by air at Conakry airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,1995,Tourism expenditure (millions of US dollars),,,0.9110,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2010,Tourism expenditure (millions of US dollars),,,2.0400,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2016,Tourism expenditure (millions of US dollars),,,16.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2017,Tourism expenditure (millions of US dollars),,,16.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +324,Guinea,2018,Tourism expenditure (millions of US dollars),,,7.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2005,Tourist/visitor arrivals (thousands),TF,,5.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2010,Tourist/visitor arrivals (thousands),TF,,22.3000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2016,Tourist/visitor arrivals (thousands),TF,,45.2000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2005,Tourism expenditure (millions of US dollars),,,1.6000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2010,Tourism expenditure (millions of US dollars),,,13.3000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2016,Tourism expenditure (millions of US dollars),,,11.5000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2017,Tourism expenditure (millions of US dollars),,,16.3000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +624,Guinea-Bissau,2018,Tourism expenditure (millions of US dollars),,,19.8000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,1995,Tourist/visitor arrivals (thousands),TF,,106.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2005,Tourist/visitor arrivals (thousands),TF,,117.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2010,Tourist/visitor arrivals (thousands),TF,,152.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2016,Tourist/visitor arrivals (thousands),TF,,235.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2017,Tourist/visitor arrivals (thousands),TF,,247.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2018,Tourist/visitor arrivals (thousands),TF,,287.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,1995,Tourism expenditure (millions of US dollars),,,33.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2005,Tourism expenditure (millions of US dollars),,,35.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2010,Tourism expenditure (millions of US dollars),,,80.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2016,Tourism expenditure (millions of US dollars),,,104.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2017,Tourism expenditure (millions of US dollars),,,95.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +328,Guyana,2018,Tourism expenditure (millions of US dollars),,,28.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,1995,Tourist/visitor arrivals (thousands),TF,,145.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2005,Tourist/visitor arrivals (thousands),TF,,112.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2010,Tourist/visitor arrivals (thousands),TF,,255.0000,Arrivals by air.;Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2016,Tourist/visitor arrivals (thousands),TF,,445.0000,Arrivals by air.;Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2017,Tourist/visitor arrivals (thousands),TF,,467.0000,Arrivals by air.;Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2018,Tourist/visitor arrivals (thousands),TF,,447.0000,Arrivals by air.;Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,1995,Tourism expenditure (millions of US dollars),,,90.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2005,Tourism expenditure (millions of US dollars),,,80.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2010,Tourism expenditure (millions of US dollars),,,383.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2016,Tourism expenditure (millions of US dollars),,,511.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2017,Tourism expenditure (millions of US dollars),,,460.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +332,Haiti,2018,Tourism expenditure (millions of US dollars),,,620.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,1995,Tourist/visitor arrivals (thousands),TF,,271.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2005,Tourist/visitor arrivals (thousands),TF,,673.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2010,Tourist/visitor arrivals (thousands),TF,,863.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2016,Tourist/visitor arrivals (thousands),TF,,838.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2017,Tourist/visitor arrivals (thousands),TF,,851.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,1995,Tourism expenditure (millions of US dollars),,,85.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2005,Tourism expenditure (millions of US dollars),,,465.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2010,Tourism expenditure (millions of US dollars),,,626.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2016,Tourism expenditure (millions of US dollars),,,700.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2017,Tourism expenditure (millions of US dollars),,,722.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +340,Honduras,2018,Tourism expenditure (millions of US dollars),,,745.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2005,Tourist/visitor arrivals (thousands),TF,,9979.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2010,Tourist/visitor arrivals (thousands),TF,,9510.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2016,Tourist/visitor arrivals (thousands),TF,,15255.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2017,Tourist/visitor arrivals (thousands),TF,,15785.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2018,Tourist/visitor arrivals (thousands),TF,,17552.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,1995,Tourism expenditure (millions of US dollars),,,2938.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2005,Tourism expenditure (millions of US dollars),,,4761.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2010,Tourism expenditure (millions of US dollars),,,6595.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2016,Tourism expenditure (millions of US dollars),,,7481.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2017,Tourism expenditure (millions of US dollars),,,8448.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +348,Hungary,2018,Tourism expenditure (millions of US dollars),,,9595.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,1995,Tourist/visitor arrivals (thousands),TF,,190.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2005,Tourist/visitor arrivals (thousands),TF,,374.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2010,Tourist/visitor arrivals (thousands),TF,,489.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2016,Tourist/visitor arrivals (thousands),TF,,1792.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2017,Tourist/visitor arrivals (thousands),TF,,2225.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2018,Tourist/visitor arrivals (thousands),TF,,2343.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,1995,Tourism expenditure (millions of US dollars),,,186.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2005,Tourism expenditure (millions of US dollars),,,413.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2010,Tourism expenditure (millions of US dollars),,,562.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2016,Tourism expenditure (millions of US dollars),,,2411.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2017,Tourism expenditure (millions of US dollars),,,3024.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +352,Iceland,2018,Tourism expenditure (millions of US dollars),,,3128.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,1995,Tourist/visitor arrivals (thousands),TF,,2124.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2005,Tourist/visitor arrivals (thousands),TF,,3919.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2010,Tourist/visitor arrivals (thousands),TF,,5776.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2016,Tourist/visitor arrivals (thousands),TF,,14570.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2017,Tourist/visitor arrivals (thousands),TF,,15543.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2018,Tourist/visitor arrivals (thousands),TF,,17423.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2005,Tourism expenditure (millions of US dollars),,,7659.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2016,Tourism expenditure (millions of US dollars),,,23111.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2017,Tourism expenditure (millions of US dollars),,,27878.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +356,India,2018,Tourism expenditure (millions of US dollars),,,29143.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,1995,Tourist/visitor arrivals (thousands),VF,,4324.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2005,Tourist/visitor arrivals (thousands),VF,,5002.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2010,Tourist/visitor arrivals (thousands),VF,,7003.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2016,Tourist/visitor arrivals (thousands),VF,,11519.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2017,Tourist/visitor arrivals (thousands),VF,,14040.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2018,Tourist/visitor arrivals (thousands),VF,,15810.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2005,Tourism expenditure (millions of US dollars),,,5094.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2010,Tourism expenditure (millions of US dollars),,,7618.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2016,Tourism expenditure (millions of US dollars),,,12566.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2017,Tourism expenditure (millions of US dollars),,,14691.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +360,Indonesia,2018,Tourism expenditure (millions of US dollars),,,15600.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),1995,Tourist/visitor arrivals (thousands),VF,,568.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2010,Tourist/visitor arrivals (thousands),VF,,2938.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2016,Tourist/visitor arrivals (thousands),VF,,4942.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2017,Tourist/visitor arrivals (thousands),VF,,4867.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2018,Tourist/visitor arrivals (thousands),VF,,7295.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),1995,Tourism expenditure (millions of US dollars),,,205.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2005,Tourism expenditure (millions of US dollars),,,1025.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2010,Tourism expenditure (millions of US dollars),,,2631.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2016,Tourism expenditure (millions of US dollars),,,3914.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +364,Iran (Islamic Republic of),2017,Tourism expenditure (millions of US dollars),,,4632.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,1995,Tourist/visitor arrivals (thousands),VF,,61.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,2010,Tourist/visitor arrivals (thousands),VF,,1518.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,2005,Tourism expenditure (millions of US dollars),,,186.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,2010,Tourism expenditure (millions of US dollars),,,1736.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,2016,Tourism expenditure (millions of US dollars),,,3120.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,2017,Tourism expenditure (millions of US dollars),,,2959.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +368,Iraq,2018,Tourism expenditure (millions of US dollars),,,1986.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,1995,Tourist/visitor arrivals (thousands),TF,,4818.0000,Including tourists from Northern Ireland.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2005,Tourist/visitor arrivals (thousands),TF,,7333.0000,Including tourists from Northern Ireland.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2010,Tourist/visitor arrivals (thousands),TF,,7134.0000,Break in the time series.;Including tourists from Northern Ireland.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2016,Tourist/visitor arrivals (thousands),TF,,10100.0000,Including tourists from Northern Ireland.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2017,Tourist/visitor arrivals (thousands),TF,,10338.0000,Including tourists from Northern Ireland.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2018,Tourist/visitor arrivals (thousands),TF,,10926.0000,Including tourists from Northern Ireland.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,1995,Tourism expenditure (millions of US dollars),,,2697.7927,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2005,Tourism expenditure (millions of US dollars),,,6779.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2010,Tourism expenditure (millions of US dollars),,,8185.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2016,Tourism expenditure (millions of US dollars),,,11429.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2017,Tourism expenditure (millions of US dollars),,,14294.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +372,Ireland,2018,Tourism expenditure (millions of US dollars),,,14658.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,1995,Tourist/visitor arrivals (thousands),TF,,2215.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2005,Tourist/visitor arrivals (thousands),TF,,1903.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2010,Tourist/visitor arrivals (thousands),TF,,2803.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2016,Tourist/visitor arrivals (thousands),TF,,2900.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2017,Tourist/visitor arrivals (thousands),TF,,3613.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2018,Tourist/visitor arrivals (thousands),TF,,4121.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,1995,Tourism expenditure (millions of US dollars),,,3491.0000,Including the expenditures of foreign workers in Israel.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2005,Tourism expenditure (millions of US dollars),,,2750.0000,Including the expenditures of foreign workers in Israel.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2010,Tourism expenditure (millions of US dollars),,,5621.0000,Including the expenditures of foreign workers in Israel.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2016,Tourism expenditure (millions of US dollars),,,6587.0000,Including the expenditures of foreign workers in Israel.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2017,Tourism expenditure (millions of US dollars),,,7578.0000,Including the expenditures of foreign workers in Israel.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +376,Israel,2018,Tourism expenditure (millions of US dollars),,,8073.0000,Including the expenditures of foreign workers in Israel.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,1995,Tourist/visitor arrivals (thousands),TF,,31052.0000,Excluding seasonal and border workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2005,Tourist/visitor arrivals (thousands),TF,,36513.0000,Excluding seasonal and border workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2010,Tourist/visitor arrivals (thousands),TF,,43626.0000,Excluding seasonal and border workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2016,Tourist/visitor arrivals (thousands),TF,,52372.0000,Excluding seasonal and border workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2017,Tourist/visitor arrivals (thousands),TF,,58253.0000,Excluding seasonal and border workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2018,Tourist/visitor arrivals (thousands),TF,,61567.2000,Excluding seasonal and border workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,1995,Tourism expenditure (millions of US dollars),,,30411.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2005,Tourism expenditure (millions of US dollars),,,38364.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2016,Tourism expenditure (millions of US dollars),,,42423.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2017,Tourism expenditure (millions of US dollars),,,46719.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +380,Italy,2018,Tourism expenditure (millions of US dollars),,,51602.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,1995,Tourist/visitor arrivals (thousands),TF,,1147.0000,Including nationals residing abroad; E/D cards.;Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2005,Tourist/visitor arrivals (thousands),TF,,1479.0000,Including nationals residing abroad; E/D cards.;Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2010,Tourist/visitor arrivals (thousands),TF,,1922.0000,Including nationals residing abroad; E/D cards.;Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2016,Tourist/visitor arrivals (thousands),TF,,2182.0000,Including nationals residing abroad; E/D cards.;Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2017,Tourist/visitor arrivals (thousands),TF,,2353.0000,Including nationals residing abroad; E/D cards.;Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2018,Tourist/visitor arrivals (thousands),TF,,2473.0000,Including nationals residing abroad; E/D cards.;Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,1995,Tourism expenditure (millions of US dollars),,,1069.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2005,Tourism expenditure (millions of US dollars),,,1545.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2010,Tourism expenditure (millions of US dollars),,,2001.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2016,Tourism expenditure (millions of US dollars),,,2539.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2017,Tourism expenditure (millions of US dollars),,,2809.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +388,Jamaica,2018,Tourism expenditure (millions of US dollars),,,3099.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,1995,Tourist/visitor arrivals (thousands),VF,,3345.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2005,Tourist/visitor arrivals (thousands),VF,,6728.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2010,Tourist/visitor arrivals (thousands),VF,,8611.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2016,Tourist/visitor arrivals (thousands),VF,,24040.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2017,Tourist/visitor arrivals (thousands),VF,,28691.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2018,Tourist/visitor arrivals (thousands),VF,,31192.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,1995,Tourism expenditure (millions of US dollars),,,4894.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2005,Tourism expenditure (millions of US dollars),,,15554.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2010,Tourism expenditure (millions of US dollars),,,15356.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2016,Tourism expenditure (millions of US dollars),,,33456.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2017,Tourism expenditure (millions of US dollars),,,36978.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +392,Japan,2018,Tourism expenditure (millions of US dollars),,,45276.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,1995,Tourist/visitor arrivals (thousands),TF,,1075.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2005,Tourist/visitor arrivals (thousands),TF,,2987.0000,Break in the time series.;Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2010,Tourist/visitor arrivals (thousands),TF,,4207.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2016,Tourist/visitor arrivals (thousands),TF,,3567.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2017,Tourist/visitor arrivals (thousands),TF,,3843.5000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2018,Tourist/visitor arrivals (thousands),TF,,4150.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,1995,Tourism expenditure (millions of US dollars),,,973.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2005,Tourism expenditure (millions of US dollars),,,1759.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2010,Tourism expenditure (millions of US dollars),,,4390.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2016,Tourism expenditure (millions of US dollars),,,4943.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2017,Tourism expenditure (millions of US dollars),,,5549.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +400,Jordan,2018,Tourism expenditure (millions of US dollars),,,6221.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2005,Tourist/visitor arrivals (thousands),TF,,3143.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2010,Tourist/visitor arrivals (thousands),TF,,2991.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,1995,Tourism expenditure (millions of US dollars),,,155.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2005,Tourism expenditure (millions of US dollars),,,801.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2010,Tourism expenditure (millions of US dollars),,,1236.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2016,Tourism expenditure (millions of US dollars),,,2038.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2017,Tourism expenditure (millions of US dollars),,,2356.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +398,Kazakhstan,2018,Tourism expenditure (millions of US dollars),,,2651.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,1995,Tourist/visitor arrivals (thousands),TF,,918.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2005,Tourist/visitor arrivals (thousands),TF,,1399.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2010,Tourist/visitor arrivals (thousands),TF,,1470.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2016,Tourist/visitor arrivals (thousands),TF,,1268.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2017,Tourist/visitor arrivals (thousands),TF,,1364.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,1995,Tourism expenditure (millions of US dollars),,,785.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2005,Tourism expenditure (millions of US dollars),,,969.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2010,Tourism expenditure (millions of US dollars),,,1620.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2016,Tourism expenditure (millions of US dollars),,,1471.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +404,Kenya,2017,Tourism expenditure (millions of US dollars),,,1564.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,1995,Tourist/visitor arrivals (thousands),TF,,3.9000,Air arrivals. Tarawa and Christmas Island.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2005,Tourist/visitor arrivals (thousands),TF,,4.1000,Air arrivals. Tarawa and Christmas Island.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2010,Tourist/visitor arrivals (thousands),TF,,4.7000,Air arrivals. Tarawa and Christmas Island.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2016,Tourist/visitor arrivals (thousands),TF,,5.7000,Air arrivals. Tarawa and Christmas Island.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2017,Tourist/visitor arrivals (thousands),TF,,5.8000,Air arrivals. Tarawa and Christmas Island.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2018,Tourist/visitor arrivals (thousands),TF,,7.1000,Air arrivals. Tarawa and Christmas Island.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2010,Tourism expenditure (millions of US dollars),,,4.3000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2016,Tourism expenditure (millions of US dollars),,,2.8000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +296,Kiribati,2017,Tourism expenditure (millions of US dollars),,,4.1000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,1995,Tourist/visitor arrivals (thousands),VF,,1443.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2005,Tourist/visitor arrivals (thousands),VF,,3474.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2010,Tourist/visitor arrivals (thousands),VF,,5208.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2016,Tourist/visitor arrivals (thousands),VF,,7055.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2017,Tourist/visitor arrivals (thousands),VF,,7407.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2018,Tourist/visitor arrivals (thousands),VF,,8508.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,1995,Tourism expenditure (millions of US dollars),,,307.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2005,Tourism expenditure (millions of US dollars),,,413.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2010,Tourism expenditure (millions of US dollars),,,574.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2016,Tourism expenditure (millions of US dollars),,,831.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2017,Tourism expenditure (millions of US dollars),,,643.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +414,Kuwait,2018,Tourism expenditure (millions of US dollars),,,919.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2005,Tourist/visitor arrivals (thousands),VF,,319.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2010,Tourist/visitor arrivals (thousands),VF,,1224.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2016,Tourist/visitor arrivals (thousands),VF,,3853.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2017,Tourist/visitor arrivals (thousands),VF,,4568.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2018,Tourist/visitor arrivals (thousands),VF,,6947.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2005,Tourism expenditure (millions of US dollars),,,94.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2010,Tourism expenditure (millions of US dollars),,,212.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2016,Tourism expenditure (millions of US dollars),,,477.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2017,Tourism expenditure (millions of US dollars),,,480.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +417,Kyrgyzstan,2018,Tourism expenditure (millions of US dollars),,,487.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,1995,Tourist/visitor arrivals (thousands),TF,,60.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2005,Tourist/visitor arrivals (thousands),TF,,672.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2010,Tourist/visitor arrivals (thousands),TF,,1670.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2016,Tourist/visitor arrivals (thousands),TF,,3315.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2017,Tourist/visitor arrivals (thousands),TF,,3257.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2018,Tourist/visitor arrivals (thousands),TF,,3770.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,1995,Tourism expenditure (millions of US dollars),,,52.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2005,Tourism expenditure (millions of US dollars),,,143.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2010,Tourism expenditure (millions of US dollars),,,385.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2016,Tourism expenditure (millions of US dollars),,,717.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2017,Tourism expenditure (millions of US dollars),,,655.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +418,Lao People's Dem. Rep.,2018,Tourism expenditure (millions of US dollars),,,757.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,1995,Tourist/visitor arrivals (thousands),TF,,539.0000,Non-resident departures. Survey of persons crossing the state border.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,2005,Tourist/visitor arrivals (thousands),TF,,1116.0000,Non-resident departures. Survey of persons crossing the state border.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,2010,Tourist/visitor arrivals (thousands),TF,,1373.0000,Non-resident departures. Survey of persons crossing the state border.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,2016,Tourist/visitor arrivals (thousands),TF,,1793.0000,Non-resident departures. Survey of persons crossing the state border.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,2017,Tourist/visitor arrivals (thousands),TF,,1949.0000,Non-resident departures. Survey of persons crossing the state border.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,2018,Tourist/visitor arrivals (thousands),TF,,1946.0000,Non-resident departures. Survey of persons crossing the state border.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,1995,Tourism expenditure (millions of US dollars),,,37.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +428,Latvia,2005,Tourism expenditure (millions of US dollars),,,446.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,1995,Tourist/visitor arrivals (thousands),TF,,450.0000,"Excluding the Lebanon, Syria and Palestine nationalities.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2005,Tourist/visitor arrivals (thousands),TF,,1140.0000,"Excluding the Lebanon, Syria and Palestine nationalities.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2010,Tourist/visitor arrivals (thousands),TF,,2168.0000,"Excluding the Lebanon, Syria and Palestine nationalities.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2016,Tourist/visitor arrivals (thousands),TF,,1688.0000,"Excluding the Lebanon, Syria and Palestine nationalities.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2017,Tourist/visitor arrivals (thousands),TF,,1857.0000,"Excluding the Lebanon, Syria and Palestine nationalities.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2018,Tourist/visitor arrivals (thousands),TF,,1964.0000,"Excluding the Lebanon, Syria and Palestine nationalities.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,1995,Tourism expenditure (millions of US dollars),,,710.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2005,Tourism expenditure (millions of US dollars),,,5969.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2010,Tourism expenditure (millions of US dollars),,,8026.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2016,Tourism expenditure (millions of US dollars),,,7373.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2017,Tourism expenditure (millions of US dollars),,,8086.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +422,Lebanon,2018,Tourism expenditure (millions of US dollars),,,8694.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,1995,Tourist/visitor arrivals (thousands),VF,,209.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2005,Tourist/visitor arrivals (thousands),VF,,304.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2010,Tourist/visitor arrivals (thousands),VF,,426.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2016,Tourist/visitor arrivals (thousands),VF,,1196.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2017,Tourist/visitor arrivals (thousands),VF,,1137.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2018,Tourist/visitor arrivals (thousands),VF,,1173.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,1995,Tourism expenditure (millions of US dollars),,,27.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2005,Tourism expenditure (millions of US dollars),,,27.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2010,Tourism expenditure (millions of US dollars),,,23.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2016,Tourism expenditure (millions of US dollars),,,48.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2017,Tourism expenditure (millions of US dollars),,,23.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +426,Lesotho,2018,Tourism expenditure (millions of US dollars),,,24.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +430,Liberia,2005,Tourism expenditure (millions of US dollars),,,67.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +434,Libya,2005,Tourist/visitor arrivals (thousands),THS,,81.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +434,Libya,1995,Tourism expenditure (millions of US dollars),,,4.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +434,Libya,2005,Tourism expenditure (millions of US dollars),,,301.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +434,Libya,2010,Tourism expenditure (millions of US dollars),,,170.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +438,Liechtenstein,2010,Tourist/visitor arrivals (thousands),TCE,,64.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +438,Liechtenstein,2016,Tourist/visitor arrivals (thousands),TCE,,69.1000,Excluding long term tourists on campgrounds and in holiday flats.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +438,Liechtenstein,2017,Tourist/visitor arrivals (thousands),TCE,,79.3000,Excluding long term tourists on campgrounds and in holiday flats.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +438,Liechtenstein,2018,Tourist/visitor arrivals (thousands),TCE,,85.3000,Excluding long term tourists on campgrounds and in holiday flats.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,1995,Tourist/visitor arrivals (thousands),TF,,650.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2005,Tourist/visitor arrivals (thousands),TF,,2000.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2010,Tourist/visitor arrivals (thousands),TF,,1507.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2016,Tourist/visitor arrivals (thousands),TF,,2296.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2017,Tourist/visitor arrivals (thousands),TF,,2523.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2018,Tourist/visitor arrivals (thousands),TF,,2825.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,1995,Tourism expenditure (millions of US dollars),,,77.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2005,Tourism expenditure (millions of US dollars),,,920.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2010,Tourism expenditure (millions of US dollars),,,958.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2016,Tourism expenditure (millions of US dollars),,,1210.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2017,Tourism expenditure (millions of US dollars),,,1325.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +440,Lithuania,2018,Tourism expenditure (millions of US dollars),,,1419.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,1995,Tourist/visitor arrivals (thousands),TCE,,768.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2005,Tourist/visitor arrivals (thousands),TCE,,913.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2010,Tourist/visitor arrivals (thousands),TCE,,805.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2016,Tourist/visitor arrivals (thousands),TCE,,1054.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2017,Tourist/visitor arrivals (thousands),TCE,,1046.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2018,Tourist/visitor arrivals (thousands),TCE,,1018.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2005,Tourism expenditure (millions of US dollars),,,3770.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2010,Tourism expenditure (millions of US dollars),,,4519.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2016,Tourism expenditure (millions of US dollars),,,4766.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2017,Tourism expenditure (millions of US dollars),,,4993.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +442,Luxembourg,2018,Tourism expenditure (millions of US dollars),,,5537.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,1995,Tourist/visitor arrivals (thousands),TF,,75.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2005,Tourist/visitor arrivals (thousands),TF,,277.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2010,Tourist/visitor arrivals (thousands),TF,,196.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2016,Tourist/visitor arrivals (thousands),TF,,293.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2017,Tourist/visitor arrivals (thousands),TF,,255.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2018,Tourist/visitor arrivals (thousands),TF,,291.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,1995,Tourism expenditure (millions of US dollars),,,106.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2005,Tourism expenditure (millions of US dollars),,,275.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2010,Tourism expenditure (millions of US dollars),,,425.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2016,Tourism expenditure (millions of US dollars),,,913.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2017,Tourism expenditure (millions of US dollars),,,849.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +450,Madagascar,2018,Tourism expenditure (millions of US dollars),,,879.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,1995,Tourist/visitor arrivals (thousands),TF,,192.0000,Departures.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2005,Tourist/visitor arrivals (thousands),TF,,438.0000,Departures.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2010,Tourist/visitor arrivals (thousands),TF,,746.0000,Departures.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2016,Tourist/visitor arrivals (thousands),TF,,849.0000,Departures.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2017,Tourist/visitor arrivals (thousands),TF,,837.0000,Departures.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2018,Tourist/visitor arrivals (thousands),TF,,871.0000,Departures.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,1995,Tourism expenditure (millions of US dollars),,,22.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2005,Tourism expenditure (millions of US dollars),,,48.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2010,Tourism expenditure (millions of US dollars),,,45.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2016,Tourism expenditure (millions of US dollars),,,30.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2017,Tourism expenditure (millions of US dollars),,,35.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +454,Malawi,2018,Tourism expenditure (millions of US dollars),,,43.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,1995,Tourist/visitor arrivals (thousands),TF,,7469.0000,Including Singapore residents crossing the frontier by road through Johore Causeway.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2005,Tourist/visitor arrivals (thousands),TF,,16431.0000,Including Singapore residents crossing the frontier by road through Johore Causeway.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2010,Tourist/visitor arrivals (thousands),TF,,24577.0000,Including Singapore residents crossing the frontier by road through Johore Causeway.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2016,Tourist/visitor arrivals (thousands),TF,,26757.0000,Including Singapore residents crossing the frontier by road through Johore Causeway.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2017,Tourist/visitor arrivals (thousands),TF,,25948.0000,Including Singapore residents crossing the frontier by road through Johore Causeway.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2018,Tourist/visitor arrivals (thousands),TF,,25832.0000,Including Singapore residents crossing the frontier by road through Johore Causeway.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,1995,Tourism expenditure (millions of US dollars),,,5044.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2005,Tourism expenditure (millions of US dollars),,,10389.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2010,Tourism expenditure (millions of US dollars),,,19619.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2016,Tourism expenditure (millions of US dollars),,,19682.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2017,Tourism expenditure (millions of US dollars),,,20311.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +458,Malaysia,2018,Tourism expenditure (millions of US dollars),,,21774.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,1995,Tourist/visitor arrivals (thousands),TF,,315.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2005,Tourist/visitor arrivals (thousands),TF,,395.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2010,Tourist/visitor arrivals (thousands),TF,,792.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2016,Tourist/visitor arrivals (thousands),TF,,1286.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2017,Tourist/visitor arrivals (thousands),TF,,1390.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2018,Tourist/visitor arrivals (thousands),TF,,1484.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2016,Tourism expenditure (millions of US dollars),,,2640.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2017,Tourism expenditure (millions of US dollars),,,2771.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +462,Maldives,2018,Tourism expenditure (millions of US dollars),,,3054.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2010,Tourist/visitor arrivals (thousands),TF,,169.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2016,Tourist/visitor arrivals (thousands),TF,,173.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2017,Tourist/visitor arrivals (thousands),TF,,193.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,1995,Tourism expenditure (millions of US dollars),,,26.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2005,Tourism expenditure (millions of US dollars),,,149.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2010,Tourism expenditure (millions of US dollars),,,208.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2016,Tourism expenditure (millions of US dollars),,,201.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +466,Mali,2017,Tourism expenditure (millions of US dollars),,,206.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,1995,Tourist/visitor arrivals (thousands),TF,,1116.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2005,Tourist/visitor arrivals (thousands),TF,,1171.0000,Departures by air and by sea.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2010,Tourist/visitor arrivals (thousands),TF,,1339.0000,Departures by air and by sea.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2016,Tourist/visitor arrivals (thousands),TF,,1966.0000,Departures by air and by sea.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2017,Tourist/visitor arrivals (thousands),TF,,2274.0000,Departures by air and by sea.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2018,Tourist/visitor arrivals (thousands),TF,,2599.0000,Departures by air and by sea.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,1995,Tourism expenditure (millions of US dollars),,,656.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2005,Tourism expenditure (millions of US dollars),,,755.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2010,Tourism expenditure (millions of US dollars),,,1066.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2016,Tourism expenditure (millions of US dollars),,,1451.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2017,Tourism expenditure (millions of US dollars),,,1746.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +470,Malta,2018,Tourism expenditure (millions of US dollars),,,1845.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,1995,Tourist/visitor arrivals (thousands),TF,,5.5000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2005,Tourist/visitor arrivals (thousands),TF,,9.2000,Air and sea arrivals.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2010,Tourist/visitor arrivals (thousands),TF,,4.6000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2016,Tourist/visitor arrivals (thousands),TF,,5.4000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2017,Tourist/visitor arrivals (thousands),TF,,6.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2018,Tourist/visitor arrivals (thousands),TF,,6.8000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,1995,Tourism expenditure (millions of US dollars),,,2.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2005,Tourism expenditure (millions of US dollars),,,3.6900,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2010,Tourism expenditure (millions of US dollars),,,3.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2016,Tourism expenditure (millions of US dollars),,,30.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2017,Tourism expenditure (millions of US dollars),,,18.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +584,Marshall Islands,2018,Tourism expenditure (millions of US dollars),,,20.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,1995,Tourist/visitor arrivals (thousands),TF,,457.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2005,Tourist/visitor arrivals (thousands),TF,,484.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2010,Tourist/visitor arrivals (thousands),TF,,478.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2016,Tourist/visitor arrivals (thousands),TF,,519.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2017,Tourist/visitor arrivals (thousands),TF,,536.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2018,Tourist/visitor arrivals (thousands),TF,,537.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,1995,Tourism expenditure (millions of US dollars),,,384.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2005,Tourism expenditure (millions of US dollars),,,280.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2010,Tourism expenditure (millions of US dollars),,,472.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2016,Tourism expenditure (millions of US dollars),,,348.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2017,Tourism expenditure (millions of US dollars),,,510.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +474,Martinique,2018,Tourism expenditure (millions of US dollars),,,530.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +478,Mauritania,2016,Tourism expenditure (millions of US dollars),,,33.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +478,Mauritania,2017,Tourism expenditure (millions of US dollars),,,24.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +478,Mauritania,2018,Tourism expenditure (millions of US dollars),,,6.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,1995,Tourist/visitor arrivals (thousands),TF,,422.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2005,Tourist/visitor arrivals (thousands),TF,,761.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2010,Tourist/visitor arrivals (thousands),TF,,935.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2016,Tourist/visitor arrivals (thousands),TF,,1275.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2017,Tourist/visitor arrivals (thousands),TF,,1342.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2018,Tourist/visitor arrivals (thousands),TF,,1399.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,1995,Tourism expenditure (millions of US dollars),,,616.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2005,Tourism expenditure (millions of US dollars),,,1189.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2010,Tourism expenditure (millions of US dollars),,,1585.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2016,Tourism expenditure (millions of US dollars),,,1824.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2017,Tourism expenditure (millions of US dollars),,,2005.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +480,Mauritius,2018,Tourism expenditure (millions of US dollars),,,2161.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,1995,Tourist/visitor arrivals (thousands),TF,,20241.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2005,Tourist/visitor arrivals (thousands),TF,,21915.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2010,Tourist/visitor arrivals (thousands),TF,,23290.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2016,Tourist/visitor arrivals (thousands),TF,,35079.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2017,Tourist/visitor arrivals (thousands),TF,,39291.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2018,Tourist/visitor arrivals (thousands),TF,,41313.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,1995,Tourism expenditure (millions of US dollars),,,6847.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2005,Tourism expenditure (millions of US dollars),,,12801.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2010,Tourism expenditure (millions of US dollars),,,12628.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2016,Tourism expenditure (millions of US dollars),,,20619.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2017,Tourism expenditure (millions of US dollars),,,22467.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +484,Mexico,2018,Tourism expenditure (millions of US dollars),,,23802.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +583,Micronesia (Fed. States of),2005,Tourist/visitor arrivals (thousands),TF,,19.0000,"Arrivals in the States of Kosrae, Chuuk, Pohnpei and Yap; excluding FSM citizens.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +583,Micronesia (Fed. States of),2010,Tourist/visitor arrivals (thousands),TF,,44.7000,"Arrivals in the States of Kosrae, Chuuk, Pohnpei and Yap; excluding FSM citizens.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +583,Micronesia (Fed. States of),2016,Tourist/visitor arrivals (thousands),TF,,29.6000,"Arrivals in the States of Kosrae, Chuuk, Pohnpei and Yap; excluding FSM citizens.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +583,Micronesia (Fed. States of),2018,Tourist/visitor arrivals (thousands),TF,,19.2000,"Arrivals in the States of Kosrae, Chuuk, Pohnpei and Yap; excluding FSM citizens.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +583,Micronesia (Fed. States of),2010,Tourism expenditure (millions of US dollars),,,24.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +492,Monaco,1995,Tourist/visitor arrivals (thousands),THS,,233.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +492,Monaco,2005,Tourist/visitor arrivals (thousands),THS,,286.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +492,Monaco,2010,Tourist/visitor arrivals (thousands),THS,,279.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +492,Monaco,2016,Tourist/visitor arrivals (thousands),THS,,336.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +492,Monaco,2017,Tourist/visitor arrivals (thousands),THS,,355.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +492,Monaco,2018,Tourist/visitor arrivals (thousands),THS,,347.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2005,Tourist/visitor arrivals (thousands),TF,,339.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2010,Tourist/visitor arrivals (thousands),TF,,456.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2016,Tourist/visitor arrivals (thousands),TF,,404.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2017,Tourist/visitor arrivals (thousands),TF,,469.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2018,Tourist/visitor arrivals (thousands),TF,,529.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,1995,Tourism expenditure (millions of US dollars),,,33.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2005,Tourism expenditure (millions of US dollars),,,203.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2010,Tourism expenditure (millions of US dollars),,,288.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2016,Tourism expenditure (millions of US dollars),,,379.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2017,Tourism expenditure (millions of US dollars),,,462.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +496,Mongolia,2018,Tourism expenditure (millions of US dollars),,,526.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2005,Tourist/visitor arrivals (thousands),TCE,,272.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2010,Tourist/visitor arrivals (thousands),TCE,,1088.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2016,Tourist/visitor arrivals (thousands),TCE,,1662.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2017,Tourist/visitor arrivals (thousands),TCE,,1877.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2018,Tourist/visitor arrivals (thousands),TCE,,2077.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2010,Tourism expenditure (millions of US dollars),,,765.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2016,Tourism expenditure (millions of US dollars),,,978.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2017,Tourism expenditure (millions of US dollars),,,1110.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +499,Montenegro,2018,Tourism expenditure (millions of US dollars),,,1224.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,1995,Tourist/visitor arrivals (thousands),TF,,17.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2005,Tourist/visitor arrivals (thousands),TF,,9.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2010,Tourist/visitor arrivals (thousands),TF,,6.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2016,Tourist/visitor arrivals (thousands),TF,,8.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2017,Tourist/visitor arrivals (thousands),TF,,8.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2018,Tourist/visitor arrivals (thousands),TF,,8.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,1995,Tourism expenditure (millions of US dollars),,,17.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2005,Tourism expenditure (millions of US dollars),,,9.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2010,Tourism expenditure (millions of US dollars),,,5.9000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2016,Tourism expenditure (millions of US dollars),,,8.6000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2017,Tourism expenditure (millions of US dollars),,,8.4000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +500,Montserrat,2018,Tourism expenditure (millions of US dollars),,,11.1000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,1995,Tourist/visitor arrivals (thousands),TF,,2602.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2005,Tourist/visitor arrivals (thousands),TF,,5843.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2010,Tourist/visitor arrivals (thousands),TF,,9288.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2016,Tourist/visitor arrivals (thousands),TF,,10332.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2017,Tourist/visitor arrivals (thousands),TF,,11349.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2018,Tourist/visitor arrivals (thousands),TF,,12289.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,1995,Tourism expenditure (millions of US dollars),,,1469.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2005,Tourism expenditure (millions of US dollars),,,5426.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2010,Tourism expenditure (millions of US dollars),,,8176.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2016,Tourism expenditure (millions of US dollars),,,7922.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2017,Tourism expenditure (millions of US dollars),,,9086.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +504,Morocco,2018,Tourism expenditure (millions of US dollars),,,9523.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2005,Tourist/visitor arrivals (thousands),TF,,578.0000,The data correspond only to 12 border posts.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2010,Tourist/visitor arrivals (thousands),TF,,1718.0000,Break in the time series.;The data of all the border posts of the country are used.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2016,Tourist/visitor arrivals (thousands),TF,,1639.0000,The data of all the border posts of the country are used.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2017,Tourist/visitor arrivals (thousands),TF,,1447.0000,The data of all the border posts of the country are used.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2018,Tourist/visitor arrivals (thousands),TF,,2743.0000,The data of all the border posts of the country are used.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2005,Tourism expenditure (millions of US dollars),,,138.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2010,Tourism expenditure (millions of US dollars),,,135.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2016,Tourism expenditure (millions of US dollars),,,114.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2017,Tourism expenditure (millions of US dollars),,,164.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +508,Mozambique,2018,Tourism expenditure (millions of US dollars),,,331.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,1995,Tourist/visitor arrivals (thousands),TF,,194.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2005,Tourist/visitor arrivals (thousands),TF,,660.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2010,Tourist/visitor arrivals (thousands),TF,,792.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2016,Tourist/visitor arrivals (thousands),TF,,2907.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2017,Tourist/visitor arrivals (thousands),TF,,3443.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2018,Tourist/visitor arrivals (thousands),TF,,3551.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,1995,Tourism expenditure (millions of US dollars),,,169.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2005,Tourism expenditure (millions of US dollars),,,83.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2010,Tourism expenditure (millions of US dollars),,,91.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2016,Tourism expenditure (millions of US dollars),,,2289.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2017,Tourism expenditure (millions of US dollars),,,1988.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +104,Myanmar,2018,Tourism expenditure (millions of US dollars),,,1670.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,1995,Tourist/visitor arrivals (thousands),TF,,272.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2005,Tourist/visitor arrivals (thousands),TF,,778.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2010,Tourist/visitor arrivals (thousands),TF,,984.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2016,Tourist/visitor arrivals (thousands),TF,,1469.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2017,Tourist/visitor arrivals (thousands),TF,,1499.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2005,Tourism expenditure (millions of US dollars),,,363.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2010,Tourism expenditure (millions of US dollars),,,473.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2016,Tourism expenditure (millions of US dollars),,,349.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2017,Tourism expenditure (millions of US dollars),,,449.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +516,Namibia,2018,Tourism expenditure (millions of US dollars),,,488.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +520,Nauru,2010,Tourism expenditure (millions of US dollars),,,0.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +520,Nauru,2016,Tourism expenditure (millions of US dollars),,,3.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +520,Nauru,2017,Tourism expenditure (millions of US dollars),,,3.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +520,Nauru,2018,Tourism expenditure (millions of US dollars),,,1.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,1995,Tourist/visitor arrivals (thousands),TF,,363.0000,Including arrivals from India.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2005,Tourist/visitor arrivals (thousands),TF,,375.0000,Including arrivals from India.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2010,Tourist/visitor arrivals (thousands),TF,,603.0000,Including arrivals from India.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2016,Tourist/visitor arrivals (thousands),TF,,753.0000,Including arrivals from India.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2017,Tourist/visitor arrivals (thousands),TF,,940.0000,Including arrivals from India.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2018,Tourist/visitor arrivals (thousands),TF,,1173.0000,Including arrivals from India.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,1995,Tourism expenditure (millions of US dollars),,,232.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2005,Tourism expenditure (millions of US dollars),,,160.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2010,Tourism expenditure (millions of US dollars),,,378.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2016,Tourism expenditure (millions of US dollars),,,498.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2017,Tourism expenditure (millions of US dollars),,,712.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +524,Nepal,2018,Tourism expenditure (millions of US dollars),,,744.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,1995,Tourist/visitor arrivals (thousands),TCE,,6574.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2005,Tourist/visitor arrivals (thousands),TCE,,10012.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2010,Tourist/visitor arrivals (thousands),TCE,,10883.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2016,Tourist/visitor arrivals (thousands),TCE,,15828.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2017,Tourist/visitor arrivals (thousands),TCE,,17924.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2018,Tourist/visitor arrivals (thousands),TCE,,18780.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,1995,Tourism expenditure (millions of US dollars),,,10611.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2016,Tourism expenditure (millions of US dollars),,,21151.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2017,Tourism expenditure (millions of US dollars),,,23414.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +528,Netherlands,2018,Tourism expenditure (millions of US dollars),,,25850.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,1995,Tourist/visitor arrivals (thousands),TF,,86.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2005,Tourist/visitor arrivals (thousands),TF,,101.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2010,Tourist/visitor arrivals (thousands),TF,,99.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2016,Tourist/visitor arrivals (thousands),TF,,116.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2017,Tourist/visitor arrivals (thousands),TF,,121.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2018,Tourist/visitor arrivals (thousands),TF,,120.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,1995,Tourism expenditure (millions of US dollars),,,108.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2005,Tourism expenditure (millions of US dollars),,,149.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2010,Tourism expenditure (millions of US dollars),,,129.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +540,New Caledonia,2016,Tourism expenditure (millions of US dollars),,,159.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2005,Tourist/visitor arrivals (thousands),TF,,2353.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2010,Tourist/visitor arrivals (thousands),TF,,2435.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2016,Tourist/visitor arrivals (thousands),TF,,3370.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2017,Tourist/visitor arrivals (thousands),TF,,3555.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2018,Tourist/visitor arrivals (thousands),TF,,3686.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,1995,Tourism expenditure (millions of US dollars),,,2318.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2005,Tourism expenditure (millions of US dollars),,,6486.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2010,Tourism expenditure (millions of US dollars),,,6523.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2016,Tourism expenditure (millions of US dollars),,,9773.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2017,Tourism expenditure (millions of US dollars),,,10594.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +554,New Zealand,2018,Tourism expenditure (millions of US dollars),,,10961.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,1995,Tourist/visitor arrivals (thousands),TF,,281.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2005,Tourist/visitor arrivals (thousands),TF,,712.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2010,Tourist/visitor arrivals (thousands),TF,,1011.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2016,Tourist/visitor arrivals (thousands),TF,,1504.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2017,Tourist/visitor arrivals (thousands),TF,,1787.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2018,Tourist/visitor arrivals (thousands),TF,,1256.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,1995,Tourism expenditure (millions of US dollars),,,50.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2005,Tourism expenditure (millions of US dollars),,,206.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2010,Tourism expenditure (millions of US dollars),,,314.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2016,Tourism expenditure (millions of US dollars),,,642.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2017,Tourism expenditure (millions of US dollars),,,841.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +558,Nicaragua,2018,Tourism expenditure (millions of US dollars),,,544.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,1995,Tourist/visitor arrivals (thousands),TF,,35.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2005,Tourist/visitor arrivals (thousands),TF,,58.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2010,Tourist/visitor arrivals (thousands),TF,,74.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2016,Tourist/visitor arrivals (thousands),TF,,152.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2017,Tourist/visitor arrivals (thousands),TF,,164.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2018,Tourist/visitor arrivals (thousands),TF,,157.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2005,Tourism expenditure (millions of US dollars),,,43.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2010,Tourism expenditure (millions of US dollars),,,105.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2016,Tourism expenditure (millions of US dollars),,,84.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +562,Niger,2017,Tourism expenditure (millions of US dollars),,,91.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,1995,Tourist/visitor arrivals (thousands),TF,,656.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2005,Tourist/visitor arrivals (thousands),TF,,1010.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2010,Tourist/visitor arrivals (thousands),TF,,1555.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2016,Tourist/visitor arrivals (thousands),TF,,1889.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,1995,Tourism expenditure (millions of US dollars),,,47.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2005,Tourism expenditure (millions of US dollars),,,139.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2010,Tourism expenditure (millions of US dollars),,,736.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2016,Tourism expenditure (millions of US dollars),,,1088.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2017,Tourism expenditure (millions of US dollars),,,2615.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +566,Nigeria,2018,Tourism expenditure (millions of US dollars),,,1977.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,1995,Tourist/visitor arrivals (thousands),TF,,2.2000,Including Niueans residing usually in New Zealand.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,2005,Tourist/visitor arrivals (thousands),TF,,2.8000,Including Niueans residing usually in New Zealand.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,2010,Tourist/visitor arrivals (thousands),TF,,6.2000,Including Niueans residing usually in New Zealand.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,2016,Tourist/visitor arrivals (thousands),TF,,8.9000,Including Niueans residing usually in New Zealand.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,2017,Tourist/visitor arrivals (thousands),TF,,9.8000,Including Niueans residing usually in New Zealand.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,1995,Tourism expenditure (millions of US dollars),,,2.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,2005,Tourism expenditure (millions of US dollars),,,1.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +570,Niue,2010,Tourism expenditure (millions of US dollars),,,2.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,1995,Tourist/visitor arrivals (thousands),TCE,,147.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2005,Tourist/visitor arrivals (thousands),TCE,,197.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2010,Tourist/visitor arrivals (thousands),TCE,,262.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2016,Tourist/visitor arrivals (thousands),TCE,,510.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2017,Tourist/visitor arrivals (thousands),TCE,,631.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2018,Tourist/visitor arrivals (thousands),TCE,,707.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2005,Tourism expenditure (millions of US dollars),,,116.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2010,Tourism expenditure (millions of US dollars),,,199.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2016,Tourism expenditure (millions of US dollars),,,283.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2017,Tourism expenditure (millions of US dollars),,,331.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +807,North Macedonia,2018,Tourism expenditure (millions of US dollars),,,387.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,1995,Tourist/visitor arrivals (thousands),TF,,669.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,2005,Tourist/visitor arrivals (thousands),TF,,498.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,2010,Tourist/visitor arrivals (thousands),TF,,375.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,2016,Tourist/visitor arrivals (thousands),TF,,526.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,2017,Tourist/visitor arrivals (thousands),TF,,656.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,2018,Tourist/visitor arrivals (thousands),TF,,517.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +580,Northern Mariana Islands,1995,Tourism expenditure (millions of US dollars),,,655.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,1995,Tourist/visitor arrivals (thousands),TF,,2880.0000,Non-resident tourists staying in registered hotels.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2005,Tourist/visitor arrivals (thousands),TF,,3824.0000,Arrivals of non-resident tourists at national borders.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2010,Tourist/visitor arrivals (thousands),TF,,4767.0000,Arrivals of non-resident tourists at national borders.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2016,Tourist/visitor arrivals (thousands),TF,,5960.0000,Non-resident tourists staying in all types of accommodation establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2017,Tourist/visitor arrivals (thousands),TF,,6252.0000,Non-resident tourists staying in all types of accommodation establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2018,Tourist/visitor arrivals (thousands),TF,,5688.0000,Non-resident tourists staying in all types of accommodation establishments.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,1995,Tourism expenditure (millions of US dollars),,,2730.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2005,Tourism expenditure (millions of US dollars),,,4243.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2010,Tourism expenditure (millions of US dollars),,,5299.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2016,Tourism expenditure (millions of US dollars),,,6285.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2017,Tourism expenditure (millions of US dollars),,,6840.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +578,Norway,2018,Tourism expenditure (millions of US dollars),,,7096.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2005,Tourist/visitor arrivals (thousands),TF,,891.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2010,Tourist/visitor arrivals (thousands),TF,,1441.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2016,Tourist/visitor arrivals (thousands),TF,,2335.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2017,Tourist/visitor arrivals (thousands),TF,,2316.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2018,Tourist/visitor arrivals (thousands),TF,,2301.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2005,Tourism expenditure (millions of US dollars),,,627.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2010,Tourism expenditure (millions of US dollars),,,1072.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2016,Tourism expenditure (millions of US dollars),,,2390.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2017,Tourism expenditure (millions of US dollars),,,2717.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +512,Oman,2018,Tourism expenditure (millions of US dollars),,,2975.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,1995,Tourist/visitor arrivals (thousands),VF,,2332.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2005,Tourist/visitor arrivals (thousands),VF,,3378.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2010,Tourist/visitor arrivals (thousands),VF,,5567.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2016,Tourist/visitor arrivals (thousands),VF,,10690.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2017,Tourist/visitor arrivals (thousands),VF,,10740.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2018,Tourist/visitor arrivals (thousands),VF,,11067.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,1995,Tourism expenditure (millions of US dollars),,,3985.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2005,Tourism expenditure (millions of US dollars),,,5740.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2010,Tourism expenditure (millions of US dollars),,,10387.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2016,Tourism expenditure (millions of US dollars),,,15825.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2017,Tourism expenditure (millions of US dollars),,,14847.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +158,Other non-specified areas,2018,Tourism expenditure (millions of US dollars),,,16366.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,1995,Tourist/visitor arrivals (thousands),TF,,378.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2005,Tourist/visitor arrivals (thousands),TF,,798.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2010,Tourist/visitor arrivals (thousands),TF,,907.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,1995,Tourism expenditure (millions of US dollars),,,582.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2005,Tourism expenditure (millions of US dollars),,,828.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2010,Tourism expenditure (millions of US dollars),,,998.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2016,Tourism expenditure (millions of US dollars),,,791.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2017,Tourism expenditure (millions of US dollars),,,866.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +586,Pakistan,2018,Tourism expenditure (millions of US dollars),,,818.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,1995,Tourist/visitor arrivals (thousands),TF,,53.0000,Air arrivals (Palau International Airport).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2005,Tourist/visitor arrivals (thousands),TF,,81.0000,Air arrivals (Palau International Airport).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2010,Tourist/visitor arrivals (thousands),TF,,85.0000,Air arrivals (Palau International Airport).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2016,Tourist/visitor arrivals (thousands),TF,,138.0000,Air arrivals (Palau International Airport).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2017,Tourist/visitor arrivals (thousands),TF,,123.0000,Air arrivals (Palau International Airport).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2018,Tourist/visitor arrivals (thousands),TF,,106.0000,Air arrivals (Palau International Airport).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2005,Tourism expenditure (millions of US dollars),,,63.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2010,Tourism expenditure (millions of US dollars),,,76.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2016,Tourism expenditure (millions of US dollars),,,148.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +585,Palau,2017,Tourism expenditure (millions of US dollars),,,123.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,1995,Tourist/visitor arrivals (thousands),TF,,345.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2005,Tourist/visitor arrivals (thousands),TF,,702.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2010,Tourist/visitor arrivals (thousands),TF,,1324.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2016,Tourist/visitor arrivals (thousands),TF,,1921.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2017,Tourist/visitor arrivals (thousands),TF,,1843.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2018,Tourist/visitor arrivals (thousands),TF,,1785.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,1995,Tourism expenditure (millions of US dollars),,,372.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2005,Tourism expenditure (millions of US dollars),,,1108.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2010,Tourism expenditure (millions of US dollars),,,2621.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2016,Tourism expenditure (millions of US dollars),,,6280.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2017,Tourism expenditure (millions of US dollars),,,6824.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +591,Panama,2018,Tourism expenditure (millions of US dollars),,,5615.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,1995,Tourist/visitor arrivals (thousands),TF,,42.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2005,Tourist/visitor arrivals (thousands),TF,,69.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2010,Tourist/visitor arrivals (thousands),TF,,140.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2016,Tourist/visitor arrivals (thousands),TF,,179.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2017,Tourist/visitor arrivals (thousands),TF,,139.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2018,Tourist/visitor arrivals (thousands),TF,,140.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2005,Tourism expenditure (millions of US dollars),,,9.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2010,Tourism expenditure (millions of US dollars),,,2.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2016,Tourism expenditure (millions of US dollars),,,1.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +598,Papua New Guinea,2017,Tourism expenditure (millions of US dollars),,,15.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,1995,Tourist/visitor arrivals (thousands),TF,,438.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2005,Tourist/visitor arrivals (thousands),TF,,341.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2010,Tourist/visitor arrivals (thousands),TF,,465.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2016,Tourist/visitor arrivals (thousands),TF,,1308.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2017,Tourist/visitor arrivals (thousands),TF,,1584.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2018,Tourist/visitor arrivals (thousands),TF,,1181.0000,Excluding nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,1995,Tourism expenditure (millions of US dollars),,,162.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2005,Tourism expenditure (millions of US dollars),,,96.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2010,Tourism expenditure (millions of US dollars),,,243.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2016,Tourism expenditure (millions of US dollars),,,356.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2017,Tourism expenditure (millions of US dollars),,,399.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +600,Paraguay,2018,Tourism expenditure (millions of US dollars),,,393.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,1995,Tourist/visitor arrivals (thousands),TF,,479.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2005,Tourist/visitor arrivals (thousands),TF,,1571.0000,Including nationals residing abroad.;Including tourists with identity document other than a passport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2010,Tourist/visitor arrivals (thousands),TF,,2299.0000,Including nationals residing abroad.;Including tourists with identity document other than a passport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2016,Tourist/visitor arrivals (thousands),TF,,3744.0000,Including nationals residing abroad.;Including tourists with identity document other than a passport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2017,Tourist/visitor arrivals (thousands),TF,,4032.0000,Including nationals residing abroad.;Including tourists with identity document other than a passport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2018,Tourist/visitor arrivals (thousands),TF,,4419.0000,Including nationals residing abroad.;Including tourists with identity document other than a passport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,1995,Tourism expenditure (millions of US dollars),,,521.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2005,Tourism expenditure (millions of US dollars),,,1438.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2010,Tourism expenditure (millions of US dollars),,,2475.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2016,Tourism expenditure (millions of US dollars),,,4288.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2017,Tourism expenditure (millions of US dollars),,,4573.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +604,Peru,2018,Tourism expenditure (millions of US dollars),,,4894.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,1995,Tourist/visitor arrivals (thousands),TF,,1760.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2005,Tourist/visitor arrivals (thousands),TF,,2623.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2010,Tourist/visitor arrivals (thousands),TF,,3520.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2016,Tourist/visitor arrivals (thousands),TF,,5967.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2017,Tourist/visitor arrivals (thousands),TF,,6621.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2018,Tourist/visitor arrivals (thousands),TF,,7168.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,1995,Tourism expenditure (millions of US dollars),,,1141.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2005,Tourism expenditure (millions of US dollars),,,2863.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2010,Tourism expenditure (millions of US dollars),,,3441.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2016,Tourism expenditure (millions of US dollars),,,6289.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2017,Tourism expenditure (millions of US dollars),,,8349.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +608,Philippines,2018,Tourism expenditure (millions of US dollars),,,9730.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,1995,Tourist/visitor arrivals (thousands),TF,,19215.0000,"Border statistics are not collected any more, surveys used instead.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2005,Tourist/visitor arrivals (thousands),TF,,15200.0000,"Border statistics are not collected any more, surveys used instead.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2010,Tourist/visitor arrivals (thousands),TF,,12470.0000,"Border statistics are not collected any more, surveys used instead.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2016,Tourist/visitor arrivals (thousands),TF,,17471.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2017,Tourist/visitor arrivals (thousands),TF,,18258.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2018,Tourist/visitor arrivals (thousands),TF,,19622.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,1995,Tourism expenditure (millions of US dollars),,,6927.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2005,Tourism expenditure (millions of US dollars),,,7161.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2010,Tourism expenditure (millions of US dollars),,,10036.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2016,Tourism expenditure (millions of US dollars),,,12052.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2017,Tourism expenditure (millions of US dollars),,,14083.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +616,Poland,2018,Tourism expenditure (millions of US dollars),,,15748.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,1995,Tourist/visitor arrivals (thousands),TCE,,4572.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2005,Tourist/visitor arrivals (thousands),TCE,,5769.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2010,Tourist/visitor arrivals (thousands),TCE,,6756.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2016,Tourist/visitor arrivals (thousands),TCE,,13359.0000,"Include hotels, apartment hotels, “pousadas”, tourist apartments, tourist villages, camping sites, recreation centres, tourism in rural areas and local accommodation.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2017,Tourist/visitor arrivals (thousands),TCE,,15432.0000,"Include hotels, apartment hotels, “pousadas”, tourist apartments, tourist villages, camping sites, recreation centres, tourism in rural areas and local accommodation.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2018,Tourist/visitor arrivals (thousands),TCE,,16186.0000,"Include hotels, apartment hotels, “pousadas”, tourist apartments, tourist villages, camping sites, recreation centres, tourism in rural areas and local accommodation.","World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,1995,Tourism expenditure (millions of US dollars),,,5646.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2005,Tourism expenditure (millions of US dollars),,,9038.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2010,Tourism expenditure (millions of US dollars),,,12984.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2016,Tourism expenditure (millions of US dollars),,,17347.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2017,Tourism expenditure (millions of US dollars),,,21586.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +620,Portugal,2018,Tourism expenditure (millions of US dollars),,,24105.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,1995,Tourist/visitor arrivals (thousands),TF,,3131.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2005,Tourist/visitor arrivals (thousands),TF,,3686.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2010,Tourist/visitor arrivals (thousands),TF,,3186.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2016,Tourist/visitor arrivals (thousands),TF,,3736.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2017,Tourist/visitor arrivals (thousands),TF,,3513.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2018,Tourist/visitor arrivals (thousands),TF,,3068.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,1995,Tourism expenditure (millions of US dollars),,,1828.0000,Data refer to fiscal years beginning 1 July.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2005,Tourism expenditure (millions of US dollars),,,3239.0000,Data refer to fiscal years beginning 1 July.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2010,Tourism expenditure (millions of US dollars),,,3211.0000,Data refer to fiscal years beginning 1 July.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2016,Tourism expenditure (millions of US dollars),,,3974.0000,Data refer to fiscal years beginning 1 July.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2017,Tourism expenditure (millions of US dollars),,,3848.0000,Data refer to fiscal years beginning 1 July.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +630,Puerto Rico,2018,Tourism expenditure (millions of US dollars),,,3282.0000,Data refer to fiscal years beginning 1 July.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2010,Tourist/visitor arrivals (thousands),TF,,1699.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2016,Tourist/visitor arrivals (thousands),TF,,2938.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2017,Tourist/visitor arrivals (thousands),TF,,2256.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2018,Tourist/visitor arrivals (thousands),TF,,1819.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2016,Tourism expenditure (millions of US dollars),,,12593.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2017,Tourism expenditure (millions of US dollars),,,15757.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +634,Qatar,2018,Tourism expenditure (millions of US dollars),,,15239.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,1995,Tourist/visitor arrivals (thousands),VF,,3753.0000,Including nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2005,Tourist/visitor arrivals (thousands),VF,,6023.0000,Including nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2010,Tourist/visitor arrivals (thousands),VF,,8798.0000,Including nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2016,Tourist/visitor arrivals (thousands),VF,,17242.0000,Including nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2017,Tourist/visitor arrivals (thousands),VF,,13336.0000,Including nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2018,Tourist/visitor arrivals (thousands),VF,,15347.0000,Including nationals residing abroad and crew members.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,1995,Tourism expenditure (millions of US dollars),,,6670.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2005,Tourism expenditure (millions of US dollars),,,8282.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2010,Tourism expenditure (millions of US dollars),,,14315.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2016,Tourism expenditure (millions of US dollars),,,20924.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2017,Tourism expenditure (millions of US dollars),,,17173.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +410,Republic of Korea,2018,Tourism expenditure (millions of US dollars),,,19856.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2005,Tourist/visitor arrivals (thousands),TCE,,67.0000,Excluding the left side of the river Nistru and the municipality of Bender.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2010,Tourist/visitor arrivals (thousands),TCE,,64.0000,Excluding the left side of the river Nistru and the municipality of Bender.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2016,Tourist/visitor arrivals (thousands),TCE,,121.0000,Excluding the left side of the river Nistru and the municipality of Bender.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2017,Tourist/visitor arrivals (thousands),TCE,,145.0000,Excluding the left side of the river Nistru and the municipality of Bender.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2018,Tourist/visitor arrivals (thousands),TCE,,160.0000,Excluding the left side of the river Nistru and the municipality of Bender.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,1995,Tourism expenditure (millions of US dollars),,,71.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2005,Tourism expenditure (millions of US dollars),,,138.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2010,Tourism expenditure (millions of US dollars),,,222.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2016,Tourism expenditure (millions of US dollars),,,344.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2017,Tourism expenditure (millions of US dollars),,,443.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +498,Republic of Moldova,2018,Tourism expenditure (millions of US dollars),,,500.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,1995,Tourist/visitor arrivals (thousands),TF,,304.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2005,Tourist/visitor arrivals (thousands),TF,,409.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2010,Tourist/visitor arrivals (thousands),TF,,420.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2016,Tourist/visitor arrivals (thousands),TF,,458.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2017,Tourist/visitor arrivals (thousands),TF,,508.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2018,Tourist/visitor arrivals (thousands),TF,,535.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,1995,Tourism expenditure (millions of US dollars),,,216.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2005,Tourism expenditure (millions of US dollars),,,364.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2010,Tourism expenditure (millions of US dollars),,,392.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2016,Tourism expenditure (millions of US dollars),,,343.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2017,Tourism expenditure (millions of US dollars),,,427.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +638,Réunion,2018,Tourism expenditure (millions of US dollars),,,495.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,1995,Tourist/visitor arrivals (thousands),VF,,5445.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2005,Tourist/visitor arrivals (thousands),VF,,5839.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2010,Tourist/visitor arrivals (thousands),VF,,7498.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2016,Tourist/visitor arrivals (thousands),VF,,10223.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2017,Tourist/visitor arrivals (thousands),VF,,10926.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2018,Tourist/visitor arrivals (thousands),VF,,11720.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,1995,Tourism expenditure (millions of US dollars),,,689.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2005,Tourism expenditure (millions of US dollars),,,1324.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2010,Tourism expenditure (millions of US dollars),,,1631.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2016,Tourism expenditure (millions of US dollars),,,2172.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2017,Tourism expenditure (millions of US dollars),,,3008.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +642,Romania,2018,Tourism expenditure (millions of US dollars),,,3261.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,1995,Tourist/visitor arrivals (thousands),VF,,10290.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2005,Tourist/visitor arrivals (thousands),VF,,22201.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2010,Tourist/visitor arrivals (thousands),VF,,22281.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2016,Tourist/visitor arrivals (thousands),VF,,24571.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2017,Tourist/visitor arrivals (thousands),VF,,24390.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2018,Tourist/visitor arrivals (thousands),VF,,24551.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2005,Tourism expenditure (millions of US dollars),,,7805.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2010,Tourism expenditure (millions of US dollars),,,13239.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2016,Tourism expenditure (millions of US dollars),,,12822.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2017,Tourism expenditure (millions of US dollars),,,14983.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +643,Russian Federation,2018,Tourism expenditure (millions of US dollars),,,18670.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2010,Tourist/visitor arrivals (thousands),TF,,504.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2016,Tourist/visitor arrivals (thousands),TF,,932.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,1995,Tourism expenditure (millions of US dollars),,,4.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2005,Tourism expenditure (millions of US dollars),,,67.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2010,Tourism expenditure (millions of US dollars),,,224.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2016,Tourism expenditure (millions of US dollars),,,443.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2017,Tourism expenditure (millions of US dollars),,,548.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +646,Rwanda,2018,Tourism expenditure (millions of US dollars),,,528.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +667,Saba,1995,Tourist/visitor arrivals (thousands),TF,,10.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +667,Saba,2005,Tourist/visitor arrivals (thousands),TF,,11.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +667,Saba,2010,Tourist/visitor arrivals (thousands),TF,,12.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,1995,Tourist/visitor arrivals (thousands),TF,,79.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2005,Tourist/visitor arrivals (thousands),TF,,141.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2010,Tourist/visitor arrivals (thousands),TF,,98.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2016,Tourist/visitor arrivals (thousands),TF,,116.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2017,Tourist/visitor arrivals (thousands),TF,,115.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2018,Tourist/visitor arrivals (thousands),TF,,125.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,1995,Tourism expenditure (millions of US dollars),,,63.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2005,Tourism expenditure (millions of US dollars),,,121.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2010,Tourism expenditure (millions of US dollars),,,90.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2016,Tourism expenditure (millions of US dollars),,,332.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2017,Tourism expenditure (millions of US dollars),,,355.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +659,Saint Kitts and Nevis,2018,Tourism expenditure (millions of US dollars),,,367.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,1995,Tourist/visitor arrivals (thousands),TF,,231.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2005,Tourist/visitor arrivals (thousands),TF,,318.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2010,Tourist/visitor arrivals (thousands),TF,,306.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2016,Tourist/visitor arrivals (thousands),TF,,348.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2017,Tourist/visitor arrivals (thousands),TF,,386.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2018,Tourist/visitor arrivals (thousands),TF,,395.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,1995,Tourism expenditure (millions of US dollars),,,230.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2005,Tourism expenditure (millions of US dollars),,,382.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2010,Tourism expenditure (millions of US dollars),,,309.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2016,Tourism expenditure (millions of US dollars),,,776.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2017,Tourism expenditure (millions of US dollars),,,875.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +662,Saint Lucia,2018,Tourism expenditure (millions of US dollars),,,989.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,1995,Tourist/visitor arrivals (thousands),TF,,60.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2005,Tourist/visitor arrivals (thousands),TF,,96.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2010,Tourist/visitor arrivals (thousands),TF,,72.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2016,Tourist/visitor arrivals (thousands),TF,,79.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2017,Tourist/visitor arrivals (thousands),TF,,76.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2018,Tourist/visitor arrivals (thousands),TF,,80.0000,Arrivals of non-resident tourists by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,1995,Tourism expenditure (millions of US dollars),,,53.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2005,Tourism expenditure (millions of US dollars),,,104.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2010,Tourism expenditure (millions of US dollars),,,86.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2016,Tourism expenditure (millions of US dollars),,,216.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2017,Tourism expenditure (millions of US dollars),,,211.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +670,Saint Vincent & Grenadines,2018,Tourism expenditure (millions of US dollars),,,235.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,1995,Tourist/visitor arrivals (thousands),TF,,68.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2005,Tourist/visitor arrivals (thousands),TF,,102.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2010,Tourist/visitor arrivals (thousands),TF,,122.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2016,Tourist/visitor arrivals (thousands),TF,,134.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2017,Tourist/visitor arrivals (thousands),TF,,146.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2018,Tourist/visitor arrivals (thousands),TF,,164.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,1995,Tourism expenditure (millions of US dollars),,,35.6994,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2005,Tourism expenditure (millions of US dollars),,,73.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2010,Tourism expenditure (millions of US dollars),,,123.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2016,Tourism expenditure (millions of US dollars),,,148.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2017,Tourism expenditure (millions of US dollars),,,167.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +882,Samoa,2018,Tourism expenditure (millions of US dollars),,,191.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +674,San Marino,1995,Tourist/visitor arrivals (thousands),THS,,28.0000,Including Italian tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +674,San Marino,2005,Tourist/visitor arrivals (thousands),THS,,50.0000,Including Italian tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +674,San Marino,2010,Tourist/visitor arrivals (thousands),THS,,120.0000,Including Italian tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +674,San Marino,2016,Tourist/visitor arrivals (thousands),THS,,60.0000,Including Italian tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +674,San Marino,2017,Tourist/visitor arrivals (thousands),THS,,78.0000,Including Italian tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +674,San Marino,2018,Tourist/visitor arrivals (thousands),THS,,84.0000,Including Italian tourists.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,1995,Tourist/visitor arrivals (thousands),TF,,6.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2005,Tourist/visitor arrivals (thousands),TF,,15.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2010,Tourist/visitor arrivals (thousands),TF,,8.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2016,Tourist/visitor arrivals (thousands),TF,,28.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2017,Tourist/visitor arrivals (thousands),TF,,28.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2018,Tourist/visitor arrivals (thousands),TF,,33.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2016,Tourism expenditure (millions of US dollars),,,69.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2017,Tourism expenditure (millions of US dollars),,,65.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +678,Sao Tome and Principe,2018,Tourism expenditure (millions of US dollars),,,71.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,1995,Tourist/visitor arrivals (thousands),TF,,3325.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2005,Tourist/visitor arrivals (thousands),TF,,8037.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2010,Tourist/visitor arrivals (thousands),TF,,10850.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2016,Tourist/visitor arrivals (thousands),TF,,18044.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2017,Tourist/visitor arrivals (thousands),TF,,16109.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2018,Tourist/visitor arrivals (thousands),TF,,15334.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2010,Tourism expenditure (millions of US dollars),,,7536.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2016,Tourism expenditure (millions of US dollars),,,13438.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2017,Tourism expenditure (millions of US dollars),,,15020.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +682,Saudi Arabia,2018,Tourism expenditure (millions of US dollars),,,16975.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2005,Tourist/visitor arrivals (thousands),TF,,769.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2010,Tourist/visitor arrivals (thousands),TF,,900.0000,Estimate.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2016,Tourist/visitor arrivals (thousands),TF,,1210.0000,Estimate.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2017,Tourist/visitor arrivals (thousands),TF,,1365.0000,Estimate.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,1995,Tourism expenditure (millions of US dollars),,,168.1803,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2005,Tourism expenditure (millions of US dollars),,,334.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2010,Tourism expenditure (millions of US dollars),,,464.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2016,Tourism expenditure (millions of US dollars),,,438.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +686,Senegal,2017,Tourism expenditure (millions of US dollars),,,468.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2005,Tourist/visitor arrivals (thousands),TCE,,453.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2010,Tourist/visitor arrivals (thousands),TCE,,683.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2016,Tourist/visitor arrivals (thousands),TCE,,1281.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2017,Tourist/visitor arrivals (thousands),TCE,,1497.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2018,Tourist/visitor arrivals (thousands),TCE,,1711.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2005,Tourism expenditure (millions of US dollars),,,308.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2010,Tourism expenditure (millions of US dollars),,,950.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2016,Tourism expenditure (millions of US dollars),,,1461.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2017,Tourism expenditure (millions of US dollars),,,1706.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +688,Serbia,2018,Tourism expenditure (millions of US dollars),,,1921.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,1995,Tourist/visitor arrivals (thousands),TF,,121.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2005,Tourist/visitor arrivals (thousands),TF,,129.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2010,Tourist/visitor arrivals (thousands),TF,,175.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2016,Tourist/visitor arrivals (thousands),TF,,303.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2017,Tourist/visitor arrivals (thousands),TF,,350.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2018,Tourist/visitor arrivals (thousands),TF,,362.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,1995,Tourism expenditure (millions of US dollars),,,224.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2005,Tourism expenditure (millions of US dollars),,,269.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2010,Tourism expenditure (millions of US dollars),,,352.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2016,Tourism expenditure (millions of US dollars),,,505.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2017,Tourism expenditure (millions of US dollars),,,585.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +690,Seychelles,2018,Tourism expenditure (millions of US dollars),,,611.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,1995,Tourist/visitor arrivals (thousands),TF,,13.8000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2005,Tourist/visitor arrivals (thousands),TF,,40.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2010,Tourist/visitor arrivals (thousands),TF,,39.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2016,Tourist/visitor arrivals (thousands),TF,,55.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2017,Tourist/visitor arrivals (thousands),TF,,51.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2018,Tourist/visitor arrivals (thousands),TF,,57.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,1995,Tourism expenditure (millions of US dollars),,,57.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2005,Tourism expenditure (millions of US dollars),,,64.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2010,Tourism expenditure (millions of US dollars),,,26.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2016,Tourism expenditure (millions of US dollars),,,41.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2017,Tourism expenditure (millions of US dollars),,,39.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +694,Sierra Leone,2018,Tourism expenditure (millions of US dollars),,,39.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,1995,Tourist/visitor arrivals (thousands),TF,,6070.0000,Excluding Malaysian citizens arriving by land.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2005,Tourist/visitor arrivals (thousands),TF,,7079.0000,Excluding Malaysian citizens arriving by land.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2010,Tourist/visitor arrivals (thousands),TF,,9161.0000,Excluding Malaysian citizens arriving by land.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2016,Tourist/visitor arrivals (thousands),TF,,12913.0000,Excluding Malaysian citizens arriving by land.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2017,Tourist/visitor arrivals (thousands),TF,,13903.0000,Excluding Malaysian citizens arriving by land.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2018,Tourist/visitor arrivals (thousands),TF,,14673.0000,Excluding Malaysian citizens arriving by land.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,1995,Tourism expenditure (millions of US dollars),,,7611.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2005,Tourism expenditure (millions of US dollars),,,6209.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2010,Tourism expenditure (millions of US dollars),,,14178.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2016,Tourism expenditure (millions of US dollars),,,18944.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2017,Tourism expenditure (millions of US dollars),,,19891.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +702,Singapore,2018,Tourism expenditure (millions of US dollars),,,20416.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +668,Sint Eustatius,1995,Tourist/visitor arrivals (thousands),TF,,8.8000,Excluding Netherlands Antillean residents.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +668,Sint Eustatius,2005,Tourist/visitor arrivals (thousands),TF,,10.4000,Excluding Netherlands Antillean residents.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +668,Sint Eustatius,2010,Tourist/visitor arrivals (thousands),TF,,11.4000,Excluding Netherlands Antillean residents.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),1995,Tourist/visitor arrivals (thousands),TF,,460.0000,Arrivals by air. Including arrivals to Saint Martin (French part).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2005,Tourist/visitor arrivals (thousands),TF,,468.0000,Arrivals by air. Including arrivals to Saint Martin (French part).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2010,Tourist/visitor arrivals (thousands),TF,,443.0000,Arrivals by air. Including arrivals to Saint Martin (French part).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2016,Tourist/visitor arrivals (thousands),TF,,528.0000,Arrivals by air. Including arrivals to Saint Martin (French part).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2017,Tourist/visitor arrivals (thousands),TF,,402.0000,Arrivals by air. Including arrivals to Saint Martin (French part).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2018,Tourist/visitor arrivals (thousands),TF,,178.0000,Arrivals by air. Including arrivals to Saint Martin (French part).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2010,Tourism expenditure (millions of US dollars),,,681.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2016,Tourism expenditure (millions of US dollars),,,871.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2017,Tourism expenditure (millions of US dollars),,,646.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +534,Sint Maarten (Dutch part),2018,Tourism expenditure (millions of US dollars),,,468.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,1995,Tourist/visitor arrivals (thousands),TCE,,903.0000,Non-resident tourists staying in commercial accommodation only (representing approximately 25% of all tourists).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2005,Tourist/visitor arrivals (thousands),TCE,,1515.0000,Non-resident tourists staying in commercial accommodation only (representing approximately 25% of all tourists).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2010,Tourist/visitor arrivals (thousands),TCE,,1327.0000,Non-resident tourists staying in commercial accommodation only (representing approximately 25% of all tourists).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2016,Tourist/visitor arrivals (thousands),TCE,,2027.0000,Non-resident tourists staying in commercial accommodation only (representing approximately 25% of all tourists).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2017,Tourist/visitor arrivals (thousands),TCE,,2162.0000,Non-resident tourists staying in commercial accommodation only (representing approximately 25% of all tourists).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2018,Tourist/visitor arrivals (thousands),TCE,,2256.0000,Non-resident tourists staying in commercial accommodation only (representing approximately 25% of all tourists).,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,1995,Tourism expenditure (millions of US dollars),,,630.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2005,Tourism expenditure (millions of US dollars),,,1282.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2010,Tourism expenditure (millions of US dollars),,,2334.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2016,Tourism expenditure (millions of US dollars),,,2812.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2017,Tourism expenditure (millions of US dollars),,,3024.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +703,Slovakia,2018,Tourism expenditure (millions of US dollars),,,3318.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,1995,Tourist/visitor arrivals (thousands),TCE,,732.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2005,Tourist/visitor arrivals (thousands),TCE,,1555.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2010,Tourist/visitor arrivals (thousands),TCE,,2049.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2016,Tourist/visitor arrivals (thousands),TCE,,3397.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2017,Tourist/visitor arrivals (thousands),TCE,,3991.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2018,Tourist/visitor arrivals (thousands),TCE,,4425.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,1995,Tourism expenditure (millions of US dollars),,,1128.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2005,Tourism expenditure (millions of US dollars),,,1894.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2010,Tourism expenditure (millions of US dollars),,,2808.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2016,Tourism expenditure (millions of US dollars),,,2717.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2017,Tourism expenditure (millions of US dollars),,,3057.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +705,Slovenia,2018,Tourism expenditure (millions of US dollars),,,3378.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,1995,Tourist/visitor arrivals (thousands),TF,,11.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2005,Tourist/visitor arrivals (thousands),TF,,9.4000,Without first quarter.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2010,Tourist/visitor arrivals (thousands),TF,,20.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2016,Tourist/visitor arrivals (thousands),TF,,23.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2017,Tourist/visitor arrivals (thousands),TF,,25.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2018,Tourist/visitor arrivals (thousands),TF,,27.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,1995,Tourism expenditure (millions of US dollars),,,17.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2005,Tourism expenditure (millions of US dollars),,,6.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2010,Tourism expenditure (millions of US dollars),,,50.8000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2016,Tourism expenditure (millions of US dollars),,,71.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2017,Tourism expenditure (millions of US dollars),,,79.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +90,Solomon Islands,2018,Tourism expenditure (millions of US dollars),,,92.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,1995,Tourist/visitor arrivals (thousands),TF,,4488.0000,Excluding arrivals for work and contract workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2005,Tourist/visitor arrivals (thousands),TF,,7369.0000,Excluding arrivals for work and contract workers.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2010,Tourist/visitor arrivals (thousands),TF,,8074.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2016,Tourist/visitor arrivals (thousands),TF,,10044.0000,Break in the time series.;Excluding transit.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2017,Tourist/visitor arrivals (thousands),TF,,10285.0000,Excluding transit.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2018,Tourist/visitor arrivals (thousands),TF,,10472.0000,Excluding transit.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,1995,Tourism expenditure (millions of US dollars),,,2654.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2005,Tourism expenditure (millions of US dollars),,,8629.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2010,Tourism expenditure (millions of US dollars),,,10309.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2016,Tourism expenditure (millions of US dollars),,,8807.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2017,Tourism expenditure (millions of US dollars),,,9706.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +710,South Africa,2018,Tourism expenditure (millions of US dollars),,,9789.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +728,South Sudan,2016,Tourism expenditure (millions of US dollars),,,23.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +728,South Sudan,2017,Tourism expenditure (millions of US dollars),,,26.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +728,South Sudan,2018,Tourism expenditure (millions of US dollars),,,12.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,1995,Tourist/visitor arrivals (thousands),TF,,32971.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2005,Tourist/visitor arrivals (thousands),TF,,55914.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2010,Tourist/visitor arrivals (thousands),TF,,52677.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2016,Tourist/visitor arrivals (thousands),TF,,75315.0000,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2017,Tourist/visitor arrivals (thousands),TF,,81869.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2018,Tourist/visitor arrivals (thousands),TF,,82773.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,1995,Tourism expenditure (millions of US dollars),,,25368.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2005,Tourism expenditure (millions of US dollars),,,51959.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2010,Tourism expenditure (millions of US dollars),,,58348.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2016,Tourism expenditure (millions of US dollars),,,66982.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2017,Tourism expenditure (millions of US dollars),,,75906.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +724,Spain,2018,Tourism expenditure (millions of US dollars),,,81250.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,1995,Tourist/visitor arrivals (thousands),TF,,403.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2005,Tourist/visitor arrivals (thousands),TF,,549.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2010,Tourist/visitor arrivals (thousands),TF,,654.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2016,Tourist/visitor arrivals (thousands),TF,,2051.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2017,Tourist/visitor arrivals (thousands),TF,,2116.4000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2018,Tourist/visitor arrivals (thousands),TF,,2334.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,1995,Tourism expenditure (millions of US dollars),,,367.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2005,Tourism expenditure (millions of US dollars),,,729.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2010,Tourism expenditure (millions of US dollars),,,1044.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2016,Tourism expenditure (millions of US dollars),,,4591.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2017,Tourism expenditure (millions of US dollars),,,5083.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +144,Sri Lanka,2018,Tourism expenditure (millions of US dollars),,,5608.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2005,Tourist/visitor arrivals (thousands),THS,,88.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2010,Tourist/visitor arrivals (thousands),THS,,522.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2016,Tourist/visitor arrivals (thousands),THS,,400.0000,West Bank only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2017,Tourist/visitor arrivals (thousands),THS,,503.0000,West Bank only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2018,Tourist/visitor arrivals (thousands),THS,,606.0000,West Bank only.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,1995,Tourism expenditure (millions of US dollars),,,255.0000,Excluding passenger transport.;West Bank and Gaza.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2005,Tourism expenditure (millions of US dollars),,,52.0000,Excluding passenger transport.;West Bank and Gaza.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2010,Tourism expenditure (millions of US dollars),,,409.0000,Excluding passenger transport.;West Bank and Gaza.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2016,Tourism expenditure (millions of US dollars),,,235.0000,Excluding passenger transport.;West Bank and Gaza.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2017,Tourism expenditure (millions of US dollars),,,225.0000,Excluding passenger transport.;West Bank and Gaza.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +275,State of Palestine,2018,Tourism expenditure (millions of US dollars),,,245.0000,Excluding passenger transport.;West Bank and Gaza.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,1995,Tourist/visitor arrivals (thousands),TF,,29.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2005,Tourist/visitor arrivals (thousands),TF,,246.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2010,Tourist/visitor arrivals (thousands),TF,,495.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2016,Tourist/visitor arrivals (thousands),TF,,800.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2017,Tourist/visitor arrivals (thousands),TF,,813.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2018,Tourist/visitor arrivals (thousands),TF,,836.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,1995,Tourism expenditure (millions of US dollars),,,8.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2005,Tourism expenditure (millions of US dollars),,,114.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2010,Tourism expenditure (millions of US dollars),,,82.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2016,Tourism expenditure (millions of US dollars),,,1009.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2017,Tourism expenditure (millions of US dollars),,,1029.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +729,Sudan,2018,Tourism expenditure (millions of US dollars),,,1043.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,1995,Tourist/visitor arrivals (thousands),TF,,43.0000,Arrivals at Zanderij Airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2005,Tourist/visitor arrivals (thousands),TF,,161.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2010,Tourist/visitor arrivals (thousands),TF,,205.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2016,Tourist/visitor arrivals (thousands),TF,,256.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2017,Tourist/visitor arrivals (thousands),TF,,278.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,1995,Tourism expenditure (millions of US dollars),,,52.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2005,Tourism expenditure (millions of US dollars),,,96.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2010,Tourism expenditure (millions of US dollars),,,69.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2016,Tourism expenditure (millions of US dollars),,,74.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2017,Tourism expenditure (millions of US dollars),,,61.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +740,Suriname,2018,Tourism expenditure (millions of US dollars),,,73.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,1995,Tourist/visitor arrivals (thousands),TCE,,2310.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2005,Tourist/visitor arrivals (thousands),TCE,,4883.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2010,Tourist/visitor arrivals (thousands),TCE,,5183.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2016,Tourist/visitor arrivals (thousands),TCE,,6782.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2017,Tourist/visitor arrivals (thousands),TCE,,7054.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2018,Tourist/visitor arrivals (thousands),TCE,,7440.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,1995,Tourism expenditure (millions of US dollars),,,3471.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2005,Tourism expenditure (millions of US dollars),,,6554.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2010,Tourism expenditure (millions of US dollars),,,8336.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2016,Tourism expenditure (millions of US dollars),,,12764.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2017,Tourism expenditure (millions of US dollars),,,14168.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +752,Sweden,2018,Tourism expenditure (millions of US dollars),,,14926.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,1995,Tourist/visitor arrivals (thousands),THS,,6946.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2005,Tourist/visitor arrivals (thousands),THS,,7229.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2010,Tourist/visitor arrivals (thousands),THS,,8628.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2016,Tourist/visitor arrivals (thousands),THS,,9205.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2017,Tourist/visitor arrivals (thousands),THS,,9889.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2018,Tourist/visitor arrivals (thousands),THS,,10362.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,1995,Tourism expenditure (millions of US dollars),,,11354.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2005,Tourism expenditure (millions of US dollars),,,11952.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2010,Tourism expenditure (millions of US dollars),,,17614.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2016,Tourism expenditure (millions of US dollars),,,19042.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2017,Tourism expenditure (millions of US dollars),,,19654.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +756,Switzerland,2018,Tourism expenditure (millions of US dollars),,,20276.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +760,Syrian Arab Republic,1995,Tourist/visitor arrivals (thousands),TCE,,815.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +760,Syrian Arab Republic,2005,Tourist/visitor arrivals (thousands),TCE,,3571.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +760,Syrian Arab Republic,2010,Tourist/visitor arrivals (thousands),TCE,,8546.0000,Including nationals residing abroad.;Including Iraqi nationals.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +760,Syrian Arab Republic,2005,Tourism expenditure (millions of US dollars),,,2035.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +760,Syrian Arab Republic,2010,Tourism expenditure (millions of US dollars),,,6308.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2010,Tourist/visitor arrivals (thousands),VF,,160.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2016,Tourist/visitor arrivals (thousands),VF,,344.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2017,Tourist/visitor arrivals (thousands),VF,,431.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2018,Tourist/visitor arrivals (thousands),VF,,1035.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2005,Tourism expenditure (millions of US dollars),,,9.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2010,Tourism expenditure (millions of US dollars),,,141.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2016,Tourism expenditure (millions of US dollars),,,149.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2017,Tourism expenditure (millions of US dollars),,,171.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +762,Tajikistan,2018,Tourism expenditure (millions of US dollars),,,170.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,1995,Tourist/visitor arrivals (thousands),TF,,6952.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2005,Tourist/visitor arrivals (thousands),TF,,11567.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2010,Tourist/visitor arrivals (thousands),TF,,15936.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2016,Tourist/visitor arrivals (thousands),TF,,32530.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2017,Tourist/visitor arrivals (thousands),TF,,35592.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2018,Tourist/visitor arrivals (thousands),TF,,38178.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,1995,Tourism expenditure (millions of US dollars),,,9257.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2005,Tourism expenditure (millions of US dollars),,,12103.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2010,Tourism expenditure (millions of US dollars),,,23796.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2016,Tourism expenditure (millions of US dollars),,,48459.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2017,Tourism expenditure (millions of US dollars),,,57057.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +764,Thailand,2018,Tourism expenditure (millions of US dollars),,,65242.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2010,Tourist/visitor arrivals (thousands),TF,,40.0000,Arrivals by air at Dili Airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2016,Tourist/visitor arrivals (thousands),TF,,66.0000,Arrivals by air at Dili Airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2017,Tourist/visitor arrivals (thousands),TF,,74.0000,Arrivals by air at Dili Airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2018,Tourist/visitor arrivals (thousands),TF,,75.0000,Arrivals by air at Dili Airport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2010,Tourism expenditure (millions of US dollars),,,24.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2016,Tourism expenditure (millions of US dollars),,,58.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2017,Tourism expenditure (millions of US dollars),,,73.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +626,Timor-Leste,2018,Tourism expenditure (millions of US dollars),,,78.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,1995,Tourist/visitor arrivals (thousands),THS,,53.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2005,Tourist/visitor arrivals (thousands),THS,,81.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2010,Tourist/visitor arrivals (thousands),THS,,202.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2016,Tourist/visitor arrivals (thousands),THS,,338.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2017,Tourist/visitor arrivals (thousands),THS,,514.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2018,Tourist/visitor arrivals (thousands),THS,,573.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2005,Tourism expenditure (millions of US dollars),,,27.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2010,Tourism expenditure (millions of US dollars),,,105.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2016,Tourism expenditure (millions of US dollars),,,223.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +768,Togo,2017,Tourism expenditure (millions of US dollars),,,245.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,1995,Tourist/visitor arrivals (thousands),TF,,29.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2005,Tourist/visitor arrivals (thousands),TF,,42.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2010,Tourist/visitor arrivals (thousands),TF,,47.1000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2016,Tourist/visitor arrivals (thousands),TF,,59.1000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2017,Tourist/visitor arrivals (thousands),TF,,62.5000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2018,Tourist/visitor arrivals (thousands),TF,,54.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2005,Tourism expenditure (millions of US dollars),,,15.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2010,Tourism expenditure (millions of US dollars),,,17.3000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2016,Tourism expenditure (millions of US dollars),,,52.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2017,Tourism expenditure (millions of US dollars),,,48.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +776,Tonga,2018,Tourism expenditure (millions of US dollars),,,48.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,1995,Tourist/visitor arrivals (thousands),TF,,260.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2005,Tourist/visitor arrivals (thousands),TF,,463.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2010,Tourist/visitor arrivals (thousands),TF,,388.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2016,Tourist/visitor arrivals (thousands),TF,,409.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2017,Tourist/visitor arrivals (thousands),TF,,395.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2018,Tourist/visitor arrivals (thousands),TF,,375.0000,Arrivals by air.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,1995,Tourism expenditure (millions of US dollars),,,232.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2005,Tourism expenditure (millions of US dollars),,,593.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2010,Tourism expenditure (millions of US dollars),,,630.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2016,Tourism expenditure (millions of US dollars),,,708.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2017,Tourism expenditure (millions of US dollars),,,717.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +780,Trinidad and Tobago,2018,Tourism expenditure (millions of US dollars),,,541.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,1995,Tourist/visitor arrivals (thousands),TF,,4120.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2005,Tourist/visitor arrivals (thousands),TF,,6378.0000,Excluding nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2010,Tourist/visitor arrivals (thousands),TF,,7828.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2016,Tourist/visitor arrivals (thousands),TF,,5724.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2017,Tourist/visitor arrivals (thousands),TF,,7052.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2018,Tourist/visitor arrivals (thousands),TF,,8299.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,1995,Tourism expenditure (millions of US dollars),,,1838.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2005,Tourism expenditure (millions of US dollars),,,2800.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2010,Tourism expenditure (millions of US dollars),,,3477.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2016,Tourism expenditure (millions of US dollars),,,1706.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2017,Tourism expenditure (millions of US dollars),,,1782.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +788,Tunisia,2018,Tourism expenditure (millions of US dollars),,,2320.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,1995,Tourist/visitor arrivals (thousands),TF,,7083.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2005,Tourist/visitor arrivals (thousands),TF,,20273.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2010,Tourist/visitor arrivals (thousands),TF,,31364.0000,Turkish citizens resident abroad are included.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2016,Tourist/visitor arrivals (thousands),TF,,30289.0000,Turkish citizens resident abroad are included.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2017,Tourist/visitor arrivals (thousands),TF,,37601.0000,Turkish citizens resident abroad are included.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2018,Tourist/visitor arrivals (thousands),TF,,45768.0000,Turkish citizens resident abroad are included.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2005,Tourism expenditure (millions of US dollars),,,20760.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2010,Tourism expenditure (millions of US dollars),,,26318.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2016,Tourism expenditure (millions of US dollars),,,26788.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2017,Tourism expenditure (millions of US dollars),,,31870.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +792,Turkey,2018,Tourism expenditure (millions of US dollars),,,37140.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +795,Turkmenistan,1995,Tourist/visitor arrivals (thousands),TF,,218.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +795,Turkmenistan,2005,Tourist/visitor arrivals (thousands),TF,,11.6000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,1995,Tourist/visitor arrivals (thousands),TF,,79.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,2005,Tourist/visitor arrivals (thousands),TF,,176.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,2010,Tourist/visitor arrivals (thousands),TF,,281.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,2016,Tourist/visitor arrivals (thousands),TF,,449.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,2017,Tourist/visitor arrivals (thousands),TF,,416.4000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,2018,Tourist/visitor arrivals (thousands),TF,,441.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +796,Turks and Caicos Islands,1995,Tourism expenditure (millions of US dollars),,,53.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,1995,Tourist/visitor arrivals (thousands),TF,,0.9000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2005,Tourist/visitor arrivals (thousands),TF,,1.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2010,Tourist/visitor arrivals (thousands),TF,,1.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2016,Tourist/visitor arrivals (thousands),TF,,2.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2017,Tourist/visitor arrivals (thousands),TF,,2.5000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2018,Tourist/visitor arrivals (thousands),TF,,2.7000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2005,Tourism expenditure (millions of US dollars),,,1.2000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +798,Tuvalu,2010,Tourism expenditure (millions of US dollars),,,2.4000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,1995,Tourist/visitor arrivals (thousands),TF,,160.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2005,Tourist/visitor arrivals (thousands),TF,,468.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2010,Tourist/visitor arrivals (thousands),TF,,946.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2016,Tourist/visitor arrivals (thousands),TF,,1323.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2017,Tourist/visitor arrivals (thousands),TF,,1402.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2005,Tourism expenditure (millions of US dollars),,,382.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2010,Tourism expenditure (millions of US dollars),,,802.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2016,Tourism expenditure (millions of US dollars),,,1118.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2017,Tourism expenditure (millions of US dollars),,,957.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +800,Uganda,2018,Tourism expenditure (millions of US dollars),,,1044.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,1995,Tourist/visitor arrivals (thousands),TF,,3716.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2005,Tourist/visitor arrivals (thousands),TF,,17631.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2010,Tourist/visitor arrivals (thousands),TF,,21203.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2016,Tourist/visitor arrivals (thousands),TF,,13333.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2017,Tourist/visitor arrivals (thousands),TF,,14230.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2018,Tourist/visitor arrivals (thousands),TF,,14104.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2005,Tourism expenditure (millions of US dollars),,,3542.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2010,Tourism expenditure (millions of US dollars),,,4696.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2016,Tourism expenditure (millions of US dollars),,,1723.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2017,Tourism expenditure (millions of US dollars),,,2019.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +804,Ukraine,2018,Tourism expenditure (millions of US dollars),,,2269.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,1995,Tourist/visitor arrivals (thousands),THS,,2315.0000,Arrivals in hotels only. Including domestic tourism and nationals of the country residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2005,Tourist/visitor arrivals (thousands),THS,,7126.0000,Arrivals in hotels only. Including domestic tourism and nationals of the country residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2016,Tourist/visitor arrivals (thousands),THS,,18967.0000,Arrivals in hotels only. Including domestic tourism and nationals of the country residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2017,Tourist/visitor arrivals (thousands),THS,,20394.0000,Arrivals in hotels only. Including domestic tourism and nationals of the country residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2018,Tourist/visitor arrivals (thousands),THS,,21286.0000,Arrivals in hotels only. Including domestic tourism and nationals of the country residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,1995,Tourism expenditure (millions of US dollars),,,632.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2005,Tourism expenditure (millions of US dollars),,,3218.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2010,Tourism expenditure (millions of US dollars),,,8577.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2016,Tourism expenditure (millions of US dollars),,,19496.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2017,Tourism expenditure (millions of US dollars),,,21048.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +784,United Arab Emirates,2018,Tourism expenditure (millions of US dollars),,,21390.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,1995,Tourist/visitor arrivals (thousands),TF,,21719.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2005,Tourist/visitor arrivals (thousands),TF,,28039.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2010,Tourist/visitor arrivals (thousands),TF,,28295.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2016,Tourist/visitor arrivals (thousands),TF,,35814.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2017,Tourist/visitor arrivals (thousands),TF,,37651.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2018,Tourist/visitor arrivals (thousands),TF,,36316.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,1995,Tourism expenditure (millions of US dollars),,,27577.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2005,Tourism expenditure (millions of US dollars),,,32948.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2010,Tourism expenditure (millions of US dollars),,,34715.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2016,Tourism expenditure (millions of US dollars),,,47777.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2017,Tourism expenditure (millions of US dollars),,,47719.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +826,United Kingdom,2018,Tourism expenditure (millions of US dollars),,,48515.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,1995,Tourist/visitor arrivals (thousands),TF,,285.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2005,Tourist/visitor arrivals (thousands),TF,,590.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2010,Tourist/visitor arrivals (thousands),TF,,754.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2016,Tourist/visitor arrivals (thousands),TF,,1233.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2017,Tourist/visitor arrivals (thousands),TF,,1275.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2018,Tourist/visitor arrivals (thousands),TF,,1378.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2005,Tourism expenditure (millions of US dollars),,,835.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2010,Tourism expenditure (millions of US dollars),,,1279.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2016,Tourism expenditure (millions of US dollars),,,2149.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2017,Tourism expenditure (millions of US dollars),,,2265.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +834,United Rep. of Tanzania,2018,Tourism expenditure (millions of US dollars),,,2465.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,1995,Tourist/visitor arrivals (thousands),TF,,43318.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2005,Tourist/visitor arrivals (thousands),TF,,49206.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2010,Tourist/visitor arrivals (thousands),TF,,60010.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2016,Tourist/visitor arrivals (thousands),TF,,76407.4880,Break in the time series.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2017,Tourist/visitor arrivals (thousands),TF,,77186.7460,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2018,Tourist/visitor arrivals (thousands),TF,,79745.9180,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,1995,Tourism expenditure (millions of US dollars),,,93743.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2005,Tourism expenditure (millions of US dollars),,,122077.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2010,Tourism expenditure (millions of US dollars),,,167996.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2016,Tourism expenditure (millions of US dollars),,,245991.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2017,Tourism expenditure (millions of US dollars),,,251544.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +840,United States of America,2018,Tourism expenditure (millions of US dollars),,,256145.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,1995,Tourist/visitor arrivals (thousands),TF,,454.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2005,Tourist/visitor arrivals (thousands),TF,,594.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2010,Tourist/visitor arrivals (thousands),TF,,572.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2016,Tourist/visitor arrivals (thousands),TF,,667.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2017,Tourist/visitor arrivals (thousands),TF,,535.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2018,Tourist/visitor arrivals (thousands),TF,,381.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,1995,Tourism expenditure (millions of US dollars),,,822.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2005,Tourism expenditure (millions of US dollars),,,1432.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2010,Tourism expenditure (millions of US dollars),,,1223.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2016,Tourism expenditure (millions of US dollars),,,1343.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2017,Tourism expenditure (millions of US dollars),,,1202.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +850,United States Virgin Islands,2018,Tourism expenditure (millions of US dollars),,,1046.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,1995,Tourist/visitor arrivals (thousands),TF,,2022.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2005,Tourist/visitor arrivals (thousands),TF,,1808.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2010,Tourist/visitor arrivals (thousands),TF,,2353.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2016,Tourist/visitor arrivals (thousands),TF,,3037.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2017,Tourist/visitor arrivals (thousands),TF,,3674.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2018,Tourist/visitor arrivals (thousands),TF,,3469.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,1995,Tourism expenditure (millions of US dollars),,,725.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2005,Tourism expenditure (millions of US dollars),,,699.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2010,Tourism expenditure (millions of US dollars),,,1669.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2016,Tourism expenditure (millions of US dollars),,,2182.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2017,Tourism expenditure (millions of US dollars),,,2660.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +858,Uruguay,2018,Tourism expenditure (millions of US dollars),,,2439.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,1995,Tourist/visitor arrivals (thousands),TF,,92.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2005,Tourist/visitor arrivals (thousands),TF,,242.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2010,Tourist/visitor arrivals (thousands),TF,,975.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2016,Tourist/visitor arrivals (thousands),TF,,2027.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2017,Tourist/visitor arrivals (thousands),TF,,2690.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2018,Tourist/visitor arrivals (thousands),TF,,5346.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2005,Tourism expenditure (millions of US dollars),,,28.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2010,Tourism expenditure (millions of US dollars),,,121.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2016,Tourism expenditure (millions of US dollars),,,458.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2017,Tourism expenditure (millions of US dollars),,,689.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +860,Uzbekistan,2018,Tourism expenditure (millions of US dollars),,,1144.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,1995,Tourist/visitor arrivals (thousands),TF,,44.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2005,Tourist/visitor arrivals (thousands),TF,,62.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2010,Tourist/visitor arrivals (thousands),TF,,97.2000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2016,Tourist/visitor arrivals (thousands),TF,,95.1000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2017,Tourist/visitor arrivals (thousands),TF,,109.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2018,Tourist/visitor arrivals (thousands),TF,,116.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2005,Tourism expenditure (millions of US dollars),,,104.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2010,Tourism expenditure (millions of US dollars),,,242.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2016,Tourism expenditure (millions of US dollars),,,275.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2017,Tourism expenditure (millions of US dollars),,,289.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +548,Vanuatu,2018,Tourism expenditure (millions of US dollars),,,325.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),1995,Tourist/visitor arrivals (thousands),TF,,700.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2005,Tourist/visitor arrivals (thousands),TF,,706.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2010,Tourist/visitor arrivals (thousands),TF,,526.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2016,Tourist/visitor arrivals (thousands),TF,,601.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2017,Tourist/visitor arrivals (thousands),TF,,427.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),1995,Tourism expenditure (millions of US dollars),,,995.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2005,Tourism expenditure (millions of US dollars),,,722.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2010,Tourism expenditure (millions of US dollars),,,885.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +862,Venezuela (Boliv. Rep. of),2016,Tourism expenditure (millions of US dollars),,,546.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,1995,Tourist/visitor arrivals (thousands),VF,,1351.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2005,Tourist/visitor arrivals (thousands),VF,,3477.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2010,Tourist/visitor arrivals (thousands),VF,,5050.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2016,Tourist/visitor arrivals (thousands),VF,,10013.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2017,Tourist/visitor arrivals (thousands),VF,,12922.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2018,Tourist/visitor arrivals (thousands),VF,,15498.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2005,Tourism expenditure (millions of US dollars),,,2300.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2010,Tourism expenditure (millions of US dollars),,,4450.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2016,Tourism expenditure (millions of US dollars),,,8500.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2017,Tourism expenditure (millions of US dollars),,,8890.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +704,Viet Nam,2018,Tourism expenditure (millions of US dollars),,,10080.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +887,Yemen,1995,Tourist/visitor arrivals (thousands),TF,,61.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +887,Yemen,2005,Tourist/visitor arrivals (thousands),TF,,336.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +887,Yemen,2010,Tourist/visitor arrivals (thousands),TF,,1025.0000,Including nationals residing abroad.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +887,Yemen,2010,Tourism expenditure (millions of US dollars),,,1291.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +887,Yemen,2016,Tourism expenditure (millions of US dollars),,,116.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,1995,Tourist/visitor arrivals (thousands),TF,,163.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2005,Tourist/visitor arrivals (thousands),TF,,669.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2010,Tourist/visitor arrivals (thousands),TF,,815.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2016,Tourist/visitor arrivals (thousands),TF,,956.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2017,Tourist/visitor arrivals (thousands),TF,,1083.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2018,Tourist/visitor arrivals (thousands),TF,,1072.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2005,Tourism expenditure (millions of US dollars),,,447.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2010,Tourism expenditure (millions of US dollars),,,492.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2016,Tourism expenditure (millions of US dollars),,,683.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2017,Tourism expenditure (millions of US dollars),,,653.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +894,Zambia,2018,Tourism expenditure (millions of US dollars),,,742.0000,Excluding passenger transport.,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,1995,Tourist/visitor arrivals (thousands),VF,,1416.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2005,Tourist/visitor arrivals (thousands),VF,,1559.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2010,Tourist/visitor arrivals (thousands),VF,,2239.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2016,Tourist/visitor arrivals (thousands),VF,,2168.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2017,Tourist/visitor arrivals (thousands),VF,,2423.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2018,Tourist/visitor arrivals (thousands),VF,,2580.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,1995,Tourism expenditure (millions of US dollars),,,145.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2005,Tourism expenditure (millions of US dollars),,,99.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2010,Tourism expenditure (millions of US dollars),,,135.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2016,Tourism expenditure (millions of US dollars),,,194.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." +716,Zimbabwe,2017,Tourism expenditure (millions of US dollars),,,158.0000,,"World Tourism Organization (UNWTO), Madrid, the UNWTO Statistics Database, last accessed January 2020." diff --git a/apache-spark/src/main/java/com/baeldung/differences/dataframe/dataset/rdd/TouristData.java b/apache-spark/src/main/java/com/baeldung/differences/dataframe/dataset/rdd/TouristData.java new file mode 100644 index 0000000000..fbeef4283a --- /dev/null +++ b/apache-spark/src/main/java/com/baeldung/differences/dataframe/dataset/rdd/TouristData.java @@ -0,0 +1,75 @@ +package com.baeldung.differences.dataframe.dataset.rdd; + + +public class TouristData { + + private String region; + private String country; + private String year; + private String series; + private Double value; + private String footnotes; + private String source; + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + this.region = region; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getYear() { + return year; + } + + public void setYear(String year) { + this.year = year; + } + + public String getSeries() { + return series; + } + + public void setSeries(String series) { + this.series = series; + } + + public Double getValue() { + return value; + } + + public void setValue(Double value) { + this.value = value; + } + + public String getFootnotes() { + return footnotes; + } + + public void setFootnotes(String footnotes) { + this.footnotes = footnotes; + } + + public String getSource() { + return source; + } + + public void setSource(String source) { + this.source = source; + } + + @Override + public String toString() { + return "TouristData [region=" + region + ", country=" + country + ", year=" + year + ", series=" + series + ", value=" + value + ", footnotes=" + footnotes + ", source=" + source + "]"; + } + +} diff --git a/apache-spark/src/test/java/com/baeldung/differences/rdd/ActionsUnitTest.java b/apache-spark/src/test/java/com/baeldung/differences/rdd/ActionsUnitTest.java new file mode 100644 index 0000000000..a3e1811e6f --- /dev/null +++ b/apache-spark/src/test/java/com/baeldung/differences/rdd/ActionsUnitTest.java @@ -0,0 +1,67 @@ +package com.baeldung.differences.rdd; + +import static org.junit.Assert.assertEquals; + +import java.util.List; + +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaPairRDD; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import scala.Tuple2; + +public class ActionsUnitTest { + private static JavaRDD tourists; + private static JavaSparkContext sc; + public static final String COMMA_DELIMITER = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"; + + @BeforeClass + public static void init() { + SparkConf conf = new SparkConf().setAppName("reduce") + .setMaster("local[*]"); + sc = new JavaSparkContext(conf); + tourists = sc.textFile("data/Tourist.csv").filter(line -> !line.startsWith("Region")); + } + + @AfterClass + public static void cleanup() { + sc.close(); + } + + @Test + public void whenDistinctCount_thenReturnDistinctNumRecords() { + JavaRDD countries = tourists.map(line -> { + String[] columns = line.split(COMMA_DELIMITER); + return columns[1]; + }) + .distinct(); + Long numberOfCountries = countries.count(); + System.out.println("Count: " + numberOfCountries); + + assertEquals(Long.valueOf(220), numberOfCountries); + } + + @Test + public void whenReduceByKeySum_thenTotalValuePerKey() { + JavaRDD touristsExpenditure = tourists.filter(line -> line.split(COMMA_DELIMITER)[3].contains("expenditure")); + + JavaPairRDD expenditurePairRdd = touristsExpenditure.mapToPair(line -> { + String[] columns = line.split(COMMA_DELIMITER); + return new Tuple2<>(columns[1], Double.valueOf(columns[6])); + }); + List> totalByCountry = expenditurePairRdd.reduceByKey((x, y) -> x + y) + .collect(); + System.out.println("Total per Country: " + totalByCountry); + + for(Tuple2 tuple : totalByCountry) { + if (tuple._1.equals("Mexico")) { + assertEquals(Double.valueOf(99164), tuple._2); + } + } + } + +} diff --git a/apache-spark/src/test/java/com/baeldung/differences/rdd/DataFrameUnitTest.java b/apache-spark/src/test/java/com/baeldung/differences/rdd/DataFrameUnitTest.java new file mode 100644 index 0000000000..f294e5bc66 --- /dev/null +++ b/apache-spark/src/test/java/com/baeldung/differences/rdd/DataFrameUnitTest.java @@ -0,0 +1,74 @@ +package com.baeldung.differences.rdd; + +import static org.apache.spark.sql.functions.col; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import org.apache.spark.sql.DataFrameReader; +import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.Row; +import org.apache.spark.sql.SparkSession; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class DataFrameUnitTest { + private static SparkSession session; + private static Dataset data; + + @BeforeClass + public static void init() { + session = SparkSession.builder() + .appName("TouristDataFrameExample") + .master("local[*]") + .getOrCreate(); + DataFrameReader dataFrameReader = session.read(); + data = dataFrameReader.option("header", "true") + .csv("data/Tourist.csv"); + } + + @AfterClass + public static void cleanup() { + session.stop(); + } + + @Test + public void whenSelectSpecificColumns_thenColumnsFiltered() { + Dataset selectedData = data.select(col("country"), col("year"), col("value")); + selectedData.show(); + + List resultList = Arrays.asList(selectedData.columns()); + assertTrue(resultList.contains("country")); + assertTrue(resultList.contains("year")); + assertTrue(resultList.contains("value")); + assertFalse(resultList.contains("Series")); + + } + + @Test + public void whenFilteringByCountry_thenCountryRecordsSelected() { + Dataset filteredData = data.filter(col("country").equalTo("Mexico")); + filteredData.show(); + + filteredData.foreach(record -> { + assertEquals("Mexico", record.get(1)); + }); + + } + + @Test + public void whenGroupCountByCountry_thenContryTotalRecords() { + Dataset recordsPerCountry = data.groupBy(col("country")) + .count(); + recordsPerCountry.show(); + + Dataset filteredData = recordsPerCountry.filter(col("country").equalTo("Sweden")); + assertEquals(new Long(12), filteredData.first() + .get(1)); + } + +} diff --git a/apache-spark/src/test/java/com/baeldung/differences/rdd/DatasetUnitTest.java b/apache-spark/src/test/java/com/baeldung/differences/rdd/DatasetUnitTest.java new file mode 100644 index 0000000000..1d83505812 --- /dev/null +++ b/apache-spark/src/test/java/com/baeldung/differences/rdd/DatasetUnitTest.java @@ -0,0 +1,83 @@ +package com.baeldung.differences.rdd; + +import static org.apache.spark.sql.functions.col; +import static org.apache.spark.sql.functions.sum; +import static org.junit.Assert.assertEquals; + +import org.apache.spark.api.java.function.FilterFunction; +import org.apache.spark.sql.DataFrameReader; +import org.apache.spark.sql.Dataset; +import org.apache.spark.sql.Encoders; +import org.apache.spark.sql.Row; +import org.apache.spark.sql.SparkSession; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.baeldung.differences.dataframe.dataset.rdd.TouristData; + +public class DatasetUnitTest { + private static SparkSession session; + private static Dataset typedDataset; + + @BeforeClass + public static void init() { + session = SparkSession.builder() + .appName("TouristDatasetExample") + .master("local[*]") + .getOrCreate(); + DataFrameReader dataFrameReader = session.read(); + Dataset data = dataFrameReader.option("header", "true") + .csv("data/Tourist.csv"); + Dataset responseWithSelectedColumns = data.select(col("region"), + col("country"), col("year"), col("series"), col("value").cast("double"), + col("footnotes"), col("source")); + typedDataset = responseWithSelectedColumns.as(Encoders.bean(TouristData.class)); + } + + @AfterClass + public static void cleanup() { + session.stop(); + } + + @Test + public void whenFilteringByCountry_thenCountryRecordsSelected() { + Dataset selectedData = typedDataset + .filter((FilterFunction) record -> record.getCountry() + .equals("Norway")); + selectedData.show(); + + selectedData.foreach(record -> { + assertEquals("Norway", record.getCountry()); + }); + } + + @Test + public void whenGroupCountByCountry_thenContryTotalRecords() { + Dataset countriesCount = typedDataset.groupBy(typedDataset.col("country")) + .count(); + countriesCount.show(); + + assertEquals(Long.valueOf(220), Long.valueOf(countriesCount.count())); + } + + @Test + public void whenFilteredByPropertyRange_thenRetreiveValidRecords() { + // Filter records with existing data for years between 2010 and 2017 + typedDataset.filter((FilterFunction) record -> record.getYear() != null + && (Long.valueOf(record.getYear()) > 2010 && Long.valueOf(record.getYear()) < 2017)) + .show(); + } + + @Test + public void whenSumValue_thenRetreiveTotalValue() { + // Total tourist expenditure by country + typedDataset.filter((FilterFunction) record -> record.getValue() != null + && record.getSeries() + .contains("expenditure")) + .groupBy("country") + .agg(sum("value")) + .show(); + } + +} diff --git a/apache-spark/src/test/java/com/baeldung/differences/rdd/TransformationsUnitTest.java b/apache-spark/src/test/java/com/baeldung/differences/rdd/TransformationsUnitTest.java new file mode 100644 index 0000000000..4b2d9e1127 --- /dev/null +++ b/apache-spark/src/test/java/com/baeldung/differences/rdd/TransformationsUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung.differences.rdd; + + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +import org.apache.commons.lang3.StringUtils; +import org.apache.spark.SparkConf; +import org.apache.spark.api.java.JavaRDD; +import org.apache.spark.api.java.JavaSparkContext; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class TransformationsUnitTest { + + public static final String COMMA_DELIMITER = ",(?=([^\"]*\"[^\"]*\")*[^\"]*$)"; + private static JavaSparkContext sc; + private static JavaRDD tourists; + + @BeforeClass + public static void init() { + SparkConf conf = new SparkConf().setAppName("uppercaseCountries") + .setMaster("local[*]"); + sc = new JavaSparkContext(conf); + tourists = sc.textFile("data/Tourist.csv") + .filter(line -> !line.startsWith("Region")); //filter header row + } + + @AfterClass + public static void cleanup() { + sc.close(); + } + + @Test + public void whenMapUpperCase_thenCountryNameUppercased() { + JavaRDD upperCaseCountries = tourists.map(line -> { + String[] columns = line.split(COMMA_DELIMITER); + return columns[1].toUpperCase(); + }) + .distinct(); + + upperCaseCountries.saveAsTextFile("data/output/uppercase.txt"); + + upperCaseCountries.foreach(country -> { + //replace non alphanumerical characters + country = country.replaceAll("[^a-zA-Z]", ""); + assertTrue(StringUtils.isAllUpperCase(country)); + }); + } + + @Test + public void whenFilterByCountry_thenShowRequestedCountryRecords() { + JavaRDD touristsInMexico = tourists.filter(line -> line.split(COMMA_DELIMITER)[1].equals("Mexico")); + + touristsInMexico.saveAsTextFile("data/output/touristInMexico.txt"); + + touristsInMexico.foreach(record -> { + assertEquals("Mexico", record.split(COMMA_DELIMITER)[1]); + }); + } + +} From b9dbeb6c58d19e7ca88e56086136678cc2883a66 Mon Sep 17 00:00:00 2001 From: andrebrowne <42154231+andrebrowne@users.noreply.github.com> Date: Fri, 2 Oct 2020 13:21:18 -0400 Subject: [PATCH 183/260] BAEL-4012 Add Netflix Feign (#10110) * BAEL-4012 Add Netflix Feign * BAEL-4012 Cleanup pom --- .../spring-cloud-netflix-feign/pom.xml | 71 +++++++++++++++++++ .../netflix/feign/ExampleApplication.java | 16 +++++ .../feign/client/JSONPlaceHolderClient.java | 25 +++++++ .../feign/config/ClientConfiguration.java | 38 ++++++++++ .../feign/config/CustomErrorDecoder.java | 21 ++++++ .../feign/exception/BadRequestException.java | 21 ++++++ .../feign/exception/NotFoundException.java | 21 ++++++ .../hystrix/JSONPlaceHolderFallback.java | 22 ++++++ .../cloud/netflix/feign/model/Post.java | 41 +++++++++++ .../feign/service/JSONPlaceHolderService.java | 12 ++++ .../impl/JSONPlaceHolderServiceImpl.java | 26 +++++++ .../src/main/resources/application.properties | 3 + .../netflix/feign/ExampleTestApplication.java | 21 ++++++ .../netflix/feign/NetflixFeignUnitTest.java | 43 +++++++++++ 14 files changed, 381 insertions(+) create mode 100644 spring-cloud/spring-cloud-netflix-feign/pom.xml create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/ExampleApplication.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/client/JSONPlaceHolderClient.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/ClientConfiguration.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/CustomErrorDecoder.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/BadRequestException.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/NotFoundException.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/hystrix/JSONPlaceHolderFallback.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/model/Post.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/JSONPlaceHolderService.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/impl/JSONPlaceHolderServiceImpl.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/main/resources/application.properties create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/ExampleTestApplication.java create mode 100644 spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/NetflixFeignUnitTest.java diff --git a/spring-cloud/spring-cloud-netflix-feign/pom.xml b/spring-cloud/spring-cloud-netflix-feign/pom.xml new file mode 100644 index 0000000000..aa5ba5dbdb --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/pom.xml @@ -0,0 +1,71 @@ + + + 4.0.0 + com.baeldung.cloud + spring-cloud-netlix-feign + 0.0.1-SNAPSHOT + spring-cloud-netflix-feign + Netflix Feign project for Spring Boot + + + com.baeldung + parent-boot-1 + 0.0.1-SNAPSHOT + ../../parent-boot-1 + + + + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + + + + + org.springframework.cloud + spring-cloud-starter-feign + + + + com.netflix.feign + feign-okhttp + ${feign-ok.version} + + + + org.springframework.boot + spring-boot-starter-web + + + + org.apache.httpcomponents + httpcore + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + Camden.SR7 + 8.18.0 + + + + + diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/ExampleApplication.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/ExampleApplication.java new file mode 100644 index 0000000000..e5ed9cbecf --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/ExampleApplication.java @@ -0,0 +1,16 @@ +package com.baeldung.cloud.netflix.feign; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.netflix.feign.EnableFeignClients; + +@SpringBootApplication +@EnableFeignClients +public class ExampleApplication { + + public static void main(String[] args) { + SpringApplication.run(ExampleApplication.class, args); + } + +} + diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/client/JSONPlaceHolderClient.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/client/JSONPlaceHolderClient.java new file mode 100644 index 0000000000..80a455a4c4 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/client/JSONPlaceHolderClient.java @@ -0,0 +1,25 @@ +package com.baeldung.cloud.netflix.feign.client; + +import com.baeldung.cloud.netflix.feign.config.ClientConfiguration; +import com.baeldung.cloud.netflix.feign.hystrix.JSONPlaceHolderFallback; +import com.baeldung.cloud.netflix.feign.model.Post; +import org.springframework.cloud.netflix.feign.FeignClient; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import java.util.List; + +@FeignClient(value = "jplaceholder", + url = "https://jsonplaceholder.typicode.com/", + configuration = ClientConfiguration.class, + fallback = JSONPlaceHolderFallback.class) +public interface JSONPlaceHolderClient { + + @RequestMapping(method = RequestMethod.GET, value = "/posts") + List getPosts(); + + + @RequestMapping(method = RequestMethod.GET, value = "/posts/{postId}", produces = "application/json") + Post getPostById(@PathVariable("postId") Long postId); +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/ClientConfiguration.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/ClientConfiguration.java new file mode 100644 index 0000000000..bc211b181e --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/ClientConfiguration.java @@ -0,0 +1,38 @@ +package com.baeldung.cloud.netflix.feign.config; + +import feign.Logger; +import feign.RequestInterceptor; +import feign.codec.ErrorDecoder; +import feign.okhttp.OkHttpClient; + +import org.apache.http.entity.ContentType; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class ClientConfiguration { + + @Bean + public Logger.Level feignLoggerLevel() { + return Logger.Level.FULL; + } + + @Bean + public ErrorDecoder errorDecoder() { + return new ErrorDecoder.Default(); + } + + @Bean + public OkHttpClient client() { + return new OkHttpClient(); + } + + @Bean + public RequestInterceptor requestInterceptor() { + return requestTemplate -> { + requestTemplate.header("user", "ajeje"); + requestTemplate.header("password", "brazof"); + requestTemplate.header("Accept", ContentType.APPLICATION_JSON.getMimeType()); + }; + } +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/CustomErrorDecoder.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/CustomErrorDecoder.java new file mode 100644 index 0000000000..3e0e80f6d5 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/config/CustomErrorDecoder.java @@ -0,0 +1,21 @@ +package com.baeldung.cloud.netflix.feign.config; + +import com.baeldung.cloud.netflix.feign.exception.BadRequestException; +import com.baeldung.cloud.netflix.feign.exception.NotFoundException; +import feign.Response; +import feign.codec.ErrorDecoder; + +public class CustomErrorDecoder implements ErrorDecoder { + @Override + public Exception decode(String methodKey, Response response) { + + switch (response.status()){ + case 400: + return new BadRequestException(); + case 404: + return new NotFoundException(); + default: + return new Exception("Generic error"); + } + } +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/BadRequestException.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/BadRequestException.java new file mode 100644 index 0000000000..6a5f60f7c0 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/BadRequestException.java @@ -0,0 +1,21 @@ +package com.baeldung.cloud.netflix.feign.exception; + +public class BadRequestException extends Exception { + + public BadRequestException() { + } + + public BadRequestException(String message) { + super(message); + } + + public BadRequestException(Throwable cause) { + super(cause); + } + + @Override + public String toString() { + return "BadRequestException: "+getMessage(); + } + +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/NotFoundException.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/NotFoundException.java new file mode 100644 index 0000000000..a8d89049fd --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/exception/NotFoundException.java @@ -0,0 +1,21 @@ +package com.baeldung.cloud.netflix.feign.exception; + +public class NotFoundException extends Exception { + + public NotFoundException() { + } + + public NotFoundException(String message) { + super(message); + } + + public NotFoundException(Throwable cause) { + super(cause); + } + + @Override + public String toString() { + return "NotFoundException: "+getMessage(); + } + +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/hystrix/JSONPlaceHolderFallback.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/hystrix/JSONPlaceHolderFallback.java new file mode 100644 index 0000000000..ab1aa6bf50 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/hystrix/JSONPlaceHolderFallback.java @@ -0,0 +1,22 @@ +package com.baeldung.cloud.netflix.feign.hystrix; + +import com.baeldung.cloud.netflix.feign.client.JSONPlaceHolderClient; +import com.baeldung.cloud.netflix.feign.model.Post; +import org.springframework.stereotype.Component; + +import java.util.Collections; +import java.util.List; + +@Component +public class JSONPlaceHolderFallback implements JSONPlaceHolderClient { + + @Override + public List getPosts() { + return Collections.emptyList(); + } + + @Override + public Post getPostById(Long postId) { + return null; + } +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/model/Post.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/model/Post.java new file mode 100644 index 0000000000..73dd2bc198 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/model/Post.java @@ -0,0 +1,41 @@ +package com.baeldung.cloud.netflix.feign.model; + +public class Post { + + private String userId; + private Long id; + private String title; + private String body; + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/JSONPlaceHolderService.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/JSONPlaceHolderService.java new file mode 100644 index 0000000000..d2e174a1f0 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/JSONPlaceHolderService.java @@ -0,0 +1,12 @@ +package com.baeldung.cloud.netflix.feign.service; + +import com.baeldung.cloud.netflix.feign.model.Post; + +import java.util.List; + +public interface JSONPlaceHolderService { + + List getPosts(); + + Post getPostById(Long id); +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/impl/JSONPlaceHolderServiceImpl.java b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/impl/JSONPlaceHolderServiceImpl.java new file mode 100644 index 0000000000..0cc8d296f0 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/java/com/baeldung/cloud/netflix/feign/service/impl/JSONPlaceHolderServiceImpl.java @@ -0,0 +1,26 @@ +package com.baeldung.cloud.netflix.feign.service.impl; + +import com.baeldung.cloud.netflix.feign.client.JSONPlaceHolderClient; +import com.baeldung.cloud.netflix.feign.model.Post; +import com.baeldung.cloud.netflix.feign.service.JSONPlaceHolderService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class JSONPlaceHolderServiceImpl implements JSONPlaceHolderService { + + @Autowired + private JSONPlaceHolderClient jsonPlaceHolderClient; + + @Override + public List getPosts() { + return jsonPlaceHolderClient.getPosts(); + } + + @Override + public Post getPostById(Long id) { + return jsonPlaceHolderClient.getPostById(id); + } +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/main/resources/application.properties b/spring-cloud/spring-cloud-netflix-feign/src/main/resources/application.properties new file mode 100644 index 0000000000..5927ccb9c1 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/main/resources/application.properties @@ -0,0 +1,3 @@ +spring.application.name=netflix-feign +logging.level.com.baeldung.cloud.netflix.feign.client=DEBUG +feign.hystrix.enabled=true diff --git a/spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/ExampleTestApplication.java b/spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/ExampleTestApplication.java new file mode 100644 index 0000000000..f3c8459f87 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/ExampleTestApplication.java @@ -0,0 +1,21 @@ +package com.baeldung.cloud.netflix.feign; + +import com.baeldung.cloud.netflix.feign.config.ClientConfiguration; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +@EnableAutoConfiguration +@ContextConfiguration(classes = { ClientConfiguration.class }) +public class ExampleTestApplication { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/NetflixFeignUnitTest.java b/spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/NetflixFeignUnitTest.java new file mode 100644 index 0000000000..880948d6d1 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/src/test/java/com/baeldung/cloud/netflix/feign/NetflixFeignUnitTest.java @@ -0,0 +1,43 @@ +package com.baeldung.cloud.netflix.feign; + +import com.baeldung.cloud.netflix.feign.model.Post; +import com.baeldung.cloud.netflix.feign.service.JSONPlaceHolderService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.List; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class NetflixFeignUnitTest { + + @Autowired + private JSONPlaceHolderService jsonPlaceHolderService; + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } + + @Test + public void whenGetPosts_thenListPostSizeGreaterThanZero() { + + List posts = jsonPlaceHolderService.getPosts(); + + assertFalse(posts.isEmpty()); + } + + @Test + public void whenGetPostWithId_thenPostExist() { + + Post post = jsonPlaceHolderService.getPostById(1L); + + assertNotNull(post); + } + +} From d3744f76947a78fb5ed6595b0a6530c37bab85e0 Mon Sep 17 00:00:00 2001 From: majajoksovic Date: Fri, 2 Oct 2020 19:23:50 +0200 Subject: [PATCH 184/260] BAEL-4505 (#10119) * initial commit * fixed formatting * formatting changes * test fix --- .../application-persistent-on.properties | 10 ++++ .../persistent/FilesLocationUnitTest.java | 52 +++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 persistence-modules/spring-boot-persistence-h2/src/main/resources/application-persistent-on.properties create mode 100644 persistence-modules/spring-boot-persistence-h2/src/test/java/com/baeldung/persistent/FilesLocationUnitTest.java diff --git a/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-persistent-on.properties b/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-persistent-on.properties new file mode 100644 index 0000000000..be939ffa69 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2/src/main/resources/application-persistent-on.properties @@ -0,0 +1,10 @@ +#spring.datasource.url=jdbc:h2:file:C:/data/demodb +#spring.datasource.url=jdbc:h2:file:~/demodb +spring.datasource.url=jdbc:h2:file:./src/main/resources/db/demodb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password= +spring.h2.console.enabled=true +spring.jpa.hibernate.ddl-auto=create-drop +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect +spring.h2.console.path=/h2-console diff --git a/persistence-modules/spring-boot-persistence-h2/src/test/java/com/baeldung/persistent/FilesLocationUnitTest.java b/persistence-modules/spring-boot-persistence-h2/src/test/java/com/baeldung/persistent/FilesLocationUnitTest.java new file mode 100644 index 0000000000..63f195e88d --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2/src/test/java/com/baeldung/persistent/FilesLocationUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.persistent; + +import static org.junit.Assert.assertTrue; + +import java.io.File; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baeldung.h2db.auto.configuration.AutoConfigurationDemo; + +@ActiveProfiles("persistent-on") +@RunWith(SpringRunner.class) +@DirtiesContext(classMode = ClassMode.BEFORE_EACH_TEST_METHOD) +@SpringBootTest(classes = AutoConfigurationDemo.class) +public class FilesLocationUnitTest { + + @BeforeClass + public static void beforeClass() { + + } + + @Test(expected = Test.None.class) + public void whenApplicationStarted_thenEmbeddedDbSubfolderCreated() { + File subdirectory = new File("src/main/resources/db"); + System.out.println(subdirectory.getAbsolutePath()); + assertTrue(subdirectory.exists()); + assertTrue(subdirectory.isDirectory()); + } + + @Test(expected = Test.None.class) + public void whenApplicationStarted_thenEmbeddedDbFilesCreated() { + File dbFile = new File("src/main/resources/db/demodb.mv.db"); + System.out.println(dbFile.getAbsolutePath()); + + assertTrue(dbFile.exists()); + assertTrue(dbFile.isFile()); + } + + @AfterClass + public static void cleanUp() { + File dbFile = new File("src/main/resources/db/demodb.mv.db"); + dbFile.deleteOnExit(); + } +} From 67e2165bb6d35707a05dc18f477f342a732afec3 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Fri, 2 Oct 2020 19:26:00 +0200 Subject: [PATCH 185/260] BAEL-4658: Upgrade to Cucumber 6.8.0 (#10121) --- spring-cucumber/pom.xml | 18 +++++++++--------- .../java/com/baeldung/BaeldungController.java | 6 ++---- .../java/com/baeldung/VersionController.java | 5 ++--- .../com/baeldung/CucumberIntegrationTest.java | 6 +++--- .../com/baeldung/SpringIntegrationTest.java | 4 ++-- .../com/baeldung/StepDefsIntegrationTest.java | 12 ++++++------ 6 files changed, 24 insertions(+), 27 deletions(-) diff --git a/spring-cucumber/pom.xml b/spring-cucumber/pom.xml index 245d10e77b..a945797ee1 100644 --- a/spring-cucumber/pom.xml +++ b/spring-cucumber/pom.xml @@ -21,27 +21,27 @@ spring-boot-starter-web - info.cukes + io.cucumber cucumber-core - ${cucumber.java.version} + ${cucumber.version} test - info.cukes + io.cucumber cucumber-java - ${cucumber.java.version} + ${cucumber.version} test - info.cukes + io.cucumber cucumber-junit - ${cucumber.java.version} + ${cucumber.version} test - info.cukes + io.cucumber cucumber-spring - ${cucumber.java.version} + ${cucumber.version} test @@ -53,7 +53,7 @@ - 1.2.5 + 6.8.0 1.3.2 diff --git a/spring-cucumber/src/main/java/com/baeldung/BaeldungController.java b/spring-cucumber/src/main/java/com/baeldung/BaeldungController.java index e74e773106..713c1022c5 100644 --- a/spring-cucumber/src/main/java/com/baeldung/BaeldungController.java +++ b/spring-cucumber/src/main/java/com/baeldung/BaeldungController.java @@ -4,18 +4,16 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; -import javax.servlet.http.HttpServletResponse; - @RestController public class BaeldungController { @GetMapping("/hello") - public String sayHello(HttpServletResponse response) { + public String sayHello() { return "hello"; } @PostMapping("/baeldung") - public String sayHelloPost(HttpServletResponse response) { + public String sayHelloPost() { return "hello"; } } diff --git a/spring-cucumber/src/main/java/com/baeldung/VersionController.java b/spring-cucumber/src/main/java/com/baeldung/VersionController.java index f673f0e31f..e46ca64a01 100644 --- a/spring-cucumber/src/main/java/com/baeldung/VersionController.java +++ b/spring-cucumber/src/main/java/com/baeldung/VersionController.java @@ -1,13 +1,12 @@ package com.baeldung; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class VersionController { - @RequestMapping(method = { RequestMethod.GET }, value = { "/version" }) + @GetMapping("/version") public String getVersion() { return "1.0"; } diff --git a/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java b/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java index f48ab410ca..2077a28146 100644 --- a/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java +++ b/spring-cucumber/src/test/java/com/baeldung/CucumberIntegrationTest.java @@ -1,11 +1,11 @@ package com.baeldung; +import io.cucumber.junit.Cucumber; +import io.cucumber.junit.CucumberOptions; import org.junit.runner.RunWith; -import cucumber.api.CucumberOptions; -import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features = "src/test/resources") -public class CucumberIntegrationTest extends SpringIntegrationTest{ +public class CucumberIntegrationTest extends SpringIntegrationTest { } \ No newline at end of file diff --git a/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java b/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java index 8655a02469..7b5c4e21ff 100644 --- a/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java +++ b/spring-cucumber/src/test/java/com/baeldung/SpringIntegrationTest.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; +import io.cucumber.spring.CucumberContextConfiguration; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; @@ -13,9 +14,8 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.web.client.ResponseErrorHandler; import org.springframework.web.client.RestTemplate; -//@RunWith(SpringJUnit4ClassRunner.class) +@CucumberContextConfiguration @SpringBootTest(classes = SpringDemoApplication.class, webEnvironment = WebEnvironment.DEFINED_PORT) -@ContextConfiguration public class SpringIntegrationTest { static ResponseResults latestResponse = null; diff --git a/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java b/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java index e1b6e370c7..9611e95dcf 100644 --- a/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java +++ b/spring-cucumber/src/test/java/com/baeldung/StepDefsIntegrationTest.java @@ -1,14 +1,14 @@ package com.baeldung; +import io.cucumber.java.en.And; +import io.cucumber.java.en.Given; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; +import org.springframework.http.HttpStatus; + import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.is; -import cucumber.api.java.en.Given; -import org.springframework.http.HttpStatus; - -import cucumber.api.java.en.And; -import cucumber.api.java.en.Then; -import cucumber.api.java.en.When; public class StepDefsIntegrationTest extends SpringIntegrationTest { From be481348409fb7b5b24f36417ffb9d3818f9c6f8 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Fri, 2 Oct 2020 19:28:05 +0200 Subject: [PATCH 186/260] BAEL-4659: Upgrade Cucumber to 6.8.0 (#10115) --- testing-modules/rest-testing/pom.xml | 76 ++++++++----------- .../main/resources/karate/cucumber.feature | 10 --- .../cucumber/CucumberIntegrationTest.java | 4 +- .../rest/cucumber/StepDefinition.java | 11 +-- .../test/resources/Feature/cucumber.feature | 2 +- 5 files changed, 41 insertions(+), 62 deletions(-) delete mode 100644 testing-modules/rest-testing/src/main/resources/karate/cucumber.feature diff --git a/testing-modules/rest-testing/pom.xml b/testing-modules/rest-testing/pom.xml index 1e8a27afa5..b3966c1b6a 100644 --- a/testing-modules/rest-testing/pom.xml +++ b/testing-modules/rest-testing/pom.xml @@ -65,13 +65,13 @@ - info.cukes + io.cucumber cucumber-java ${cucumber.version} test - info.cukes + io.cucumber cucumber-junit ${cucumber.version} @@ -105,56 +105,44 @@ true - - - - maven-failsafe-plugin - ${maven-failsafe-plugin.version} - - classes - 4 - - - - - integration-test - verify - - - - - - com.github.temyers - cucumber-jvm-parallel-plugin - 5.0.0 - - - generateRunners - generate-test-sources - - generateRunners - - - - com.baeldung.rest.cucumber - - src/test/resources/Feature/ - SCENARIO - - - - - - + + + parallel + + + + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + + CucumberIntegrationTest.java + + methods + 2 + + + + + integration-test + verify + + + + + + + + + 19.0 2.9.0 - 1.2.5 + 6.8.0 2.21.0 0.6.1 diff --git a/testing-modules/rest-testing/src/main/resources/karate/cucumber.feature b/testing-modules/rest-testing/src/main/resources/karate/cucumber.feature deleted file mode 100644 index 99dd8249fe..0000000000 --- a/testing-modules/rest-testing/src/main/resources/karate/cucumber.feature +++ /dev/null @@ -1,10 +0,0 @@ -Feature: Testing a REST API - Users should be able to submit GET and POST requests to a web service, represented by WireMock - - Scenario: Data Upload to a web service - When users upload data on a project - Then the server should handle it and return a success status - - Scenario: Data retrieval from a web service - When users want to get information on the Cucumber project - Then the requested data is returned \ No newline at end of file diff --git a/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java b/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java index f80178a43d..33e2c62301 100644 --- a/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java +++ b/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/CucumberIntegrationTest.java @@ -1,8 +1,8 @@ package com.baeldung.rest.cucumber; +import io.cucumber.junit.Cucumber; +import io.cucumber.junit.CucumberOptions; import org.junit.runner.RunWith; -import cucumber.api.CucumberOptions; -import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions(features = "classpath:Feature") diff --git a/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java b/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java index 35a913ae25..f1fcb48f01 100644 --- a/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java +++ b/testing-modules/rest-testing/src/test/java/com/baeldung/rest/cucumber/StepDefinition.java @@ -20,6 +20,8 @@ import java.io.IOException; import java.io.InputStream; import java.util.Scanner; +import io.cucumber.java.en.Then; +import io.cucumber.java.en.When; import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; @@ -29,8 +31,6 @@ import org.apache.http.impl.client.HttpClients; import com.github.tomakehurst.wiremock.WireMockServer; -import cucumber.api.java.en.Then; -import cucumber.api.java.en.When; public class StepDefinition { @@ -66,7 +66,8 @@ public class StepDefinition { wireMockServer.stop(); } - @When("^users want to get information on the (.+) project$") +// @When("^users want to get information on the '(.+)' project$") + @When("users want to get information on the {string} project") public void usersGetInformationOnAProject(String projectName) throws IOException { wireMockServer.start(); @@ -86,11 +87,11 @@ public class StepDefinition { wireMockServer.stop(); } - @Then("^the server should handle it and return a success status$") + @Then("the server should handle it and return a success status") public void theServerShouldReturnASuccessStatus() { } - @Then("^the requested data is returned$") + @Then("the requested data is returned") public void theRequestedDataIsReturned() { } diff --git a/testing-modules/rest-testing/src/test/resources/Feature/cucumber.feature b/testing-modules/rest-testing/src/test/resources/Feature/cucumber.feature index 99dd8249fe..f8bbd809de 100644 --- a/testing-modules/rest-testing/src/test/resources/Feature/cucumber.feature +++ b/testing-modules/rest-testing/src/test/resources/Feature/cucumber.feature @@ -6,5 +6,5 @@ Feature: Testing a REST API Then the server should handle it and return a success status Scenario: Data retrieval from a web service - When users want to get information on the Cucumber project + When users want to get information on the 'Cucumber' project Then the requested data is returned \ No newline at end of file From d48defc3e223c176e41e6f8b7b161ac313b9db8d Mon Sep 17 00:00:00 2001 From: Umang Budhwar Date: Sat, 3 Oct 2020 08:28:12 +0530 Subject: [PATCH 187/260] BAEL-4531 (#10093) * Added code for checking if a class is abstract or not. * Renamed test name as per review comments. --- .../check/abstractclass/AbstractExample.java | 15 +++++++++++++++ .../abstractclass/AbstractExampleUnitTest.java | 16 ++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/abstractclass/AbstractExample.java create mode 100644 core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/abstractclass/AbstractExampleUnitTest.java diff --git a/core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/abstractclass/AbstractExample.java b/core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/abstractclass/AbstractExample.java new file mode 100644 index 0000000000..e8ad3bc3bd --- /dev/null +++ b/core-java-modules/core-java-reflection-2/src/main/java/com/baeldung/reflection/check/abstractclass/AbstractExample.java @@ -0,0 +1,15 @@ +package com.baeldung.reflection.check.abstractclass; + +import java.time.LocalDate; +import java.time.LocalTime; + +public abstract class AbstractExample { + + public static String getAuthorName() { + return "Umang Budhwar"; + } + + public abstract LocalDate getLocalDate(); + + public abstract LocalTime getLocalTime(); +} diff --git a/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/abstractclass/AbstractExampleUnitTest.java b/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/abstractclass/AbstractExampleUnitTest.java new file mode 100644 index 0000000000..cb5d927c23 --- /dev/null +++ b/core-java-modules/core-java-reflection-2/src/test/java/com/baeldung/reflection/check/abstractclass/AbstractExampleUnitTest.java @@ -0,0 +1,16 @@ +package com.baeldung.reflection.check.abstractclass; + +import java.lang.reflect.Modifier; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class AbstractExampleUnitTest { + + @Test + void givenAbstractClass_whenCheckModifierIsAbstract_thenTrue() throws Exception { + Class clazz = AbstractExample.class; + Assertions.assertTrue(Modifier.isAbstract(clazz.getModifiers())); + } + +} From 43ad7afa07acd43c177ac09c81befd01ed79d508 Mon Sep 17 00:00:00 2001 From: Jordan Simpson Date: Sat, 3 Oct 2020 00:42:54 -0500 Subject: [PATCH 188/260] Added code examples from the article. --- .../TransactionalDetectionTest.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java diff --git a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java new file mode 100644 index 0000000000..304704a0a6 --- /dev/null +++ b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java @@ -0,0 +1,28 @@ +package com.baeldung.transactional; + +import com.baeldung.persistence.service.transactional.PersistenceTransactionalTestConfig; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.support.TransactionSynchronizationManager; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +@ContextConfiguration(classes = PersistenceTransactionalTestConfig.class) +@RunWith(SpringJUnit4ClassRunner.class) +public class TransactionalDetectionTest { + + @Test + @Transactional + public void givenTransactional_whenCheckingForActiveTransaction_thenReceiveTrue() { + assertTrue(TransactionSynchronizationManager.isActualTransactionActive()); + } + + @Test + public void givenNoTransactional_whenCheckingForActiveTransaction_thenReceiveFalse() { + assertFalse(TransactionSynchronizationManager.isActualTransactionActive()); + } +} From 23c667077b3d8f6e4e8f74d332be25247accf17e Mon Sep 17 00:00:00 2001 From: Gerardo Roza Date: Sat, 3 Oct 2020 15:59:34 -0300 Subject: [PATCH 189/260] updated Keycloak dependencies version to 11.0.2 --- spring-boot-modules/spring-boot-keycloak/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-keycloak/pom.xml b/spring-boot-modules/spring-boot-keycloak/pom.xml index 5049cc3651..cfcdcf2c37 100644 --- a/spring-boot-modules/spring-boot-keycloak/pom.xml +++ b/spring-boot-modules/spring-boot-keycloak/pom.xml @@ -76,7 +76,7 @@ - 10.0.2 + 11.0.2 From 9735c8c093ab13f69d00edef5eac84ca27909ea2 Mon Sep 17 00:00:00 2001 From: amdegregorio Date: Sat, 3 Oct 2020 17:07:52 -0400 Subject: [PATCH 190/260] BAEL-4503 --- .../constantspatterns/Calculator.java | 37 +++++++++++++++++++ .../CalculatorConstants.java | 10 +++++ .../constantspatterns/GeometryCalculator.java | 32 ++++++++++++++++ .../calculations/MathConstants.java | 16 ++++++++ .../ConstantPatternUnitTest.java | 23 ++++++++++++ 5 files changed, 118 insertions(+) create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/Calculator.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/CalculatorConstants.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/GeometryCalculator.java create mode 100644 core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java create mode 100644 core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/Calculator.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/Calculator.java new file mode 100644 index 0000000000..78b51c1c93 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/Calculator.java @@ -0,0 +1,37 @@ +package com.baeldung.constantspatterns; + +public class Calculator { + public static final double PI = 3.14159265359; + private static final double UPPER_LIMIT = 0x1.fffffffffffffP+1023; + + public enum Operation { + ADD, SUBTRACT, DIVIDE, MULTIPLY + } + + public double operateOnTwoNumbers(double numberOne, double numberTwo, Operation operation) { + if (numberOne > UPPER_LIMIT) { + throw new IllegalArgumentException("'numberOne' is too large"); + } + if (numberTwo > UPPER_LIMIT) { + throw new IllegalArgumentException("'numberTwo' is too large"); + } + double answer = 0; + + switch (operation) { + case ADD: + answer = numberOne + numberTwo; + break; + case SUBTRACT: + answer = numberOne - numberTwo; + break; + case DIVIDE: + answer = numberOne / numberTwo; + break; + case MULTIPLY: + answer = numberOne * numberTwo; + break; + } + + return answer; + } +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/CalculatorConstants.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/CalculatorConstants.java new file mode 100644 index 0000000000..2237782b00 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/CalculatorConstants.java @@ -0,0 +1,10 @@ +package com.baeldung.constantspatterns; + +public interface CalculatorConstants { + double PI = 3.14159265359; + double UPPER_LIMIT = 0x1.fffffffffffffP+1023; + + enum Operation { + ADD, SUBTRACT, MULTIPLY, DIVIDE + }; +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/GeometryCalculator.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/GeometryCalculator.java new file mode 100644 index 0000000000..47a0dc5233 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/GeometryCalculator.java @@ -0,0 +1,32 @@ +package com.baeldung.constantspatterns; + +public class GeometryCalculator implements CalculatorConstants { + public static final double UPPER_LIMIT = 100000000000000000000.0; + + public double operateOnTwoNumbers(double numberOne, double numberTwo, Operation operation) { + if (numberOne > UPPER_LIMIT) { + throw new IllegalArgumentException("'numberOne' is too large"); + } + if (numberTwo > UPPER_LIMIT) { + throw new IllegalArgumentException("'numberTwo' is too large"); + } + double answer = 0; + + switch (operation) { + case ADD: + answer = numberOne + numberTwo; + break; + case SUBTRACT: + answer = numberOne - numberTwo; + break; + case DIVIDE: + answer = numberOne / numberTwo; + break; + case MULTIPLY: + answer = numberOne * numberTwo; + break; + } + + return answer; + } +} diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java new file mode 100644 index 0000000000..a7ecf7aabe --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java @@ -0,0 +1,16 @@ +package com.baeldung.constantspatterns.calculations; + +public final class MathConstants { + public static final double PI = 3.14159265359; + public static final double GOLDEN_RATIO = 1.6180; + public static final double GRAVITATIONAL_ACCELERATION = 9.8; + public static final double EULERS_NUMBER = 2.7182818284590452353602874713527; + + public enum Operation { + ADD, SUBTRACT, DIVIDE, MULTIPLY + } + + private MathConstants() { + + } +} diff --git a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java new file mode 100644 index 0000000000..39cb8f82f9 --- /dev/null +++ b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.constantspatterns; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.Test; + +public class ConstantPatternUnitTest { + @Test + public void givenTwoNumbersAndAdd_whenCallingCalculatorOperatOneTwoNumbers_correctAnswerReturned() { + Calculator calculator = new Calculator(); + double expected = 4; + double answer = calculator.operateOnTwoNumbers(2, 2, Calculator.Operation.ADD); + assertEquals(expected, answer); + } + + @Test + public void givenTwoNumbersAndAdd_whenCallingGeometryCalculatorOperatOneTwoNumbers_correctAnswerReturned() { + GeometryCalculator calculator = new GeometryCalculator(); + double expected = 4; + double answer = calculator.operateOnTwoNumbers(2, 2, GeometryCalculator.Operation.ADD); + assertEquals(expected, answer); + } +} From 969cedfecd6801d2b97a507664802ef0862e6c8a Mon Sep 17 00:00:00 2001 From: Adrian Maghear Date: Sat, 3 Oct 2020 21:28:40 +0200 Subject: [PATCH 191/260] [BAEL-3600] setup initial mantis job --- netflix-modules/mantis/pom.xml | 64 +++++++++++++++++++ .../netflix/mantis/MantisApplication.java | 24 +++++++ .../netflix/mantis/job/LogAggregationJob.java | 30 +++++++++ .../netflix/mantis/job/LogCollectingJob.java | 31 +++++++++ .../netflix/mantis/model/LogAggregate.java | 27 ++++++++ .../netflix/mantis/model/LogEvent.java | 36 +++++++++++ .../baeldung/netflix/mantis/sink/LogSink.java | 37 +++++++++++ .../mantis/source/RandomLogSource.java | 46 +++++++++++++ .../netflix/mantis/stage/CountLogStage.java | 58 +++++++++++++++++ .../netflix/mantis/stage/GroupLogStage.java | 25 ++++++++ .../mantis/stage/TransformLogStage.java | 24 +++++++ netflix-modules/pom.xml | 1 + 12 files changed, 403 insertions(+) create mode 100644 netflix-modules/mantis/pom.xml create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/sink/LogSink.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/source/RandomLogSource.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/CountLogStage.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/GroupLogStage.java create mode 100644 netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/TransformLogStage.java diff --git a/netflix-modules/mantis/pom.xml b/netflix-modules/mantis/pom.xml new file mode 100644 index 0000000000..48151c142f --- /dev/null +++ b/netflix-modules/mantis/pom.xml @@ -0,0 +1,64 @@ + + + 4.0.0 + mantis + Mantis + jar + Sample project for Netflix Mantis + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + + org.springframework.boot + spring-boot-starter + 2.1.3.RELEASE + + + + io.mantisrx + mantis-runtime + 1.2.63 + + + org.slf4j + slf4j-log4j12 + + + + + + com.fasterxml.jackson.core + jackson-databind + 2.10.2 + + + + net.andreinc.mockneat + mockneat + 0.3.8 + + + + org.projectlombok + lombok + 1.18.12 + + + + + + + SpringLibReleaseRepo + https://repo.spring.io/libs-release/ + + + + diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java new file mode 100644 index 0000000000..ad2b7f9aed --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java @@ -0,0 +1,24 @@ +package com.baeldung.netflix.mantis; + +import com.baeldung.netflix.mantis.job.LogAggregationJob; +import com.baeldung.netflix.mantis.job.LogCollectingJob; +import io.mantisrx.runtime.executor.LocalJobExecutorNetworked; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@Slf4j +@SpringBootApplication +public class MantisApplication implements CommandLineRunner { + + public static void main(String[] args) { + SpringApplication.run(MantisApplication.class, args); + } + + @Override + public void run(String... args) { + LocalJobExecutorNetworked.execute(new LogAggregationJob().getJobInstance()); + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java new file mode 100644 index 0000000000..229d11d39d --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java @@ -0,0 +1,30 @@ +package com.baeldung.netflix.mantis.job; + +import com.baeldung.netflix.mantis.model.LogAggregate; +import com.baeldung.netflix.mantis.source.RandomLogSource; +import com.baeldung.netflix.mantis.stage.CountLogStage; +import com.baeldung.netflix.mantis.stage.GroupLogStage; +import com.baeldung.netflix.mantis.stage.TransformLogStage; +import io.mantisrx.runtime.Job; +import io.mantisrx.runtime.MantisJob; +import io.mantisrx.runtime.MantisJobProvider; +import io.mantisrx.runtime.Metadata; +import io.mantisrx.runtime.sink.Sinks; + +public class LogAggregationJob extends MantisJobProvider { + + @Override + public Job getJobInstance() { + + return MantisJob + .source(new RandomLogSource()) + .stage(new TransformLogStage(), TransformLogStage.stageConfig()) + .stage(new GroupLogStage(), GroupLogStage.config()) + .stage(new CountLogStage(), CountLogStage.config()) + .sink(Sinks.eagerSubscribe(Sinks.sse(LogAggregate::toJsonString))) + .metadata(new Metadata.Builder().build()) + .create(); + + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java new file mode 100644 index 0000000000..9bb6ae7f6d --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java @@ -0,0 +1,31 @@ +package com.baeldung.netflix.mantis.job; + +import com.baeldung.netflix.mantis.model.LogEvent; +import com.baeldung.netflix.mantis.sink.LogSink; +import com.baeldung.netflix.mantis.source.RandomLogSource; +import com.baeldung.netflix.mantis.stage.TransformLogStage; +import io.mantisrx.runtime.Job; +import io.mantisrx.runtime.MantisJob; +import io.mantisrx.runtime.MantisJobProvider; +import io.mantisrx.runtime.Metadata; +import io.mantisrx.runtime.ScalarToScalar; +import io.mantisrx.runtime.sink.Sinks; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class LogCollectingJob extends MantisJobProvider { + + @Override + public Job getJobInstance() { + + return MantisJob + .source(new RandomLogSource()) + .stage(new TransformLogStage(), new ScalarToScalar.Config<>()) +// .sink(Sinks.eagerSubscribe(Sinks.sse(LogEvent::toJsonString))) + .sink(new LogSink()) + .metadata(new Metadata.Builder().build()) + .create(); + + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java new file mode 100644 index 0000000000..a9f1818b9a --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java @@ -0,0 +1,27 @@ +package com.baeldung.netflix.mantis.model; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.mantisrx.runtime.codec.JsonType; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class LogAggregate implements JsonType { + + private static final ObjectMapper mapper = new ObjectMapper(); + + private final Integer count; + private final String level; + + public String toJsonString() { + try { + return mapper.writeValueAsString(this); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java new file mode 100644 index 0000000000..36665b0264 --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java @@ -0,0 +1,36 @@ +package com.baeldung.netflix.mantis.model; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.mantisrx.runtime.codec.JsonType; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@NoArgsConstructor +public class LogEvent implements JsonType { + + private static final ObjectMapper mapper = new ObjectMapper(); + + private Long index; + private String level; + private String message; + + public LogEvent(String[] parts) { + this.index = Long.valueOf(parts[0]); + this.level = parts[1]; + this.message = parts[2]; + } + + public String toJsonString() { + try { + return mapper.writeValueAsString(this); + } catch (JsonProcessingException e) { + e.printStackTrace(); + return null; + } + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/sink/LogSink.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/sink/LogSink.java new file mode 100644 index 0000000000..ae2177bf87 --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/sink/LogSink.java @@ -0,0 +1,37 @@ +package com.baeldung.netflix.mantis.sink; + +import com.baeldung.netflix.mantis.model.LogEvent; +import io.mantisrx.runtime.Context; +import io.mantisrx.runtime.PortRequest; +import io.mantisrx.runtime.sink.SelfDocumentingSink; +import io.mantisrx.runtime.sink.ServerSentEventsSink; +import io.mantisrx.runtime.sink.Sink; +import io.mantisrx.runtime.sink.predicate.Predicate; +import rx.Observable; + +public class LogSink implements Sink { + + @Override + public void call(Context context, PortRequest portRequest, Observable logEventObservable) { + + SelfDocumentingSink sink = new ServerSentEventsSink.Builder() + .withEncoder(LogEvent::toJsonString) + .withPredicate(filterByLogMessage()) + .build(); + + logEventObservable.subscribe(); + + sink.call(context, portRequest, logEventObservable); + } + + private Predicate filterByLogMessage() { + return new Predicate<>("filter by message", + parameters -> { + if (parameters != null && parameters.containsKey("filter")) { + return logEvent -> logEvent.getMessage().contains(parameters.get("filter").get(0)); + } + return logEvent -> true; + }); + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/source/RandomLogSource.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/source/RandomLogSource.java new file mode 100644 index 0000000000..fe607d9866 --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/source/RandomLogSource.java @@ -0,0 +1,46 @@ +package com.baeldung.netflix.mantis.source; + +import io.mantisrx.runtime.Context; +import io.mantisrx.runtime.source.Index; +import io.mantisrx.runtime.source.Source; +import lombok.extern.slf4j.Slf4j; +import net.andreinc.mockneat.MockNeat; +import rx.Observable; + +import java.util.Date; +import java.util.concurrent.TimeUnit; + +@Slf4j +public class RandomLogSource implements Source { + + private MockNeat mockDataGenerator; + + @Override + public void init(Context context, Index index) { + mockDataGenerator = MockNeat.threadLocal(); + } + + @Override + public Observable> call(Context context, Index index) { + return Observable.just( + Observable + .interval(250, TimeUnit.MILLISECONDS) + .map(this::createRandomLogEvent)); + } + + private String createRandomLogEvent(Long tick) { + String level = mockDataGenerator.probabilites(String.class) + .add(0.5, "INFO") + .add(0.3, "WARN") + .add(0.2, "ERROR") + .get(); + + String message = mockDataGenerator.probabilites(String.class) + .add(0.5, "login attempt") + .add(0.5, "user created") + .get(); + + return tick + "#" + level + "#" + message; + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/CountLogStage.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/CountLogStage.java new file mode 100644 index 0000000000..5f02d783d0 --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/CountLogStage.java @@ -0,0 +1,58 @@ +package com.baeldung.netflix.mantis.stage; + +import com.baeldung.netflix.mantis.model.LogAggregate; +import com.baeldung.netflix.mantis.model.LogEvent; +import io.mantisrx.common.MantisGroup; +import io.mantisrx.runtime.Context; +import io.mantisrx.runtime.GroupToScalar; +import io.mantisrx.runtime.codec.JacksonCodecs; +import io.mantisrx.runtime.computation.GroupToScalarComputation; +import io.mantisrx.runtime.parameter.ParameterDefinition; +import io.mantisrx.runtime.parameter.type.IntParameter; +import io.mantisrx.runtime.parameter.validator.Validators; +import rx.Observable; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +public class CountLogStage implements GroupToScalarComputation { + + private int duration; + + @Override + public void init(Context context) { + duration = (int)context.getParameters().get("LogAggregationDuration", 1000); + } + + @Override + public Observable call(Context context, Observable> mantisGroup) { + return mantisGroup + .window(duration, TimeUnit.MILLISECONDS) + .flatMap(o -> o.groupBy(MantisGroup::getKeyValue) + .flatMap(group -> group.reduce(0, (count, value) -> count = count + 1) + .map((count) -> new LogAggregate(count, group.getKey())) + )); + } + + public static GroupToScalar.Config config(){ + return new GroupToScalar.Config() + .description("sum events for a log level") + .codec(JacksonCodecs.pojo(LogAggregate.class)) + .withParameters(getParameters()); + } + + public static List> getParameters() { + List> params = new ArrayList<>(); + + params.add(new IntParameter() + .name("LogAggregationDuration") + .description("window size for aggregation in milliseconds") + .validator(Validators.range(100, 10000)) + .defaultValue(5000) + .build()) ; + + return params; + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/GroupLogStage.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/GroupLogStage.java new file mode 100644 index 0000000000..f21c4aba7d --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/GroupLogStage.java @@ -0,0 +1,25 @@ +package com.baeldung.netflix.mantis.stage; + +import com.baeldung.netflix.mantis.model.LogEvent; +import io.mantisrx.common.MantisGroup; +import io.mantisrx.runtime.Context; +import io.mantisrx.runtime.ScalarToGroup; +import io.mantisrx.runtime.codec.JacksonCodecs; +import io.mantisrx.runtime.computation.ToGroupComputation; +import rx.Observable; + +public class GroupLogStage implements ToGroupComputation { + + @Override + public Observable> call(Context context, Observable logEvent) { + return logEvent.map(log -> new MantisGroup<>(log.getLevel(), log)); + } + + public static ScalarToGroup.Config config(){ + return new ScalarToGroup.Config() + .description("Group event data by level") + .codec(JacksonCodecs.pojo(LogEvent.class)) + .concurrentInput(); + } + +} diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/TransformLogStage.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/TransformLogStage.java new file mode 100644 index 0000000000..33e6567d13 --- /dev/null +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/stage/TransformLogStage.java @@ -0,0 +1,24 @@ +package com.baeldung.netflix.mantis.stage; + +import com.baeldung.netflix.mantis.model.LogEvent; +import io.mantisrx.runtime.Context; +import io.mantisrx.runtime.ScalarToScalar; +import io.mantisrx.runtime.codec.JacksonCodecs; +import io.mantisrx.runtime.computation.ScalarComputation; +import rx.Observable; + +public class TransformLogStage implements ScalarComputation { + + @Override + public Observable call(Context context, Observable logEntry) { + return logEntry + .map(log -> log.split("#")) + .filter(parts -> parts.length == 3) + .map(LogEvent::new); + } + + public static ScalarToScalar.Config stageConfig() { + return new ScalarToScalar.Config() + .codec(JacksonCodecs.pojo(LogEvent.class)); + } +} diff --git a/netflix-modules/pom.xml b/netflix-modules/pom.xml index 9ed22498d8..538126fb34 100644 --- a/netflix-modules/pom.xml +++ b/netflix-modules/pom.xml @@ -15,6 +15,7 @@ genie + mantis \ No newline at end of file From 795bcbe2b78213abcda781536e7d9a3a0b7d8ece Mon Sep 17 00:00:00 2001 From: Adrian Maghear Date: Sun, 4 Oct 2020 12:53:41 +0200 Subject: [PATCH 192/260] [BAEL-3600] small fixes --- .../java/com/baeldung/netflix/mantis/MantisApplication.java | 1 - .../java/com/baeldung/netflix/mantis/job/LogCollectingJob.java | 2 -- .../java/com/baeldung/netflix/mantis/model/LogAggregate.java | 1 - .../main/java/com/baeldung/netflix/mantis/model/LogEvent.java | 1 - 4 files changed, 5 deletions(-) diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java index ad2b7f9aed..d5ffe977c3 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/MantisApplication.java @@ -1,7 +1,6 @@ package com.baeldung.netflix.mantis; import com.baeldung.netflix.mantis.job.LogAggregationJob; -import com.baeldung.netflix.mantis.job.LogCollectingJob; import io.mantisrx.runtime.executor.LocalJobExecutorNetworked; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java index 9bb6ae7f6d..492f30c43a 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java @@ -9,7 +9,6 @@ import io.mantisrx.runtime.MantisJob; import io.mantisrx.runtime.MantisJobProvider; import io.mantisrx.runtime.Metadata; import io.mantisrx.runtime.ScalarToScalar; -import io.mantisrx.runtime.sink.Sinks; import lombok.extern.slf4j.Slf4j; @Slf4j @@ -21,7 +20,6 @@ public class LogCollectingJob extends MantisJobProvider { return MantisJob .source(new RandomLogSource()) .stage(new TransformLogStage(), new ScalarToScalar.Config<>()) -// .sink(Sinks.eagerSubscribe(Sinks.sse(LogEvent::toJsonString))) .sink(new LogSink()) .metadata(new Metadata.Builder().build()) .create(); diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java index a9f1818b9a..0eeb7ea086 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java @@ -19,7 +19,6 @@ public class LogAggregate implements JsonType { try { return mapper.writeValueAsString(this); } catch (JsonProcessingException e) { - e.printStackTrace(); return null; } } diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java index 36665b0264..a48dfcd5dd 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogEvent.java @@ -28,7 +28,6 @@ public class LogEvent implements JsonType { try { return mapper.writeValueAsString(this); } catch (JsonProcessingException e) { - e.printStackTrace(); return null; } } From 14593ca02a9a316657a929c1cda6cf664d4beab8 Mon Sep 17 00:00:00 2001 From: Anirban Chatterjee Date: Sun, 4 Oct 2020 12:55:22 +0200 Subject: [PATCH 193/260] Refined bean methods --- .../EmployeeApplication.java | 9 +++++---- .../componentscanautoconfigure/doctor/Doctor.java | 7 ------- .../employee/SeniorEmployee.java | 2 +- .../healthcare/Doctor.java | 9 +++++++++ .../healthcare/Hospital.java | 13 +++++++++++++ 5 files changed, 28 insertions(+), 12 deletions(-) delete mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Doctor.java create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Hospital.java diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java index d429b0cdc9..578479a81c 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java @@ -8,18 +8,19 @@ import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; -@Configuration -@ComponentScan(basePackages = {"com.baeldung.annotations.componentscanautoconfigure.doctor", "com.baeldung.annotations.componentscanautoconfigure.employee"}, +//@Configuration +@ComponentScan(basePackages = {"com.baeldung.annotations.componentscanautoconfigure.healthcare", "com.baeldung.annotations.componentscanautoconfigure.employee"}, basePackageClasses = Teacher.class) -@EnableAutoConfiguration(exclude={JdbcTemplateAutoConfiguration.class}) +@EnableAutoConfiguration(exclude = {JdbcTemplateAutoConfiguration.class}) //@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration"}) public class EmployeeApplication { public static void main(String[] args) { ApplicationContext context = SpringApplication.run(EmployeeApplication.class, args); - System.out.println("Configures Doctor: " + context.containsBeanDefinition("doctor")); System.out.println("Configures Employee: " + context.containsBeanDefinition("employee")); System.out.println("Configures Senior Employee: " + context.containsBeanDefinition("seniorEmployee")); + System.out.println("Configures Doctor: " + context.containsBeanDefinition("doctor")); + System.out.println("Configures Hospital: " + context.containsBeanDefinition("hospital")); System.out.println("Configures Student: " + context.containsBeanDefinition("student")); System.out.println("Configures Teacher: " + context.containsBeanDefinition("teacher")); } diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java deleted file mode 100644 index 40bb68259a..0000000000 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/doctor/Doctor.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.baeldung.annotations.componentscanautoconfigure.doctor; - -import org.springframework.stereotype.Component; - -@Component("doctor") -public class Doctor { -} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java index fc02a17df6..ef75b4af0a 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java @@ -2,6 +2,6 @@ package com.baeldung.annotations.componentscanautoconfigure.employee; import org.springframework.stereotype.Component; -@Component("seniorEmployee") +@Component public class SeniorEmployee { } diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Doctor.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Doctor.java new file mode 100644 index 0000000000..7e7e6cb03b --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Doctor.java @@ -0,0 +1,9 @@ +package com.baeldung.annotations.componentscanautoconfigure.healthcare; + +public class Doctor { + + @Override + public String toString() { + return "Doctor" + this.hashCode(); + } +} diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Hospital.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Hospital.java new file mode 100644 index 0000000000..0711544060 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/healthcare/Hospital.java @@ -0,0 +1,13 @@ +package com.baeldung.annotations.componentscanautoconfigure.healthcare; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class Hospital { + + @Bean("doctor") + public Doctor getDoctor() { + return new Doctor(); + } +} From b63aad504835aced570714e85aedfb45c1d5a49b Mon Sep 17 00:00:00 2001 From: Benjamin Caure Date: Mon, 5 Oct 2020 09:50:54 +0200 Subject: [PATCH 194/260] BAEL-4436 : move template dir to main/resources (#10100) + configure location from application.properties --- .../configuration/EmailConfiguration.java | 93 +++++++++++++------ .../spring/mail/EmailServiceImpl.java | 2 +- .../src/main/resources/application.properties | 14 ++- .../mail-templates}/template-freemarker.ftl | 0 .../mail-templates}/template-thymeleaf.html | 0 5 files changed, 78 insertions(+), 31 deletions(-) rename spring-mvc-basics-2/src/main/{webapp/WEB-INF/views/mail => resources/mail-templates}/template-freemarker.ftl (100%) rename spring-mvc-basics-2/src/main/{webapp/WEB-INF/views/mail => resources/mail-templates}/template-thymeleaf.html (100%) diff --git a/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java b/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java index 4bd692f609..86a7f1162c 100644 --- a/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java +++ b/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java @@ -1,37 +1,61 @@ package com.baeldung.spring.configuration; +import freemarker.cache.ClassTemplateLoader; +import freemarker.cache.TemplateLoader; +import freemarker.template.Configuration; import java.util.Properties; - +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.mail.javamail.JavaMailSenderImpl; import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer; -import org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver; import org.thymeleaf.spring5.SpringTemplateEngine; -import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver; +import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver; +import org.thymeleaf.templateresolver.ITemplateResolver; -@Configuration @ComponentScan(basePackages = { "com.baeldung.spring.mail" }) +@PropertySource(value={"classpath:application.properties"}) public class EmailConfiguration { + + @Value("${spring.mail.host}") + private String mailServerHost; + + @Value("${spring.mail.port}") + private Integer mailServerPort; + + @Value("${spring.mail.username}") + private String mailServerUsername; + + @Value("${spring.mail.password}") + private String mailServerPassword; + + @Value("${spring.mail.properties.mail.smtp.auth}") + private String mailServerAuth; + + @Value("${spring.mail.properties.mail.smtp.starttls.enable}") + private String mailServerStartTls; + + @Value("${spring.mail.templates.path}") + private String mailTemplatesPath; @Bean public JavaMailSender getJavaMailSender() { JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); - mailSender.setHost("smtp.gmail.com"); - mailSender.setPort(587); + mailSender.setHost(mailServerHost); + mailSender.setPort(mailServerPort); - mailSender.setUsername("my.gmail@gmail.com"); - mailSender.setPassword("password"); + mailSender.setUsername(mailServerUsername); + mailSender.setPassword(mailServerPassword); Properties props = mailSender.getJavaMailProperties(); props.put("mail.transport.protocol", "smtp"); - props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.starttls.enable", "false"); + props.put("mail.smtp.auth", mailServerAuth); + props.put("mail.smtp.starttls.enable", mailServerStartTls); props.put("mail.debug", "true"); return mailSender; @@ -45,39 +69,52 @@ public class EmailConfiguration { } @Bean - public SpringTemplateEngine thymeleafTemplateEngine() { + public SpringTemplateEngine thymeleafTemplateEngine(ITemplateResolver templateResolver) { SpringTemplateEngine templateEngine = new SpringTemplateEngine(); - templateEngine.setTemplateResolver(thymeleafTemplateResolver()); + templateEngine.setTemplateResolver(templateResolver); templateEngine.setTemplateEngineMessageSource(emailMessageSource()); return templateEngine; } @Bean - public SpringResourceTemplateResolver thymeleafTemplateResolver() { - SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); - templateResolver.setPrefix("/WEB-INF/views/mail/"); + public ITemplateResolver thymeleafClassLoaderTemplateResolver() { + ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver(); + templateResolver.setPrefix(mailTemplatesPath + "/"); templateResolver.setSuffix(".html"); templateResolver.setTemplateMode("HTML"); templateResolver.setCharacterEncoding("UTF-8"); return templateResolver; } + +// @Bean +// public ITemplateResolver thymeleafFilesystemTemplateResolver() { +// FileTemplateResolver templateResolver = new FileTemplateResolver(); +// templateResolver.setPrefix(mailTemplatesPath + "/"); +// templateResolver.setSuffix(".html"); +// templateResolver.setTemplateMode("HTML"); +// templateResolver.setCharacterEncoding("UTF-8"); +// return templateResolver; +// } @Bean - public FreeMarkerConfigurer freemarkerConfig() { - FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); - freeMarkerConfigurer.setTemplateLoaderPath("/WEB-INF/views/mail"); + public FreeMarkerConfigurer freemarkerClassLoaderConfig() { + Configuration configuration = new Configuration(Configuration.VERSION_2_3_27); + TemplateLoader templateLoader = new ClassTemplateLoader(this.getClass(), "/" + mailTemplatesPath); + configuration.setTemplateLoader(templateLoader); + FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); + freeMarkerConfigurer.setConfiguration(configuration); return freeMarkerConfigurer; } - @Bean - public FreeMarkerViewResolver freemarkerViewResolver() { - FreeMarkerViewResolver resolver = new FreeMarkerViewResolver(); - resolver.setCache(true); - resolver.setPrefix(""); - resolver.setSuffix(".ftl"); - return resolver; - } - +// @Bean +// public FreeMarkerConfigurer freemarkerFilesystemConfig() throws IOException { +// Configuration configuration = new Configuration(Configuration.VERSION_2_3_27); +// TemplateLoader templateLoader = new FileTemplateLoader(new File(mailTemplatesPath)); +// configuration.setTemplateLoader(templateLoader); +// FreeMarkerConfigurer freeMarkerConfigurer = new FreeMarkerConfigurer(); +// freeMarkerConfigurer.setConfiguration(configuration); +// return freeMarkerConfigurer; +// } @Bean public ResourceBundleMessageSource emailMessageSource() { diff --git a/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java b/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java index 1eb7a5f8b4..a0c8907a87 100644 --- a/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java +++ b/spring-mvc-basics-2/src/main/java/com/baeldung/spring/mail/EmailServiceImpl.java @@ -112,7 +112,7 @@ public class EmailServiceImpl implements EmailService { String to, String subject, Map templateModel) throws IOException, TemplateException, MessagingException { - Template freemarkerTemplate = freemarkerConfigurer.createConfiguration().getTemplate("template-freemarker.ftl"); + Template freemarkerTemplate = freemarkerConfigurer.getConfiguration().getTemplate("template-freemarker.ftl"); String htmlBody = FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerTemplate, templateModel); sendHtmlMessage(to, subject, htmlBody); diff --git a/spring-mvc-basics-2/src/main/resources/application.properties b/spring-mvc-basics-2/src/main/resources/application.properties index 9a804c07d8..7ca8d33d5c 100644 --- a/spring-mvc-basics-2/src/main/resources/application.properties +++ b/spring-mvc-basics-2/src/main/resources/application.properties @@ -6,7 +6,7 @@ spring.mail.port=587 spring.mail.username=username spring.mail.password=password spring.mail.properties.mail.smtp.auth=true -spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.properties.mail.smtp.starttls.enable=false # Amazon SES SMTP #spring.mail.host=email-smtp.us-west-2.amazonaws.com @@ -19,4 +19,14 @@ spring.mail.properties.mail.smtp.starttls.enable=true #spring.mail.properties.mail.smtp.starttls.required=true # path to attachment file -attachment.invoice=path_to_file \ No newline at end of file +attachment.invoice=path_to_file + + +# +# Mail templates +# + +# Templates directory inside main/resources or absolute filesystem path +spring.mail.templates.path=mail-templates +#spring.mail.templates.path=/path/to/templates + diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/views/mail/template-freemarker.ftl b/spring-mvc-basics-2/src/main/resources/mail-templates/template-freemarker.ftl similarity index 100% rename from spring-mvc-basics-2/src/main/webapp/WEB-INF/views/mail/template-freemarker.ftl rename to spring-mvc-basics-2/src/main/resources/mail-templates/template-freemarker.ftl diff --git a/spring-mvc-basics-2/src/main/webapp/WEB-INF/views/mail/template-thymeleaf.html b/spring-mvc-basics-2/src/main/resources/mail-templates/template-thymeleaf.html similarity index 100% rename from spring-mvc-basics-2/src/main/webapp/WEB-INF/views/mail/template-thymeleaf.html rename to spring-mvc-basics-2/src/main/resources/mail-templates/template-thymeleaf.html From 2d128104d4c6463d7e1481e3faec441ac4474912 Mon Sep 17 00:00:00 2001 From: rdevarakonda Date: Mon, 5 Oct 2020 18:45:51 +0100 Subject: [PATCH 195/260] KTLN-153 | Examples for article + Upgrade Kotlin version to 1.4.0 (#10108) * KTLN-153 | Examples for article + Upgrade Kotlin version to 1.4.0 * KTLN-153 | UNDO Upgrade to Kotlin 1.4.0 * KTLN-153 | Update examples to match the article edits * KTLN-153 | Update examples to match the article edits - 2 Co-authored-by: tpurdeva --- .../baeldung/arguments/DefaultArguments.kt | 37 +++++++++++++++++++ .../com/baeldung/arguments/NamedArguments.kt | 28 ++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/DefaultArguments.kt create mode 100644 core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/NamedArguments.kt diff --git a/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/DefaultArguments.kt b/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/DefaultArguments.kt new file mode 100644 index 0000000000..691b3475b4 --- /dev/null +++ b/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/DefaultArguments.kt @@ -0,0 +1,37 @@ +package com.baeldung.arguments + +fun main() { + + // Skip both the connectTimeout and enableRetry arguments + connect("http://www.baeldung.com") + + // Skip only the enableRetry argument: + connect("http://www.baeldung.com", 5000) + + // Skip only the middle argument connectTimeout + // connect("http://www.baeldung.com", false) // This results in a compiler error + + // Because we skipped the connectTimeout argument, we must pass the enableRetry as a named argument + connect("http://www.baeldung.com", enableRetry = false) + + // Overriding Functions and Default Arguments + val realConnector = RealConnector() + realConnector.connect("www.baeldung.com") + realConnector.connect() +} + +fun connect(url: String, connectTimeout: Int = 1000, enableRetry: Boolean = true) { + println("The parameters are url = $url, connectTimeout = $connectTimeout, enableRetry = $enableRetry") +} + +open class AbstractConnector { + open fun connect(url: String = "localhost") { + // function implementation + } +} + +class RealConnector : AbstractConnector() { + override fun connect(url: String) { + println("The parameter is url = $url") + } +} \ No newline at end of file diff --git a/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/NamedArguments.kt b/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/NamedArguments.kt new file mode 100644 index 0000000000..0cbf6f158a --- /dev/null +++ b/core-kotlin-modules/core-kotlin/src/main/kotlin/com/baeldung/arguments/NamedArguments.kt @@ -0,0 +1,28 @@ +package com.baeldung.arguments + +fun main() { + resizePane(newSize = 10, forceResize = true, noAnimation = false) + + // Swap the order of last two named arguments + resizePane(newSize = 11, noAnimation = false, forceResize = true) + + // Named arguments can be passed in any order + resizePane(forceResize = true, newSize = 12, noAnimation = false) + + // Mixing Named and Positional Arguments + // Kotlin 1.3 would allow us to name only the arguments after the positional ones + resizePane(20, true, noAnimation = false) + + // Using a positional argument in the middle of named arguments (supported from Kotlin 1.4.0) + // resizePane(newSize = 20, true, noAnimation = false) + + // Only the last argument as a positional argument (supported from Kotlin 1.4.0) + // resizePane(newSize = 30, forceResize = true, false) + + // Use a named argument in the middle of positional arguments (supported from Kotlin 1.4.0) + // resizePane(40, forceResize = true, false) +} + +fun resizePane(newSize: Int, forceResize: Boolean, noAnimation: Boolean) { + println("The parameters are newSize = $newSize, forceResize = $forceResize, noAnimation = $noAnimation") +} \ No newline at end of file From 90382576f6aeac397a968e28b167e6cdd1bda81b Mon Sep 17 00:00:00 2001 From: kwoyke Date: Tue, 6 Oct 2020 08:08:09 +0200 Subject: [PATCH 196/260] BAEL-4661: Add an example of creating a file using FileOutputStream (#10131) --- .../java/com/baeldung/createfile/CreateFileUnitTest.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/createfile/CreateFileUnitTest.java b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/createfile/CreateFileUnitTest.java index f3cdb22f4d..f26a1ab3ad 100644 --- a/core-java-modules/core-java-io-3/src/test/java/com/baeldung/createfile/CreateFileUnitTest.java +++ b/core-java-modules/core-java-io-3/src/test/java/com/baeldung/createfile/CreateFileUnitTest.java @@ -6,6 +6,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -37,6 +38,12 @@ public class CreateFileUnitTest { assertTrue(success); } + @Test + void givenUsingFileOutputStream_whenCreatingFile_thenCorrect() throws IOException { + try(FileOutputStream fileOutputStream = new FileOutputStream(FILE_NAME)){ + } + } + @Test public void givenUsingGuava_whenCreatingFile_thenCorrect() throws IOException { com.google.common.io.Files.touch(new File(FILE_NAME)); From 542c52081bea594deac649f2925dc30099e2394c Mon Sep 17 00:00:00 2001 From: Philippe Date: Tue, 6 Oct 2020 17:03:49 -0300 Subject: [PATCH 197/260] [BAEL-4203] Rename jni module to java-native --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index ac1a16a728..cba7e33b03 100644 --- a/pom.xml +++ b/pom.xml @@ -977,7 +977,7 @@ jjwt jmeter jmh - jni + java-native jooby jsf json From bd53673e2b175f9450829b20e5e81394ab7b0ac3 Mon Sep 17 00:00:00 2001 From: Anirban Chatterjee Date: Tue, 6 Oct 2020 22:33:24 +0200 Subject: [PATCH 198/260] Added unit test --- .../EmployeeApplication.java | 8 +++---- .../EmployeeApplicationTest.java | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+), 5 deletions(-) rename spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/{componentscanautoconfigure => }/EmployeeApplication.java (86%) create mode 100644 spring-boot-modules/spring-boot-annotations/src/main/test/com.baeldung.annotations/EmployeeApplicationTest.java diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java similarity index 86% rename from spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java rename to spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java index 578479a81c..263df30e16 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/EmployeeApplication.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.annotations.componentscanautoconfigure; +package com.baeldung.annotations; import com.baeldung.annotations.componentscanautoconfigure.teacher.Teacher; import org.springframework.boot.SpringApplication; @@ -6,15 +6,13 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -//@Configuration -@ComponentScan(basePackages = {"com.baeldung.annotations.componentscanautoconfigure.healthcare", "com.baeldung.annotations.componentscanautoconfigure.employee"}, +@ComponentScan(basePackages = {"com.baeldung.annotations.componentscanautoconfigure.healthcare", + "com.baeldung.annotations.componentscanautoconfigure.employee"}, basePackageClasses = Teacher.class) @EnableAutoConfiguration(exclude = {JdbcTemplateAutoConfiguration.class}) //@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration"}) public class EmployeeApplication { - public static void main(String[] args) { ApplicationContext context = SpringApplication.run(EmployeeApplication.class, args); System.out.println("Configures Employee: " + context.containsBeanDefinition("employee")); diff --git a/spring-boot-modules/spring-boot-annotations/src/main/test/com.baeldung.annotations/EmployeeApplicationTest.java b/spring-boot-modules/spring-boot-annotations/src/main/test/com.baeldung.annotations/EmployeeApplicationTest.java new file mode 100644 index 0000000000..66700cf781 --- /dev/null +++ b/spring-boot-modules/spring-boot-annotations/src/main/test/com.baeldung.annotations/EmployeeApplicationTest.java @@ -0,0 +1,23 @@ +package com.baeldung.annotations; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.runner.ApplicationContextRunner; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertAll; + +public class EmployeeApplicationTest { + private final ApplicationContextRunner contextRunner = new ApplicationContextRunner() + .withUserConfiguration(EmployeeApplication.class); + + @Test + void whenApplicationContextRuns_thenContainAllDefinedBeans() { + contextRunner.run(context -> assertAll( + () -> assertTrue(context.containsBeanDefinition("employee")), + () -> assertTrue(context.containsBeanDefinition("seniorEmployee")), + () -> assertTrue(context.containsBeanDefinition("doctor")), + () -> assertTrue(context.containsBeanDefinition("hospital")), + () -> assertFalse(context.containsBeanDefinition("student")), + () -> assertTrue(context.containsBeanDefinition("teacher")))); + } +} From d27cbbc4a6507d3ba0a76057c34cd6cdf4b21e8c Mon Sep 17 00:00:00 2001 From: Anirban Chatterjee Date: Wed, 7 Oct 2020 09:32:33 +0200 Subject: [PATCH 199/260] Removed boilerplate code --- .../com/baeldung/annotations/EmployeeApplication.java | 8 +------- .../componentscanautoconfigure/employee/Employee.java | 5 +++++ .../employee/SeniorEmployee.java | 5 +++++ .../componentscanautoconfigure/student/Student.java | 5 +++++ .../componentscanautoconfigure/teacher/Teacher.java | 5 +++++ 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java index 263df30e16..17c7af858b 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/EmployeeApplication.java @@ -14,12 +14,6 @@ import org.springframework.context.annotation.ComponentScan; //@EnableAutoConfiguration(excludeName = {"org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration"}) public class EmployeeApplication { public static void main(String[] args) { - ApplicationContext context = SpringApplication.run(EmployeeApplication.class, args); - System.out.println("Configures Employee: " + context.containsBeanDefinition("employee")); - System.out.println("Configures Senior Employee: " + context.containsBeanDefinition("seniorEmployee")); - System.out.println("Configures Doctor: " + context.containsBeanDefinition("doctor")); - System.out.println("Configures Hospital: " + context.containsBeanDefinition("hospital")); - System.out.println("Configures Student: " + context.containsBeanDefinition("student")); - System.out.println("Configures Teacher: " + context.containsBeanDefinition("teacher")); + SpringApplication.run(EmployeeApplication.class, args); } } diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java index bdc0b3f2d9..9be3388046 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/Employee.java @@ -4,4 +4,9 @@ import org.springframework.stereotype.Component; @Component("employee") public class Employee { + + @Override + public String toString() { + return "Employee" + this.hashCode(); + } } diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java index ef75b4af0a..242e84f887 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/employee/SeniorEmployee.java @@ -4,4 +4,9 @@ import org.springframework.stereotype.Component; @Component public class SeniorEmployee { + + @Override + public String toString() { + return "Senior Employee" + this.hashCode(); + } } diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java index 820d0bea10..56f2ac9830 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/student/Student.java @@ -4,4 +4,9 @@ import org.springframework.stereotype.Component; @Component("student") public class Student { + + @Override + public String toString() { + return "Student" + this.hashCode(); + } } diff --git a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java index 699b8ccfb4..e2c653204d 100644 --- a/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java +++ b/spring-boot-modules/spring-boot-annotations/src/main/java/com/baeldung/annotations/componentscanautoconfigure/teacher/Teacher.java @@ -4,4 +4,9 @@ import org.springframework.stereotype.Component; @Component("teacher") public class Teacher { + + @Override + public String toString() { + return "Teacher" + this.hashCode(); + } } From cfa4438c78f0b1a02321955d1b2e8448537a06f6 Mon Sep 17 00:00:00 2001 From: catull Date: Wed, 7 Oct 2020 10:21:11 +0200 Subject: [PATCH 200/260] Eliminate duplicate dependency spring-boot-starter-web --- persistence-modules/spring-data-jpa-crud/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/persistence-modules/spring-data-jpa-crud/pom.xml b/persistence-modules/spring-data-jpa-crud/pom.xml index 44944298e0..7af5b38a38 100644 --- a/persistence-modules/spring-data-jpa-crud/pom.xml +++ b/persistence-modules/spring-data-jpa-crud/pom.xml @@ -16,10 +16,6 @@ - - org.springframework.boot - spring-boot-starter-web - org.springframework.boot spring-boot-starter-data-jpa From a1229f66e4096650853326c9ac1ee0bd73fe1e68 Mon Sep 17 00:00:00 2001 From: Nikolaos Themelis <29039541+tjrbrom@users.noreply.github.com> Date: Wed, 7 Oct 2020 11:41:31 +0300 Subject: [PATCH 201/260] Pass unused "millis" argument to lock.tryLock method, line 76. --- .../java/com/baeldung/deadlockAndLivelock/LivelockExample.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java index b0d66a92c2..7c3ea6f94e 100644 --- a/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java +++ b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java @@ -73,7 +73,7 @@ public class LivelockExample { public void tryLock(Lock lock, long millis) { try { - lock.tryLock(10, TimeUnit.MILLISECONDS); + lock.tryLock(millis, TimeUnit.MILLISECONDS); } catch (InterruptedException e) { e.printStackTrace(); } From d970484275700d9ffc9d83e30ad80d4e09b598be Mon Sep 17 00:00:00 2001 From: Krzysztof Woyke Date: Wed, 7 Oct 2020 10:47:15 +0200 Subject: [PATCH 202/260] BAEL-4657: Add BasicAuthRequestInterceptor example --- .../cloud/openfeign/config/ClientConfiguration.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/ClientConfiguration.java b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/ClientConfiguration.java index 0b16134e92..55c27dde2f 100644 --- a/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/ClientConfiguration.java +++ b/spring-cloud/spring-cloud-openfeign/src/main/java/com/baeldung/cloud/openfeign/config/ClientConfiguration.java @@ -2,6 +2,7 @@ package com.baeldung.cloud.openfeign.config; import feign.Logger; import feign.RequestInterceptor; +import feign.auth.BasicAuthRequestInterceptor; import feign.codec.ErrorDecoder; import feign.okhttp.OkHttpClient; import org.apache.http.entity.ContentType; @@ -34,4 +35,9 @@ public class ClientConfiguration { requestTemplate.header("Accept", ContentType.APPLICATION_JSON.getMimeType()); }; } + + // @Bean - uncomment to use this interceptor and remove @Bean from the requestInterceptor() + public BasicAuthRequestInterceptor basicAuthRequestInterceptor() { + return new BasicAuthRequestInterceptor("ajeje", "brazof"); + } } From 4947f541ea5cc77650a61163b7b5499ca844ca24 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:15:44 +0800 Subject: [PATCH 203/260] Update README.md --- libraries-6/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/libraries-6/README.md b/libraries-6/README.md index 3748522b9d..5be600f50e 100644 --- a/libraries-6/README.md +++ b/libraries-6/README.md @@ -16,4 +16,5 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m - [Exactly Once Processing in Kafka](https://www.baeldung.com/kafka-exactly-once) - [Introduction to Protonpack](https://www.baeldung.com/java-protonpack) - [Java-R Integration](https://www.baeldung.com/java-r-integration) +- [Using libphonenumber to Validate Phone Numbers](https://www.baeldung.com/java-libphonenumber) - More articles [[<-- prev]](/libraries-5) From b1cdcff9c17e1fb4bcd43e09b8afc899ace4851a Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:17:12 +0800 Subject: [PATCH 204/260] Update README.md --- java-native/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-native/README.md b/java-native/README.md index 6b984e6590..2e2047924b 100644 --- a/java-native/README.md +++ b/java-native/README.md @@ -5,3 +5,4 @@ This module contains articles about the Java Native Interface (JNI). ### Relevant Articles: - [Guide to JNI (Java Native Interface)](https://www.baeldung.com/jni) +- [Using JNA to Access Native Dynamic Libraries](https://www.baeldung.com/java-jna-dynamic-libraries) From 9d8d8a6587c1fc8efbf9d16ac9b8f0b87f136f7e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:18:48 +0800 Subject: [PATCH 205/260] Update README.md --- core-java-modules/core-java-reflection-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-reflection-2/README.md b/core-java-modules/core-java-reflection-2/README.md index 1668eeade3..9ed14f08dc 100644 --- a/core-java-modules/core-java-reflection-2/README.md +++ b/core-java-modules/core-java-reflection-2/README.md @@ -3,3 +3,4 @@ - [Reading the Value of ‘private’ Fields from a Different Class in Java](https://www.baeldung.com/java-reflection-read-private-field-value) - [Set Field Value With Reflection](https://www.baeldung.com/java-set-private-field-value) - [Checking If a Method is Static Using Reflection in Java](https://www.baeldung.com/java-check-method-is-static) +- [Checking if a Java Class is ‘abstract’ Using Reflection](https://www.baeldung.com/java-reflection-is-class-abstract) From 3ebd90bfd762b5d6cbf70aa1e3236047c7f576f0 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:21:34 +0800 Subject: [PATCH 206/260] Update README.md --- spring-cloud/spring-cloud-openfeign/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-openfeign/README.md b/spring-cloud/spring-cloud-openfeign/README.md index e5777732e4..735903db72 100644 --- a/spring-cloud/spring-cloud-openfeign/README.md +++ b/spring-cloud/spring-cloud-openfeign/README.md @@ -1,4 +1,4 @@ ### Relevant Articles: - [Introduction to Spring Cloud OpenFeign](https://www.baeldung.com/spring-cloud-openfeign) - +- [Differences Between Netflix Feign and OpenFeign](https://www.baeldung.com/netflix-feign-vs-openfeign) From 962063264a958a1878f9d2689a0f99bb87c0ae79 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:22:49 +0800 Subject: [PATCH 207/260] Create README.md --- spring-cloud/spring-cloud-netflix-feign/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-cloud/spring-cloud-netflix-feign/README.md diff --git a/spring-cloud/spring-cloud-netflix-feign/README.md b/spring-cloud/spring-cloud-netflix-feign/README.md new file mode 100644 index 0000000000..28dfc88a43 --- /dev/null +++ b/spring-cloud/spring-cloud-netflix-feign/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [https://www.baeldung.com/netflix-feign-vs-openfeign](https://www.baeldung.com/netflix-feign-vs-openfeign) From c1238eec639af814f79297b45b86a1ba86b15204 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:23:20 +0800 Subject: [PATCH 208/260] Update README.md --- spring-cloud/spring-cloud-netflix-feign/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-netflix-feign/README.md b/spring-cloud/spring-cloud-netflix-feign/README.md index 28dfc88a43..2e96a0045d 100644 --- a/spring-cloud/spring-cloud-netflix-feign/README.md +++ b/spring-cloud/spring-cloud-netflix-feign/README.md @@ -1,3 +1,3 @@ ### Relevant Articles: -- [https://www.baeldung.com/netflix-feign-vs-openfeign](https://www.baeldung.com/netflix-feign-vs-openfeign) +- [Differences Between Netflix Feign and OpenFeign](https://www.baeldung.com/netflix-feign-vs-openfeign) From b24db3ed9986b220d08d82354b481b25a472b358 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:27:34 +0800 Subject: [PATCH 209/260] Update README.md --- spring-boot-modules/spring-boot-libraries-2/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-libraries-2/README.md b/spring-boot-modules/spring-boot-libraries-2/README.md index b0840798e3..4218dfc1be 100644 --- a/spring-boot-modules/spring-boot-libraries-2/README.md +++ b/spring-boot-modules/spring-boot-libraries-2/README.md @@ -4,4 +4,4 @@ This module contains articles about various Spring Boot libraries ### Relevant Articles: -- Running background jobs in Spring with JobRunr +- [Background Jobs in Spring with JobRunr](https://www.baeldung.com/java-jobrunr-spring) From ac480ad0cc18a6c07c7c943806189f42c8758439 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:29:57 +0800 Subject: [PATCH 210/260] Update README.md --- core-java-modules/core-java-concurrency-basic-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-concurrency-basic-2/README.md b/core-java-modules/core-java-concurrency-basic-2/README.md index a8daf14ea9..bf973f7036 100644 --- a/core-java-modules/core-java-concurrency-basic-2/README.md +++ b/core-java-modules/core-java-concurrency-basic-2/README.md @@ -11,4 +11,5 @@ This module contains articles about basic Java concurrency - [Life Cycle of a Thread in Java](https://www.baeldung.com/java-thread-lifecycle) - [Guide to AtomicMarkableReference](https://www.baeldung.com/java-atomicmarkablereference) - [Why are Local Variables Thread-Safe in Java](https://www.baeldung.com/java-local-variables-thread-safe) +- [How to Stop Execution After a Certain Time in Java](https://www.baeldung.com/java-stop-execution-after-certain-time) - [[<-- Prev]](/core-java-modules/core-java-concurrency-basic) From 539324181f8be0bd88324b347a0eb12cf0f45207 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:32:44 +0800 Subject: [PATCH 211/260] Update README.md --- persistence-modules/spring-boot-persistence-h2/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/persistence-modules/spring-boot-persistence-h2/README.md b/persistence-modules/spring-boot-persistence-h2/README.md index d11ec1f409..1d47907a98 100644 --- a/persistence-modules/spring-boot-persistence-h2/README.md +++ b/persistence-modules/spring-boot-persistence-h2/README.md @@ -1,5 +1,7 @@ ### Relevant Articles: + - [Access the Same In-Memory H2 Database in Multiple Spring Boot Applications](https://www.baeldung.com/spring-boot-access-h2-database-multiple-apps) - [Spring Boot With H2 Database](https://www.baeldung.com/spring-boot-h2-database) - [Hibernate @NotNull vs @Column(nullable = false)](https://www.baeldung.com/hibernate-notnull-vs-nullable) - [Quick Guide to Hibernate enable_lazy_load_no_trans Property](https://www.baeldung.com/hibernate-lazy-loading-workaround) +- [Where Does H2’s Embedded Database Store The Data?](https://www.baeldung.com/h2-embedded-db-data-storage) From b69c36f2d6577a939046b2c60bec3cf204888d55 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 7 Oct 2020 17:41:09 +0800 Subject: [PATCH 212/260] Update README.md --- core-kotlin-modules/core-kotlin/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-kotlin-modules/core-kotlin/README.md b/core-kotlin-modules/core-kotlin/README.md index 33f8745937..a890658e95 100644 --- a/core-kotlin-modules/core-kotlin/README.md +++ b/core-kotlin-modules/core-kotlin/README.md @@ -12,3 +12,4 @@ This module contains articles about Kotlin core features. - [Sequences in Kotlin](https://www.baeldung.com/kotlin/sequences) - [Converting Kotlin Data Class from JSON using GSON](https://www.baeldung.com/kotlin-json-convert-data-class) - [Exception Handling in Kotlin](https://www.baeldung.com/kotlin/exception-handling) +- [Quick Guide to Kotlin Default and Named Arguments](https://www.baeldung.com/kotlin/default-named-arguments) From 9ee0ab2af0b68a2341962c5e8d9dce0e91ea2d26 Mon Sep 17 00:00:00 2001 From: Jordan Simpson Date: Wed, 7 Oct 2020 23:13:14 -0500 Subject: [PATCH 213/260] Fixed test code after merge from master. --- persistence-modules/spring-persistence-simple/pom.xml | 6 ++++++ .../baeldung/transactional/TransactionalDetectionTest.java | 5 ++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/persistence-modules/spring-persistence-simple/pom.xml b/persistence-modules/spring-persistence-simple/pom.xml index a069f70994..13898d01e7 100644 --- a/persistence-modules/spring-persistence-simple/pom.xml +++ b/persistence-modules/spring-persistence-simple/pom.xml @@ -72,6 +72,12 @@ ${org.springframework.version} test + + org.springframework.boot + spring-boot-starter-test + test + ${spring-boot-starter.version} + org.mockito mockito-core diff --git a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java index 304704a0a6..d82aed86b8 100644 --- a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java +++ b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java @@ -1,9 +1,8 @@ package com.baeldung.transactional; -import com.baeldung.persistence.service.transactional.PersistenceTransactionalTestConfig; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; +import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.support.TransactionSynchronizationManager; @@ -11,7 +10,7 @@ import org.springframework.transaction.support.TransactionSynchronizationManager import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -@ContextConfiguration(classes = PersistenceTransactionalTestConfig.class) +@SpringBootApplication @RunWith(SpringJUnit4ClassRunner.class) public class TransactionalDetectionTest { From e126cc2287831e32fd9d3681b42bb1f8259b2682 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 14:12:45 +0800 Subject: [PATCH 214/260] Update README.md --- persistence-modules/spring-jpa-2/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/persistence-modules/spring-jpa-2/README.md b/persistence-modules/spring-jpa-2/README.md index fe661c2f28..59543cade7 100644 --- a/persistence-modules/spring-jpa-2/README.md +++ b/persistence-modules/spring-jpa-2/README.md @@ -3,8 +3,7 @@ ### Relevant Articles: - [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many) - [A Guide to JPA with Spring](https://www.baeldung.com/the-persistence-layer-with-spring-and-jpa) -- [Bootstrapping Hibernate 5 with Spring](https://www.baeldung.com/hibernate-5-spring) - [Transactions with Spring and JPA](https://www.baeldung.com/transaction-configuration-with-jpa-and-spring) - [The DAO with Spring and Hibernate](https://www.baeldung.com/persistence-layer-with-spring-and-hibernate) - [Simplify the DAO with Spring and Java Generics](https://www.baeldung.com/simplifying-the-data-access-layer-with-spring-and-java-generics) -- More articles: [[<-- prev]](/spring-jpa) \ No newline at end of file +- More articles: [[<-- prev]](/spring-jpa) From d4ccef2d443fd8c11cbbd899f62754217883eaa4 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 14:14:07 +0800 Subject: [PATCH 215/260] Update README.md --- persistence-modules/spring-hibernate-5/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md index cb227592f6..eff59a0362 100644 --- a/persistence-modules/spring-hibernate-5/README.md +++ b/persistence-modules/spring-hibernate-5/README.md @@ -13,3 +13,4 @@ This module contains articles about Hibernate 5 with Spring. - [Deleting Objects with Hibernate](http://www.baeldung.com/delete-with-hibernate) - [Spring, Hibernate and a JNDI Datasource](http://www.baeldung.com/spring-persistence-jpa-jndi-datasource) - [@Immutable in Hibernate](http://www.baeldung.com/hibernate-immutable) +- [Bootstrapping Hibernate 5 with Spring](https://www.baeldung.com/hibernate-5-spring) From b67de9d7a24d88d6f2e16d6f46e1ec1187a51a76 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 14:27:59 +0800 Subject: [PATCH 216/260] Update README.md --- spring-security-modules/spring-security-web-login/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-security-modules/spring-security-web-login/README.md b/spring-security-modules/spring-security-web-login/README.md index 5d92a8e1b4..9521a430c2 100644 --- a/spring-security-modules/spring-security-web-login/README.md +++ b/spring-security-modules/spring-security-web-login/README.md @@ -8,7 +8,6 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com ### Relevant Articles: - [Spring Security Form Login](https://www.baeldung.com/spring-security-login) - [Spring Security Logout](https://www.baeldung.com/spring-security-logout) -- [Spring Security Expressions – hasRole Example](https://www.baeldung.com/spring-security-expressions-basic) - [Spring HTTP/HTTPS Channel Security](https://www.baeldung.com/spring-channel-security-https) - [Spring Security – Customize the 403 Forbidden/Access Denied Page](https://www.baeldung.com/spring-security-custom-access-denied-page) - [Spring Security – Redirect to the Previous URL After Login](https://www.baeldung.com/spring-security-redirect-login) From 5774d7526656cb9fe26496576e97ca0e77437b0b Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 14:38:49 +0800 Subject: [PATCH 217/260] Update README.md --- spring-security-modules/spring-security-web-rest/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-security-modules/spring-security-web-rest/README.md b/spring-security-modules/spring-security-web-rest/README.md index c13668798d..fd1f86f6b8 100644 --- a/spring-security-modules/spring-security-web-rest/README.md +++ b/spring-security-modules/spring-security-web-rest/README.md @@ -14,5 +14,4 @@ The "Learn Spring Security" Classes: http://github.learnspringsecurity.com - [Spring Security Context Propagation with @Async](https://www.baeldung.com/spring-security-async-principal-propagation) - [Servlet 3 Async Support with Spring MVC and Spring Security](https://www.baeldung.com/spring-mvc-async-security) - [Intro to Spring Security Expressions](https://www.baeldung.com/spring-security-expressions) -- [Spring Security Expressions - hasRole Example](https://www.baeldung.com/spring-security-expressions-basic) - [Error Handling for REST with Spring](https://www.baeldung.com/exception-handling-for-rest-with-spring) From 8b3b51c8c12bc23ba35c0f00be2bc90a2fb777bb Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 14:56:50 +0800 Subject: [PATCH 218/260] Update README.md --- persistence-modules/spring-persistence-simple/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-persistence-simple/README.md b/persistence-modules/spring-persistence-simple/README.md index baa9107f4e..8bef16868d 100644 --- a/persistence-modules/spring-persistence-simple/README.md +++ b/persistence-modules/spring-persistence-simple/README.md @@ -6,7 +6,7 @@ ### Relevant Articles: - [Transaction Propagation and Isolation in Spring @Transactional](https://www.baeldung.com/spring-transactional-propagation-isolation) - [JTA Transaction with Spring](https://www.baeldung.com/spring-vs-jta-transactional) -- [Mock JNDI Datasource](https://www.baeldung.com/spring-mock-jndi-datasource) +- [Test a Mock JNDI Datasource with Spring](https://www.baeldung.com/spring-mock-jndi-datasource) ### Eclipse Config After importing the project into Eclipse, you may see the following error: From dc2fb66c6e2c2ca0db46546e34892b7e0d814c45 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 18:23:11 +0800 Subject: [PATCH 219/260] Create README.md --- docker/docker-spring-boot/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 docker/docker-spring-boot/README.md diff --git a/docker/docker-spring-boot/README.md b/docker/docker-spring-boot/README.md new file mode 100644 index 0000000000..4af9378290 --- /dev/null +++ b/docker/docker-spring-boot/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images) From 9f5144ce3329091170e632f5007065b1aed75c7f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Thu, 8 Oct 2020 18:23:49 +0800 Subject: [PATCH 220/260] Update README.md --- docker/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docker/README.md b/docker/README.md index 8e5cc2b621..7948b3d663 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,4 +1,3 @@ ## Relevant Articles: - [Introduction to Docker Compose](https://www.baeldung.com/docker-compose) -- [Creating Docker Images with Spring Boot](https://www.baeldung.com/spring-boot-docker-images) From 7afe0a51ca08a4b4809c4dd53c1cd34a1dba306e Mon Sep 17 00:00:00 2001 From: Jordan Simpson Date: Thu, 8 Oct 2020 08:42:56 -0500 Subject: [PATCH 221/260] Added "Unit" to the class name to satisfy the pmd.xml violation. --- ...alDetectionTest.java => TransactionalDetectionUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/{TransactionalDetectionTest.java => TransactionalDetectionUnitTest.java} (95%) diff --git a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionUnitTest.java similarity index 95% rename from persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java rename to persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionUnitTest.java index d82aed86b8..db4dbd630a 100644 --- a/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionTest.java +++ b/persistence-modules/spring-persistence-simple/src/test/java/com/baeldung/transactional/TransactionalDetectionUnitTest.java @@ -12,7 +12,7 @@ import static org.junit.Assert.assertTrue; @SpringBootApplication @RunWith(SpringJUnit4ClassRunner.class) -public class TransactionalDetectionTest { +public class TransactionalDetectionUnitTest { @Test @Transactional From 53609d6594c8c6888b64572ac2c1c40c3b379bc6 Mon Sep 17 00:00:00 2001 From: mdabrowski-eu <57441874+mdabrowski-eu@users.noreply.github.com> Date: Fri, 9 Oct 2020 06:59:51 +0200 Subject: [PATCH 222/260] BAEL-4565 Object States in Hibernate's Session (#10107) --- .../java/com/baeldung/states/Application.java | 12 ++ .../java/com/baeldung/states/UserEntity.java | 27 ++++ .../states/UserEntityWithCascade.java | 28 ++++ .../states/UserEntityIntegrationTest.java | 136 ++++++++++++++++++ 4 files changed, 203 insertions(+) create mode 100644 persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/Application.java create mode 100644 persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java create mode 100644 persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java create mode 100644 persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/Application.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/Application.java new file mode 100644 index 0000000000..38118354e0 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/Application.java @@ -0,0 +1,12 @@ +package com.baeldung.states; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } +} diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java new file mode 100644 index 0000000000..90bd275240 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntity.java @@ -0,0 +1,27 @@ +package com.baeldung.states; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +@Entity +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class UserEntity { + @Id + private String name; + + @ManyToOne + private UserEntity manager; + + public UserEntity(String name) { + this.name = name; + } +} diff --git a/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java new file mode 100644 index 0000000000..de0d62bfe2 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-2/src/main/java/com/baeldung/states/UserEntityWithCascade.java @@ -0,0 +1,28 @@ +package com.baeldung.states; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.ManyToOne; + +@Entity +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class UserEntityWithCascade { + @Id + private String name; + + @ManyToOne(cascade = CascadeType.PERSIST) + private UserEntityWithCascade manager; + + public UserEntityWithCascade(String name) { + this.name = name; + } +} diff --git a/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java new file mode 100644 index 0000000000..5d0dc99ad7 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-2/src/test/java/com/baeldung/states/UserEntityIntegrationTest.java @@ -0,0 +1,136 @@ +package com.baeldung.states; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import javax.persistence.EntityManagerFactory; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +@RunWith(SpringRunner.class) +@SpringBootTest +class UserEntityIntegrationTest { + @Autowired + private EntityManagerFactory entityManagerFactory; + + @Test + void givenName_thenShouldCreateDetachedUserEntity() { + // given + Session session = openSession(); + UserEntity userEntity = new UserEntity("John"); + + // then + assertThat(session.contains(userEntity)).isFalse(); + session.close(); + } + + @Test + void givenName_whenPersisted_thenShouldCreatePersistentUserEntity() { + // given + Session session = openSession(); + UserEntity userEntity = new UserEntity("John"); + + // when + session.persist(userEntity); + + // then + assertThat(session.contains(userEntity)).isTrue(); + session.close(); + } + + @Test + void givenPersistentEntity_whenSessionClosed_thenShouldDetachEntity() { + // given + Session session = openSession(); + UserEntity userEntity = new UserEntity("John"); + session.persist(userEntity); + assertThat(session.contains(userEntity)).isTrue(); + + // when + session.close(); + + // then + assertThat(session.isOpen()).isFalse(); + assertThatThrownBy(() -> session.contains(userEntity)); + } + + @Test + void givenPersistentEntity_whenAddedTransientManager_thenShouldThrowException() { + // given + Session session = openSession(); + Transaction transaction = session.beginTransaction(); + UserEntity userEntity = new UserEntity("John"); + session.persist(userEntity); + UserEntity manager = new UserEntity("Adam"); + + // when + userEntity.setManager(manager); + + + // then + assertThatThrownBy(() -> { + session.saveOrUpdate(userEntity); + transaction.commit(); + }); + session.close(); + } + + @Test + void givenPersistentEntity_whenAddedPersistentManager_thenShouldSave() { + // given + Session session = openSession(); + Transaction transaction = session.beginTransaction(); + UserEntity userEntity = new UserEntity("John"); + session.persist(userEntity); + UserEntity manager = new UserEntity("Adam"); + session.persist(manager); + + // when + userEntity.setManager(manager); + + + // then + session.saveOrUpdate(userEntity); + transaction.commit(); + session.close(); + + Session otherSession = openSession(); + UserEntity savedUser = otherSession.get(UserEntity.class, "John"); + assertThat(savedUser.getManager().getName()).isEqualTo("Adam"); + } + + @Test + void givenPersistentEntityWithCascade_whenAddedTransientManager_thenShouldSave() { + // given + Session session = openSession(); + Transaction transaction = session.beginTransaction(); + UserEntityWithCascade userEntity = new UserEntityWithCascade("John"); + session.persist(userEntity); + UserEntityWithCascade manager = new UserEntityWithCascade("Adam"); + + // when + userEntity.setManager(manager); + + + // then + session.saveOrUpdate(userEntity); + transaction.commit(); + session.close(); + + Session otherSession = openSession(); + UserEntityWithCascade savedUser = otherSession.get(UserEntityWithCascade.class, "John"); + assertThat(savedUser.getManager().getName()).isEqualTo("Adam"); + } + + + private Session openSession() { + return entityManagerFactory.unwrap(SessionFactory.class).openSession(); + } +} \ No newline at end of file From 565d4f32c2b8e8b9b24308f49b774b7b48aac5cc Mon Sep 17 00:00:00 2001 From: Benjamin Caure Date: Fri, 9 Oct 2020 12:53:19 +0200 Subject: [PATCH 223/260] BAEL-4328 --- .../RestTemplateConfigurationApplication.java | 1 - .../RestTemplateConfigurationApplication.java | 14 ---------- .../logging/LoggingInterceptor.java | 14 +++++----- .../logging/RestTemplateLoggingLiveTest.java | 26 ++++++++++++++----- .../src/test/resources/application.properties | 2 +- 5 files changed, 29 insertions(+), 28 deletions(-) delete mode 100644 spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/RestTemplateConfigurationApplication.java diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java index 8df3c13d7b..a7e65fc96c 100644 --- a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java +++ b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/RestTemplateConfigurationApplication.java @@ -1,7 +1,6 @@ package com.baeldung.resttemplate; import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication diff --git a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/RestTemplateConfigurationApplication.java b/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/RestTemplateConfigurationApplication.java deleted file mode 100644 index 4fa14edda1..0000000000 --- a/spring-resttemplate-2/src/main/java/com/baeldung/resttemplate/logging/RestTemplateConfigurationApplication.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.resttemplate.logging; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.EnableAutoConfiguration; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -@EnableAutoConfiguration -public class RestTemplateConfigurationApplication { - - public static void main(String[] args) { - SpringApplication.run(RestTemplateConfigurationApplication.class, args); - } -} diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java index 17ce390d8a..c699d9d9dc 100644 --- a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java +++ b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/LoggingInterceptor.java @@ -14,16 +14,18 @@ import org.springframework.http.client.ClientHttpResponse; public class LoggingInterceptor implements ClientHttpRequestInterceptor { - final static Logger log = LoggerFactory.getLogger(LoggingInterceptor.class); + final static Logger LOGGER = LoggerFactory.getLogger(LoggingInterceptor.class); @Override public ClientHttpResponse intercept(HttpRequest req, byte[] reqBody, ClientHttpRequestExecution ex) throws IOException { - log.debug("Request body: {}", new String(reqBody, StandardCharsets.UTF_8)); + LOGGER.debug("Request body: {}", new String(reqBody, StandardCharsets.UTF_8)); ClientHttpResponse response = ex.execute(req, reqBody); - InputStreamReader isr = new InputStreamReader(response.getBody(), StandardCharsets.UTF_8); - String body = new BufferedReader(isr).lines() - .collect(Collectors.joining("\n")); - log.debug("Response body: {}", body); + if (LOGGER.isDebugEnabled()) { + InputStreamReader isr = new InputStreamReader(response.getBody(), StandardCharsets.UTF_8); + String body = new BufferedReader(isr).lines() + .collect(Collectors.joining("\n")); + LOGGER.debug("Response body: {}", body); + } return response; } } diff --git a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java index 99d0201eff..86ffa574a0 100644 --- a/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java +++ b/spring-resttemplate-2/src/test/java/com/baeldung/resttemplate/logging/RestTemplateLoggingLiveTest.java @@ -1,18 +1,21 @@ package com.baeldung.resttemplate.logging; -import static org.hamcrest.CoreMatchers.equalTo; - -import static org.hamcrest.MatcherAssert.assertThat; +import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.http.client.SimpleClientHttpRequestFactory; +import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.CollectionUtils; import org.springframework.web.client.RestTemplate; @@ -22,6 +25,7 @@ import org.springframework.web.client.RestTemplate; public class RestTemplateLoggingLiveTest { private static final String baseUrl = "http://localhost:8080/spring-rest"; + private static final Logger LOGGER = LoggerFactory.getLogger(RestTemplateLoggingLiveTest.class); @Test public void givenHttpClientConfiguration_whenSendGetForRequestEntity_thenRequestResponseFullLog() { @@ -30,13 +34,22 @@ public class RestTemplateLoggingLiveTest { restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory()); final ResponseEntity response = restTemplate.postForEntity(baseUrl + "/persons", "my request body", String.class); - assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertEquals("[\"Lucie\",\"Jackie\",\"Danesh\",\"Tao\"]", response.getBody()); } @Test public void givenLoggingInterceptorConfiguration_whenSendGetForRequestEntity_thenRequestResponseCustomLog() { - RestTemplate restTemplate = new RestTemplate(); + RestTemplate restTemplate = null; + if (LOGGER.isDebugEnabled()) { + ClientHttpRequestFactory factory = new BufferingClientHttpRequestFactory( + new SimpleClientHttpRequestFactory()); + restTemplate = new RestTemplate(factory); + } else { + restTemplate = new RestTemplate(); + } + List interceptors = restTemplate.getInterceptors(); if (CollectionUtils.isEmpty(interceptors)) { interceptors = new ArrayList<>(); @@ -45,6 +58,7 @@ public class RestTemplateLoggingLiveTest { restTemplate.setInterceptors(interceptors); final ResponseEntity response = restTemplate.postForEntity(baseUrl + "/persons", "my request body", String.class); - assertThat(response.getStatusCode(), equalTo(HttpStatus.OK)); + assertEquals(HttpStatus.OK, response.getStatusCode()); + assertEquals("[\"Lucie\",\"Jackie\",\"Danesh\",\"Tao\"]", response.getBody()); } } diff --git a/spring-resttemplate-2/src/test/resources/application.properties b/spring-resttemplate-2/src/test/resources/application.properties index 7bc9e56041..286ea95a4f 100644 --- a/spring-resttemplate-2/src/test/resources/application.properties +++ b/spring-resttemplate-2/src/test/resources/application.properties @@ -1,5 +1,5 @@ logging.level.org.springframework.web.client.RestTemplate=DEBUG -logging.level.com.baeldung.resttemplate.logging.LoggingInterceptor=DEBUG +logging.level.com.baeldung.resttemplate.logging=DEBUG logging.level.org.apache.http=DEBUG logging.level.httpclient.wire=DEBUG logging.pattern.console=%20logger{20} - %msg%n From 68f35280c3e394f5ba0ae5a5666853454b6b9d77 Mon Sep 17 00:00:00 2001 From: Loredana Date: Fri, 9 Oct 2020 15:48:30 +0300 Subject: [PATCH 224/260] remove lombok, update scripts threads --- .../load-testing-comparison/pom.xml | 5 --- .../loadtesting/TransactionController.java | 26 --------------- .../model/CustomerRewardsAccount.java | 17 ++++++++-- .../loadtesting/model/Transaction.java | 33 +++++++++++++++++-- .../src/main/resources/application.properties | 7 ++++ .../scripts/Gatling/GatlingScenario.scala | 9 ++--- .../resources/scripts/JMeter/Test Plan.jmx | 2 +- .../scripts/The Grinder/grinder.properties | 2 +- .../resources/scripts/The Grinder/grinder.py | 8 +++-- 9 files changed, 64 insertions(+), 45 deletions(-) delete mode 100644 testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/TransactionController.java create mode 100644 testing-modules/load-testing-comparison/src/main/resources/application.properties diff --git a/testing-modules/load-testing-comparison/pom.xml b/testing-modules/load-testing-comparison/pom.xml index 1143ecb9ac..adc768b563 100644 --- a/testing-modules/load-testing-comparison/pom.xml +++ b/testing-modules/load-testing-comparison/pom.xml @@ -55,11 +55,6 @@ com.h2database h2 - - org.projectlombok - lombok - compile - diff --git a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/TransactionController.java b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/TransactionController.java deleted file mode 100644 index 2ea2c06a41..0000000000 --- a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/TransactionController.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.loadtesting; - -import com.baeldung.loadtesting.model.Transaction; -import com.baeldung.loadtesting.repository.TransactionRepository; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -@RestController -@Deprecated -public class TransactionController { - - @Autowired - private TransactionRepository transactionRepository; - - @PostMapping(path="/addTransaction") - public @ResponseBody - String saveTransactions(@RequestBody Transaction trnsctn){ - transactionRepository.save(trnsctn); - return "Saved Transaction."; - } - - @GetMapping(path="/findAll/{rewardId}") - public @ResponseBody Iterable getTransactions(@RequestParam Integer id){ - return transactionRepository.findByCustomerRewardsId(id); - } -} diff --git a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java index 2c6742fbaf..0599020700 100644 --- a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java +++ b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java @@ -5,10 +5,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import lombok.Data; - @Entity -@Data public class CustomerRewardsAccount { @Id @@ -19,4 +16,18 @@ public class CustomerRewardsAccount { public Integer getCustomerId(){ return this.customerId; } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public void setCustomerId(Integer customerId) { + this.customerId = customerId; + } + + } diff --git a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java index 312f52f4ab..1a6e0d4360 100644 --- a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java +++ b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java @@ -1,7 +1,5 @@ package com.baeldung.loadtesting.model; -import lombok.Data; - import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -10,7 +8,6 @@ import java.util.Date; import java.util.Calendar; @Entity -@Data public class Transaction { @Id @@ -27,4 +24,34 @@ public class Transaction { public void setTransactionDate(Date transactionDate){ this.transactionDate = transactionDate; } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public Integer getCustomerRewardsId() { + return customerRewardsId; + } + + public void setCustomerRewardsId(Integer customerRewardsId) { + this.customerRewardsId = customerRewardsId; + } + + public Integer getCustomerId() { + return customerId; + } + + public void setCustomerId(Integer customerId) { + this.customerId = customerId; + } + + public Date getTransactionDate() { + return transactionDate; + } + + } diff --git a/testing-modules/load-testing-comparison/src/main/resources/application.properties b/testing-modules/load-testing-comparison/src/main/resources/application.properties new file mode 100644 index 0000000000..424d3d0290 --- /dev/null +++ b/testing-modules/load-testing-comparison/src/main/resources/application.properties @@ -0,0 +1,7 @@ +spring.h2.console.enabled=true +spring.datasource.url=jdbc:h2:mem:testdb +spring.datasource.driverClassName=org.h2.Driver +spring.datasource.username=sa +spring.datasource.password=password +spring.jpa.database-platform=org.hibernate.dialect.H2Dialect + diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index f17f5f6124..6904d838cb 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -17,7 +17,8 @@ class RewardsScenario extends Simulation { .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") val scn = scenario("RewardsScenario") - .repeat(10){ + .repeat(100){ + exec(http("transactions_add") .post("/transactions/add/") .body(StringBody(_ => s"""{ "customerRewardsId":null,"customerId":"${randCustId()}","transactionDate":null }""")).asJson @@ -36,14 +37,14 @@ class RewardsScenario extends Simulation { .check(jsonPath("$.id").saveAs("rwdId"))) } - .exec(http("transactions_add") + .exec(http("transactions_update") .post("/transactions/add/") .body(StringBody("""{ "customerRewardsId":"${rwdId}","customerId":"${custId}","transactionDate":"${txtDate}" }""")).asJson) - .exec(http("get_reward") + .exec(http("get_transactions") .get("/transactions/findAll/${rwdId}")) } setUp( scn.inject(atOnceUsers(100)) ).protocols(httpProtocol) -} \ No newline at end of file +} diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx b/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx index 97640dfac7..413a8d3387 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx @@ -16,7 +16,7 @@ continue false - 10 + 100 100 0 diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties index 68adf90856..f256f5a7dd 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties @@ -1,5 +1,5 @@ grinder.script = grinder.py grinder.threads = 100 grinder.processes = 1 -grinder.runs = 10 +grinder.runs = 100 grinder.logDirectory = /logs diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py index 025f90d38b..bbb253c220 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py @@ -21,20 +21,24 @@ request1.setHeaders(headers) utilities = HTTPPluginControl.getHTTPUtilities() test1.record(request1) random=java.util.Random() +log = grinder.logger.info class TestRunner: def __call__(self): - customerId = str(random.nextInt()); + + customerId = str(random.nextInt()); result = request1.POST("http://localhost:8080/transactions/add", "{"'"customerRewardsId"'":null,"'"customerId"'":"+ customerId + ","'"transactionDate"'":null}") txnId = parseJsonString(result.getText(), "id") result = request1.GET("http://localhost:8080/rewards/find/"+ customerId) rwdId = parseJsonString(result.getText(), "id") + log("rwdid %s" % rwdId) if rwdId == "": result = request1.POST("http://localhost:8080/rewards/add", "{"'"customerId"'":"+ customerId + "}") rwdId = parseJsonString(result.getText(), "id") result = request1.POST("http://localhost:8080/transactions/add", "{"'"id"'":" + txnId + ","'"customerRewardsId"'":" + rwdId + ","'"customerId"'":"+ customerId + ","'"transactionDate"'":null}") - result = request1.GET("http://localhost:8080/transactions/findAll/" + rwdId) \ No newline at end of file + result = request1.GET("http://localhost:8080/transactions/findAll/" + rwdId) + From f3aee7ea037cce604329755732e38e754865db89 Mon Sep 17 00:00:00 2001 From: Loredana Date: Fri, 9 Oct 2020 15:50:27 +0300 Subject: [PATCH 225/260] remove log, formatting --- .../src/main/resources/scripts/The Grinder/grinder.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py index bbb253c220..a71f101b41 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.py @@ -21,19 +21,17 @@ request1.setHeaders(headers) utilities = HTTPPluginControl.getHTTPUtilities() test1.record(request1) random=java.util.Random() -log = grinder.logger.info class TestRunner: def __call__(self): - customerId = str(random.nextInt()); + customerId = str(random.nextInt()); result = request1.POST("http://localhost:8080/transactions/add", "{"'"customerRewardsId"'":null,"'"customerId"'":"+ customerId + ","'"transactionDate"'":null}") txnId = parseJsonString(result.getText(), "id") result = request1.GET("http://localhost:8080/rewards/find/"+ customerId) rwdId = parseJsonString(result.getText(), "id") - log("rwdid %s" % rwdId) if rwdId == "": result = request1.POST("http://localhost:8080/rewards/add", "{"'"customerId"'":"+ customerId + "}") From eea42f2289e3264420728c702a75966c4b160b1c Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Fri, 9 Oct 2020 21:05:09 +0200 Subject: [PATCH 226/260] Reset Gatling user state on each iteration --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 ++ 1 file changed, 2 insertions(+) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index 6904d838cb..15d86ebedb 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -43,6 +43,8 @@ class RewardsScenario extends Simulation { .exec(http("get_transactions") .get("/transactions/findAll/${rwdId}")) + + .exec(_.removeAll("txnId", "txtDate", "custId", "rwdId")) } setUp( scn.inject(atOnceUsers(100)) From 4cd2feed942af0f1189620c8ce037581fb111511 Mon Sep 17 00:00:00 2001 From: Maiklins Date: Sat, 10 Oct 2020 09:17:35 +0200 Subject: [PATCH 227/260] Java-82 Correctly configure Netty server and security (#10034) * Java-82 Correctly configure netty server and security * Java-82 Align WebSecurity with article * Java-82 Change port Co-authored-by: mikr --- .../reactive/actuator/FeaturesEndpoint.java | 2 +- .../actuator/Spring5ReactiveApplication.java | 2 +- .../reactive/actuator/WebSecurityConfig.java | 19 +++++++------------ .../reactive/security/SecurityConfig.java | 4 ++-- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java index b2bc1e037f..d6cf1eb781 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/FeaturesEndpoint.java @@ -7,7 +7,7 @@ import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Component -@Endpoint(id = "features", enableByDefault = true) +@Endpoint(id = "features") public class FeaturesEndpoint { private Map features = new ConcurrentHashMap<>(); diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/Spring5ReactiveApplication.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/Spring5ReactiveApplication.java index 03943d436d..600bff5948 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/Spring5ReactiveApplication.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/Spring5ReactiveApplication.java @@ -4,7 +4,7 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class Spring5ReactiveApplication{ +public class Spring5ReactiveApplication { public static void main(String[] args) { SpringApplication.run(Spring5ReactiveApplication.class, args); diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/WebSecurityConfig.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/WebSecurityConfig.java index 07f805fea4..384e26ac8c 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/WebSecurityConfig.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/actuator/WebSecurityConfig.java @@ -1,10 +1,7 @@ package com.baeldung.reactive.actuator; -import org.springframework.boot.actuate.autoconfigure.security.reactive.EndpointRequest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.security.config.annotation.web.builders.HttpSecurity; -import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity; import org.springframework.security.config.web.server.ServerHttpSecurity; import org.springframework.security.web.server.SecurityWebFilterChain; @@ -12,17 +9,15 @@ import org.springframework.security.web.server.SecurityWebFilterChain; @Configuration @EnableWebFluxSecurity public class WebSecurityConfig { - - + @Bean public SecurityWebFilterChain securitygWebFilterChain( ServerHttpSecurity http) { - return http - - .authorizeExchange() - .matchers(EndpointRequest.to( - FeaturesEndpoint.class - )).permitAll().anyExchange().permitAll().and().csrf().disable().build(); + + return http.authorizeExchange() + .pathMatchers("/actuator/**").permitAll() + .anyExchange().authenticated() + .and().build(); } - + } diff --git a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SecurityConfig.java b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SecurityConfig.java index 225f78b3f7..64e96ddae1 100644 --- a/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SecurityConfig.java +++ b/spring-5-reactive-security/src/main/java/com/baeldung/reactive/security/SecurityConfig.java @@ -21,12 +21,12 @@ public class SecurityConfig { @Bean public SecurityWebFilterChain securitygWebFilterChain(ServerHttpSecurity http) { return http.authorizeExchange() - .pathMatchers("/", "/admin") + .pathMatchers("/admin") .hasAuthority("ROLE_ADMIN") .matchers(EndpointRequest.to(FeaturesEndpoint.class)) .permitAll() .anyExchange() - .permitAll() + .authenticated() .and() .formLogin() .and() From 2fb06fdcdd3c7827a2d67c04e80dc615d6fb4b83 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 10 Oct 2020 13:38:26 +0300 Subject: [PATCH 228/260] remove explicit version overrides JAVA-1671 --- spring-cloud/pom.xml | 6 ------ spring-cloud/spring-cloud-aws/pom.xml | 4 ---- spring-cloud/spring-cloud-bootstrap/config/pom.xml | 11 ----------- .../spring-cloud-bootstrap/customer-service/pom.xml | 12 ------------ .../spring-cloud-bootstrap/discovery/pom.xml | 4 ---- spring-cloud/spring-cloud-bootstrap/gateway/pom.xml | 4 ---- .../spring-cloud-bootstrap/order-service/pom.xml | 11 ----------- spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml | 4 ---- .../spring-cloud-bootstrap/svc-rating/pom.xml | 4 ---- spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml | 11 ----------- spring-cloud/spring-cloud-config/pom.xml | 11 ----------- spring-cloud/spring-cloud-connectors-heroku/pom.xml | 4 ---- spring-cloud/spring-cloud-functions/pom.xml | 4 ---- .../spring/cloudfunction/aws/functions/Greeter.java | 2 +- spring-cloud/spring-cloud-kubernetes/pom.xml | 4 ---- .../spring-cloud-rest-books-api/pom.xml | 4 ---- .../spring-cloud-rest-config-server/pom.xml | 4 ---- .../spring-cloud-rest-discovery-server/pom.xml | 4 ---- .../spring-cloud-rest-reviews-api/pom.xml | 4 ---- spring-cloud/spring-cloud-ribbon-client/pom.xml | 5 ----- spring-cloud/spring-cloud-ribbon-retry/pom.xml | 4 ---- spring-cloud/spring-cloud-security/pom.xml | 4 ---- .../spring-cloud-stream-kafka/pom.xml | 4 ---- .../spring-cloud-stream-kinesis/pom.xml | 5 ----- spring-cloud/spring-cloud-task/pom.xml | 4 ---- spring-cloud/spring-cloud-vault/pom.xml | 5 ----- spring-cloud/spring-cloud-zuul/pom.xml | 4 ---- 27 files changed, 1 insertion(+), 146 deletions(-) diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 928db8adb7..7894365a41 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -85,13 +85,7 @@ 1.4.7.RELEASE 1.4.7.RELEASE 3.0.6.RELEASE - 2.3.1.RELEASE - 2.3.1.RELEASE - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-aws/pom.xml b/spring-cloud/spring-cloud-aws/pom.xml index 3952ffdec1..f65db6a2fe 100644 --- a/spring-cloud/spring-cloud-aws/pom.xml +++ b/spring-cloud/spring-cloud-aws/pom.xml @@ -68,10 +68,6 @@ Dalston.SR4 2.2.1.RELEASE - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-bootstrap/config/pom.xml b/spring-cloud/spring-cloud-bootstrap/config/pom.xml index 65a9830495..6ebf23637e 100644 --- a/spring-cloud/spring-cloud-bootstrap/config/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/config/pom.xml @@ -30,13 +30,6 @@ - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - org.springframework.cloud spring-cloud-dependencies @@ -50,10 +43,6 @@ Brixton.SR7 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml b/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml index 026a7a1841..729abb4f05 100644 --- a/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/customer-service/pom.xml @@ -17,13 +17,6 @@ - - org.springframework.boot - spring-boot-dependencies - ${spring-boot.version} - pom - import - org.springframework.boot spring-boot-starter-web @@ -78,10 +71,5 @@ 1.8 1.8 - - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml index eaebaacc4d..d77e29768f 100644 --- a/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/discovery/pom.xml @@ -52,10 +52,6 @@ Edgware.SR5 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml index aacd2cdbf7..34b7af7c0a 100644 --- a/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/gateway/pom.xml @@ -101,10 +101,6 @@ Dalston.RELEASE - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml b/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml index 04901f9936..a32bd5a2d3 100644 --- a/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/order-service/pom.xml @@ -23,13 +23,6 @@ - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - org.springframework.boot spring-boot-dependencies @@ -126,9 +119,5 @@ 1.8 com.baeldung.orderservice.OrderApplication - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml b/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml index cf34e44f24..de0785bd45 100644 --- a/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/svc-book/pom.xml @@ -74,10 +74,6 @@ Dalston.RELEASE - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml b/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml index a232861cad..0cce78276a 100644 --- a/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/svc-rating/pom.xml @@ -83,10 +83,6 @@ Dalston.RELEASE - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml b/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml index 134038b94a..b83c5a2aaa 100644 --- a/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml +++ b/spring-cloud/spring-cloud-bootstrap/zipkin/pom.xml @@ -38,13 +38,6 @@ - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - org.springframework.cloud spring-cloud-dependencies @@ -58,10 +51,6 @@ Brixton.SR7 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-config/pom.xml b/spring-cloud/spring-cloud-config/pom.xml index e693bc7a29..7fb0c1fd68 100644 --- a/spring-cloud/spring-cloud-config/pom.xml +++ b/spring-cloud/spring-cloud-config/pom.xml @@ -22,13 +22,6 @@ - - org.junit - junit-bom - ${junit-jupiter.version} - pom - import - org.springframework.cloud spring-cloud-dependencies @@ -42,10 +35,6 @@ Hoxton.SR4 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-connectors-heroku/pom.xml b/spring-cloud/spring-cloud-connectors-heroku/pom.xml index 2e84061be9..e71e1350a2 100644 --- a/spring-cloud/spring-cloud-connectors-heroku/pom.xml +++ b/spring-cloud/spring-cloud-connectors-heroku/pom.xml @@ -65,10 +65,6 @@ 42.2.10 1.10.10 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-functions/pom.xml b/spring-cloud/spring-cloud-functions/pom.xml index 19b5e3cd8d..0be3941db1 100644 --- a/spring-cloud/spring-cloud-functions/pom.xml +++ b/spring-cloud/spring-cloud-functions/pom.xml @@ -87,10 +87,6 @@ 1.1.0 1.0.10.RELEASE - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java index c443b98c18..bbc87a4ae2 100644 --- a/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java +++ b/spring-cloud/spring-cloud-functions/src/main/java/com/baeldung/spring/cloudfunction/aws/functions/Greeter.java @@ -1,4 +1,4 @@ -package com.baeldung.spring.cloudfunction.functions.aws; +package com.baeldung.spring.cloudfunction.aws.functions; import java.util.function.Function; diff --git a/spring-cloud/spring-cloud-kubernetes/pom.xml b/spring-cloud/spring-cloud-kubernetes/pom.xml index c936024753..a3669d2d55 100644 --- a/spring-cloud/spring-cloud-kubernetes/pom.xml +++ b/spring-cloud/spring-cloud-kubernetes/pom.xml @@ -25,9 +25,5 @@ - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml index 1dcf14f104..8ba0fc5cad 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-books-api/pom.xml @@ -75,9 +75,5 @@ - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml index 736b8bdf78..c64341f652 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-config-server/pom.xml @@ -53,10 +53,6 @@ Camden.SR4 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml index 12f8b6ae6a..85790bf895 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-discovery-server/pom.xml @@ -61,10 +61,6 @@ Edgware.SR4 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml index 0e7aed7f6a..35d0e79543 100644 --- a/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml +++ b/spring-cloud/spring-cloud-rest/spring-cloud-rest-reviews-api/pom.xml @@ -83,10 +83,6 @@ 3.0.1 0.6 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-ribbon-client/pom.xml b/spring-cloud/spring-cloud-ribbon-client/pom.xml index ce57cfd7d3..fa9cee29a2 100644 --- a/spring-cloud/spring-cloud-ribbon-client/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-client/pom.xml @@ -46,11 +46,6 @@ Hoxton.SR4 - - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-ribbon-retry/pom.xml b/spring-cloud/spring-cloud-ribbon-retry/pom.xml index 198473d5e5..99eb882421 100644 --- a/spring-cloud/spring-cloud-ribbon-retry/pom.xml +++ b/spring-cloud/spring-cloud-ribbon-retry/pom.xml @@ -56,9 +56,5 @@ Hoxton.SR3 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-security/pom.xml b/spring-cloud/spring-cloud-security/pom.xml index 0997b1f3aa..3a007c8df1 100644 --- a/spring-cloud/spring-cloud-security/pom.xml +++ b/spring-cloud/spring-cloud-security/pom.xml @@ -21,9 +21,5 @@ - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml index 3283d4d07c..52230dd1c1 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kafka/pom.xml @@ -106,10 +106,6 @@ 4.0.0 1.8.2 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml index d3182433e9..9e706cc239 100644 --- a/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml +++ b/spring-cloud/spring-cloud-stream/spring-cloud-stream-kinesis/pom.xml @@ -43,11 +43,6 @@ 1.11.632 2.0.2.RELEASE 2.2.1.RELEASE - - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-task/pom.xml b/spring-cloud/spring-cloud-task/pom.xml index bb18c1390b..21d8a4e42b 100644 --- a/spring-cloud/spring-cloud-task/pom.xml +++ b/spring-cloud/spring-cloud-task/pom.xml @@ -50,10 +50,6 @@ Hoxton.SR4 2.2.3.RELEASE - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-vault/pom.xml b/spring-cloud/spring-cloud-vault/pom.xml index a713e47fe2..d9ae6b515f 100644 --- a/spring-cloud/spring-cloud-vault/pom.xml +++ b/spring-cloud/spring-cloud-vault/pom.xml @@ -83,11 +83,6 @@ Greenwich.RELEASE - - - 2.22.2 - 5.6.2 - 4.13 diff --git a/spring-cloud/spring-cloud-zuul/pom.xml b/spring-cloud/spring-cloud-zuul/pom.xml index 3884e67388..b8db1f2fc7 100644 --- a/spring-cloud/spring-cloud-zuul/pom.xml +++ b/spring-cloud/spring-cloud-zuul/pom.xml @@ -81,10 +81,6 @@ Hoxton.SR4 - - 2.22.2 - 5.6.2 - 4.13 From 6f4ec4704fa9a127bca7344c9abc65b08fde4bf7 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 10 Oct 2020 13:49:25 +0300 Subject: [PATCH 229/260] fix unknown version --- spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml | 1 - spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml | 4 ---- spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml | 2 -- .../bin/eureka-client/pom.xml | 1 - .../eureka-client/pom.xml | 4 ++-- .../eureka-server/pom.xml | 2 +- .../spring-cloud-zuul-eureka-integration/zuul-server/pom.xml | 1 - 7 files changed, 3 insertions(+), 12 deletions(-) diff --git a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml index 9b43542f02..204cb8765c 100644 --- a/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/feign-rest-consumer/pom.xml @@ -58,7 +58,6 @@ org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} org.springframework.boot diff --git a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml index 7989b09ed4..44e5bf2501 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-consumer/pom.xml @@ -47,24 +47,20 @@ org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-thymeleaf - ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-actuator - ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-test test - ${spring-boot-starter-web.version} diff --git a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml index cb7377d705..e7be8f2c58 100644 --- a/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml +++ b/spring-cloud/spring-cloud-hystrix/rest-producer/pom.xml @@ -18,13 +18,11 @@ org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} org.springframework.boot spring-boot-starter-test - ${spring-boot-starter-web.version} test diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml index 118a9e2c11..321da7527a 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/bin/eureka-client/pom.xml @@ -35,7 +35,6 @@ org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml index 9cf96df60e..77e8ef7c20 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml @@ -35,13 +35,13 @@ org.springframework.boot spring-boot-starter-web - ${spring-boot-starter-web.version} + ${spring-boot.version} org.springframework.boot spring-boot-starter-test - ${spring-boot-starter-web.version} + ${spring-boot.version} test diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml index cd25f5f294..c3f6642351 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml @@ -41,7 +41,7 @@ org.springframework.boot spring-boot-starter-test - ${spring-boot-starter-web.version} + ${spring-boot.version} test diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml index 3d238d5d5f..ddffe540c5 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml @@ -50,7 +50,6 @@ org.springframework.boot spring-boot-starter-test - ${spring-boot-starter-web.version} test From 5792db85bd0b2900aab6426d59f63a56d42583c7 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 10 Oct 2020 13:56:42 +0300 Subject: [PATCH 230/260] fix unknown version --- spring-cloud/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-cloud/pom.xml b/spring-cloud/pom.xml index 7894365a41..c0e452afaf 100644 --- a/spring-cloud/pom.xml +++ b/spring-cloud/pom.xml @@ -52,7 +52,6 @@ org.springframework.boot spring-boot-maven-plugin - ${spring-boot-maven-plugin.version} From e4007b9b98fa716acee458e6b2dc3244287185ff Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 10 Oct 2020 14:18:20 +0300 Subject: [PATCH 231/260] fix test --- .../src/main/resources/application.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud/spring-cloud-functions/src/main/resources/application.properties b/spring-cloud/spring-cloud-functions/src/main/resources/application.properties index b445bfa4ed..2cb479879c 100644 --- a/spring-cloud/spring-cloud-functions/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-functions/src/main/resources/application.properties @@ -1 +1 @@ -spring.cloud.function.scan.packages: com.baeldung.spring.cloudfunction.functions.aws \ No newline at end of file +spring.cloud.function.scan.packages: com.baeldung.spring.cloudfunction.aws.functions \ No newline at end of file From 103bd4cf6500b8a4b943697981f0180d9a9e5ba1 Mon Sep 17 00:00:00 2001 From: dgcd Date: Sun, 11 Oct 2020 01:23:32 +0300 Subject: [PATCH 232/260] Fixed typos in core-java-9-jigsaw module --- .../com/baeldung/student/service/dbimpl/StudentDbService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-9-jigsaw/src/modules/com.baeldung.student.service.dbimpl/com/baeldung/student/service/dbimpl/StudentDbService.java b/core-java-modules/core-java-9-jigsaw/src/modules/com.baeldung.student.service.dbimpl/com/baeldung/student/service/dbimpl/StudentDbService.java index 2519da085b..617a0a7e70 100644 --- a/core-java-modules/core-java-9-jigsaw/src/modules/com.baeldung.student.service.dbimpl/com/baeldung/student/service/dbimpl/StudentDbService.java +++ b/core-java-modules/core-java-9-jigsaw/src/modules/com.baeldung.student.service.dbimpl/com/baeldung/student/service/dbimpl/StudentDbService.java @@ -19,12 +19,12 @@ public class StudentDbService implements StudentService { } public Student update(Student student) { - logger.log(Level.INFO, "Updating sutdent in DB..."); + logger.log(Level.INFO, "Updating student in DB..."); return student; } public String delete(String registrationId) { - logger.log(Level.INFO, "Deleteing sutdent in DB..."); + logger.log(Level.INFO, "Deleting student in DB..."); return registrationId; } } \ No newline at end of file From cbb0d50370075b4d326eb4248b0d748c2fee2458 Mon Sep 17 00:00:00 2001 From: Mithu Tokder Date: Sun, 11 Oct 2020 23:47:08 +0530 Subject: [PATCH 233/260] updated junit 5 version to latest version --- testing-modules/junit5-annotations/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/testing-modules/junit5-annotations/pom.xml b/testing-modules/junit5-annotations/pom.xml index 9e51d0ab55..7ffc17c69b 100644 --- a/testing-modules/junit5-annotations/pom.xml +++ b/testing-modules/junit5-annotations/pom.xml @@ -55,8 +55,8 @@ - 5.6.2 - 1.6.0 + 5.7.0 + 1.7.0 2.8.2 3.11.1 From 4c748f7a23f80242656cd3574dded30459d8f2ae Mon Sep 17 00:00:00 2001 From: Cristian Stancalau Date: Mon, 12 Oct 2020 16:35:24 +0300 Subject: [PATCH 234/260] =?UTF-8?q?Explanation=20of=20=E2=80=9CClassCastEx?= =?UTF-8?q?ception=E2=80=9D=20in=20Java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../exceptions/classcastexception/Main.java | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java new file mode 100644 index 0000000000..ef891ccde6 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java @@ -0,0 +1,97 @@ +package com.baeldung.exceptions.classcastexception; + +import java.io.Serializable; + +public class Main { + + public static void main(String[] args) { + + checkedCasts(); + uncheckedConversion(); + genericConversion(); + } + + private static void checkedCasts() { + + Animal animal = new Frog(); + + try { + Mammal mammal = (Mammal) animal; + } catch (ClassCastException e) { + System.out.println("A checked downcast to Mammal is incompatible from Frog because Frog is not a subtype of Mammal."); + } + + try { + Serializable serial = (Serializable) animal; + } catch (ClassCastException e) { + System.out.println("A checked cast to Serializable is incompatible from Frog because Frog is not a subtype of Serializable."); + } + + Object primitives = new int[1]; + + try { + Integer[] integers = (Integer[]) primitives; + } catch (ClassCastException e) { + System.out.println("A checked cast to Integer[] is incompatible from primitive arrays. Auto-boxing does not work for arrays."); + } + + try { + long[] longs = (long[]) primitives; + } catch (ClassCastException e) { + System.out.println("A checked cast to long[] is incompatible from int[]. Type promotion does not work for arrays."); + } + } + + private static void uncheckedConversion() { + Box originalBox = new Box<>(); + Box raw = originalBox; + raw.setContent(2.5); + Box bound = (Box) raw; + try { + Long content = bound.getContent(); + } catch (ClassCastException e) { + System.out.println("An incompatible element was found in the raw box."); + } + } + + private static void genericConversion() { + try { + String shouldBeNull = convertInstanceOfObject(123); + } catch (ClassCastException e) { + System.out.println("Should have been null, but due to type erasure, inside convertInstanceOfObject, " + + "it will attempt to cast to Object instead of String, so it casts to Object, which is always possible."); + } + } + + public static T convertInstanceOfObject(Object o) { + try { + return (T) o; + } catch (ClassCastException e) { + return null; + } + } + + public interface Animal { + } + + public static class Reptile implements Animal { + } + + public static class Frog extends Reptile { + } + + public static class Mammal implements Animal { + } + + public static class Box { + private T content; + + public T getContent() { + return content; + } + + public void setContent(T content) { + this.content = content; + } + } +} From 6a82d1cde60aeca86944d3ce7a86346ba93ee389 Mon Sep 17 00:00:00 2001 From: Cristian Stancalau Date: Mon, 12 Oct 2020 16:37:08 +0300 Subject: [PATCH 235/260] Reformat --- .../com/baeldung/exceptions/classcastexception/Main.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java index ef891ccde6..a92c9c6d74 100644 --- a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java @@ -5,16 +5,13 @@ import java.io.Serializable; public class Main { public static void main(String[] args) { - checkedCasts(); uncheckedConversion(); genericConversion(); } private static void checkedCasts() { - Animal animal = new Frog(); - try { Mammal mammal = (Mammal) animal; } catch (ClassCastException e) { @@ -28,7 +25,6 @@ public class Main { } Object primitives = new int[1]; - try { Integer[] integers = (Integer[]) primitives; } catch (ClassCastException e) { @@ -94,4 +90,5 @@ public class Main { this.content = content; } } + } From 453327db2b1385477d8d4d3982156dd1bcd937dd Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Mon, 12 Oct 2020 18:49:59 +0200 Subject: [PATCH 236/260] Upgrade Gatling versions --- testing-modules/load-testing-comparison/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/testing-modules/load-testing-comparison/pom.xml b/testing-modules/load-testing-comparison/pom.xml index adc768b563..55e94379db 100644 --- a/testing-modules/load-testing-comparison/pom.xml +++ b/testing-modules/load-testing-comparison/pom.xml @@ -117,10 +117,10 @@ 1.8 1.8 UTF-8 - 2.11.12 - 2.2.5 - 3.2.2 - 2.2.1 + 2.12.12 + 3.4.0 + 4.4.0 + 3.1.0 5.0 From c608c133f64b708b4fa3dcc6afba60723c1080ea Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Mon, 12 Oct 2020 18:50:26 +0200 Subject: [PATCH 237/260] Remove extra headers as the other tools don't set them and that's extra traffic --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 5 ----- 1 file changed, 5 deletions(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index 15d86ebedb..050c99d9d4 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -10,11 +10,6 @@ class RewardsScenario extends Simulation { def randCustId() = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10000) val httpProtocol = http.baseUrl("http://localhost:8080") - .acceptHeader("text/html,application/json;q=0.9,*/*;q=0.8") - .doNotTrackHeader("1") - .acceptLanguageHeader("en-US,en;q=0.5") - .acceptEncodingHeader("gzip, deflate") - .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") val scn = scenario("RewardsScenario") .repeat(100){ From 024da8003bb3c445e32b8d57bed5edd6a756dcbb Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Mon, 12 Oct 2020 18:51:09 +0200 Subject: [PATCH 238/260] Remove RNG upper bound like in Grinder test to avoid race condition in application under test --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index 050c99d9d4..540e40a225 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -7,7 +7,7 @@ import scala.concurrent.duration._ class RewardsScenario extends Simulation { - def randCustId() = java.util.concurrent.ThreadLocalRandom.current().nextInt(1, 10000) + def randCustId() = java.util.concurrent.ThreadLocalRandom.current().nextInt() val httpProtocol = http.baseUrl("http://localhost:8080") From 775f790d1d3f6a19db6a1521a3d5d7c22264e950 Mon Sep 17 00:00:00 2001 From: Amit Pandey Date: Mon, 12 Oct 2020 23:37:44 +0530 Subject: [PATCH 239/260] renamed junit test case to manual test case (#10154) --- .../{OpenfeignUnitTest.java => OpenfeignManualTest.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spring-cloud/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/{OpenfeignUnitTest.java => OpenfeignManualTest.java} (100%) diff --git a/spring-cloud/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/OpenfeignUnitTest.java b/spring-cloud/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/OpenfeignManualTest.java similarity index 100% rename from spring-cloud/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/OpenfeignUnitTest.java rename to spring-cloud/spring-cloud-openfeign/src/test/java/com/baeldung/cloud/openfeign/OpenfeignManualTest.java From 450614d511d5d3c2ce42b78cc9881d9b60ffc5c3 Mon Sep 17 00:00:00 2001 From: Loredana Date: Tue, 13 Oct 2020 16:44:18 +0300 Subject: [PATCH 240/260] update loops count JAVA-2603 --- .../src/main/resources/scripts/Gatling/GatlingScenario.scala | 2 +- .../src/main/resources/scripts/JMeter/Test Plan.jmx | 4 ++-- .../src/main/resources/scripts/The Grinder/grinder.properties | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index 540e40a225..fc639881f5 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -12,7 +12,7 @@ class RewardsScenario extends Simulation { val httpProtocol = http.baseUrl("http://localhost:8080") val scn = scenario("RewardsScenario") - .repeat(100){ + .repeat(1000){ exec(http("transactions_add") .post("/transactions/add/") diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx b/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx index 413a8d3387..cbb036b77b 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/JMeter/Test Plan.jmx @@ -16,7 +16,7 @@ continue false - 100 + 1000 100 0 @@ -200,7 +200,7 @@ - 10000 + 9223372036854775806 1 false diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties index f256f5a7dd..ca5969cb7a 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/The Grinder/grinder.properties @@ -1,5 +1,5 @@ grinder.script = grinder.py grinder.threads = 100 grinder.processes = 1 -grinder.runs = 100 +grinder.runs = 1000 grinder.logDirectory = /logs From 3e25eae6513fe63ea36ec29995aeba263ec05f59 Mon Sep 17 00:00:00 2001 From: mikr Date: Tue, 13 Oct 2020 18:46:25 +0200 Subject: [PATCH 241/260] JAVA-2136 Fix integration test in spring-jersey module --- spring-jersey/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-jersey/pom.xml b/spring-jersey/pom.xml index 3c84e9c11e..50d377b73f 100644 --- a/spring-jersey/pom.xml +++ b/spring-jersey/pom.xml @@ -226,7 +226,7 @@ 4.4.9 4.5.5 4.0.0 - 2.25.1 + 2.27.2 3.10.0 1.5.10.RELEASE From 5a05897688ce4c64c02f2fc35cb3d4640ed49974 Mon Sep 17 00:00:00 2001 From: Loredana Date: Wed, 14 Oct 2020 16:16:17 +0300 Subject: [PATCH 242/260] revert explicit junit, maven version overrides for boot projects --- persistence-modules/flyway-repair/pom.xml | 4 ---- persistence-modules/flyway/pom.xml | 4 ---- persistence-modules/r2dbc/pom.xml | 4 ---- persistence-modules/redis/pom.xml | 4 ---- persistence-modules/spring-boot-mysql/pom.xml | 4 ---- persistence-modules/spring-boot-persistence-h2/pom.xml | 4 ---- .../spring-boot-persistence-mongodb/pom.xml | 4 ---- persistence-modules/spring-boot-persistence/pom.xml | 5 ----- persistence-modules/spring-data-cassandra-reactive/pom.xml | 4 ---- persistence-modules/spring-data-cassandra/pom.xml | 4 ---- persistence-modules/spring-data-cosmosdb/pom.xml | 4 ---- persistence-modules/spring-data-dynamodb/pom.xml | 5 ----- persistence-modules/spring-data-elasticsearch/pom.xml | 5 ----- persistence-modules/spring-data-jdbc/pom.xml | 4 ---- persistence-modules/spring-data-jpa-annotations/pom.xml | 4 ---- persistence-modules/spring-data-jpa-crud/pom.xml | 5 ----- persistence-modules/spring-data-jpa-enterprise/pom.xml | 4 ---- persistence-modules/spring-data-jpa-filtering/pom.xml | 4 ---- persistence-modules/spring-data-jpa-query-2/pom.xml | 4 ---- persistence-modules/spring-data-jpa-query/pom.xml | 4 ---- persistence-modules/spring-data-jpa-repo-2/pom.xml | 4 ---- persistence-modules/spring-data-jpa-repo/pom.xml | 5 +---- persistence-modules/spring-data-keyvalue/pom.xml | 5 +---- persistence-modules/spring-data-mongodb/pom.xml | 4 ---- persistence-modules/spring-data-redis/pom.xml | 5 ----- persistence-modules/spring-data-solr/pom.xml | 4 ---- persistence-modules/spring-jdbc/pom.xml | 7 ------- 27 files changed, 2 insertions(+), 116 deletions(-) diff --git a/persistence-modules/flyway-repair/pom.xml b/persistence-modules/flyway-repair/pom.xml index 82e5d705f9..2c283cfc04 100644 --- a/persistence-modules/flyway-repair/pom.xml +++ b/persistence-modules/flyway-repair/pom.xml @@ -76,10 +76,6 @@ src/main/resources/application-${spring-boot.run.profiles}.properties - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/flyway/pom.xml b/persistence-modules/flyway/pom.xml index 2379f996d7..c4a3363bdc 100644 --- a/persistence-modules/flyway/pom.xml +++ b/persistence-modules/flyway/pom.xml @@ -66,10 +66,6 @@ 5.2.3 5.0.2 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/r2dbc/pom.xml b/persistence-modules/r2dbc/pom.xml index 7083eea64d..01f1b351cd 100644 --- a/persistence-modules/r2dbc/pom.xml +++ b/persistence-modules/r2dbc/pom.xml @@ -69,10 +69,6 @@ 0.8.1.RELEASE 1.4.200 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/redis/pom.xml b/persistence-modules/redis/pom.xml index 9e00566767..fa82bebc64 100644 --- a/persistence-modules/redis/pom.xml +++ b/persistence-modules/redis/pom.xml @@ -62,10 +62,6 @@ 3.3.0 4.1.50.Final - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-boot-mysql/pom.xml b/persistence-modules/spring-boot-mysql/pom.xml index 9b8c6d0028..834d1d1e64 100644 --- a/persistence-modules/spring-boot-mysql/pom.xml +++ b/persistence-modules/spring-boot-mysql/pom.xml @@ -40,10 +40,6 @@ 8.0.12 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-boot-persistence-h2/pom.xml b/persistence-modules/spring-boot-persistence-h2/pom.xml index 23520a3fda..c06c35cfee 100644 --- a/persistence-modules/spring-boot-persistence-h2/pom.xml +++ b/persistence-modules/spring-boot-persistence-h2/pom.xml @@ -47,10 +47,6 @@ com.baeldung.h2db.demo.server.SpringBootApp 1.0.4 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-boot-persistence-mongodb/pom.xml b/persistence-modules/spring-boot-persistence-mongodb/pom.xml index 69ef09356d..5167483aa3 100644 --- a/persistence-modules/spring-boot-persistence-mongodb/pom.xml +++ b/persistence-modules/spring-boot-persistence-mongodb/pom.xml @@ -37,9 +37,5 @@ - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence/pom.xml b/persistence-modules/spring-boot-persistence/pom.xml index b034f6dad9..9e44a7b9c1 100644 --- a/persistence-modules/spring-boot-persistence/pom.xml +++ b/persistence-modules/spring-boot-persistence/pom.xml @@ -76,11 +76,6 @@ 2.23.0 2.0.1.Final - - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-cassandra-reactive/pom.xml b/persistence-modules/spring-data-cassandra-reactive/pom.xml index 42329e03f0..f2f71bceac 100644 --- a/persistence-modules/spring-data-cassandra-reactive/pom.xml +++ b/persistence-modules/spring-data-cassandra-reactive/pom.xml @@ -54,10 +54,6 @@ 2.2.6.RELEASE 3.11.2.0 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-cassandra/pom.xml b/persistence-modules/spring-data-cassandra/pom.xml index a56d067a05..9de1cbf20e 100644 --- a/persistence-modules/spring-data-cassandra/pom.xml +++ b/persistence-modules/spring-data-cassandra/pom.xml @@ -105,10 +105,6 @@ 2.1.9.2 2.0-0 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-cosmosdb/pom.xml b/persistence-modules/spring-data-cosmosdb/pom.xml index 0f9e8ac72f..19a66648b2 100644 --- a/persistence-modules/spring-data-cosmosdb/pom.xml +++ b/persistence-modules/spring-data-cosmosdb/pom.xml @@ -17,10 +17,6 @@ 1.8 2.3.0 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-dynamodb/pom.xml b/persistence-modules/spring-data-dynamodb/pom.xml index 0f4b578088..377e35b635 100644 --- a/persistence-modules/spring-data-dynamodb/pom.xml +++ b/persistence-modules/spring-data-dynamodb/pom.xml @@ -182,11 +182,6 @@ 1.11.86 https://s3-us-west-2.amazonaws.com/dynamodb-local/release 3.1.1 - - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-elasticsearch/pom.xml b/persistence-modules/spring-data-elasticsearch/pom.xml index c94962d39d..6a983145ee 100644 --- a/persistence-modules/spring-data-elasticsearch/pom.xml +++ b/persistence-modules/spring-data-elasticsearch/pom.xml @@ -69,10 +69,5 @@ 1.2.47 0.7 1.15.0 - - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jdbc/pom.xml b/persistence-modules/spring-data-jdbc/pom.xml index eca8037e20..15f8d7fb95 100644 --- a/persistence-modules/spring-data-jdbc/pom.xml +++ b/persistence-modules/spring-data-jdbc/pom.xml @@ -28,9 +28,5 @@ - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-jpa-annotations/pom.xml b/persistence-modules/spring-data-jpa-annotations/pom.xml index ea2fe34f3c..ff30790eaf 100644 --- a/persistence-modules/spring-data-jpa-annotations/pom.xml +++ b/persistence-modules/spring-data-jpa-annotations/pom.xml @@ -73,10 +73,6 @@ 42.2.5 21.0 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-crud/pom.xml b/persistence-modules/spring-data-jpa-crud/pom.xml index 44944298e0..1708d14fc2 100644 --- a/persistence-modules/spring-data-jpa-crud/pom.xml +++ b/persistence-modules/spring-data-jpa-crud/pom.xml @@ -66,11 +66,6 @@ 1.4.1 21.0 1.12.2 - - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-jpa-enterprise/pom.xml b/persistence-modules/spring-data-jpa-enterprise/pom.xml index 9ecab5feaa..7ff2f00fdf 100644 --- a/persistence-modules/spring-data-jpa-enterprise/pom.xml +++ b/persistence-modules/spring-data-jpa-enterprise/pom.xml @@ -99,10 +99,6 @@ 21.0 1.12.2 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-jpa-filtering/pom.xml b/persistence-modules/spring-data-jpa-filtering/pom.xml index 7448a5a818..25ef68fe4c 100644 --- a/persistence-modules/spring-data-jpa-filtering/pom.xml +++ b/persistence-modules/spring-data-jpa-filtering/pom.xml @@ -73,10 +73,6 @@ 42.2.5 21.0 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-query-2/pom.xml b/persistence-modules/spring-data-jpa-query-2/pom.xml index abac7b28da..282a1ff83a 100644 --- a/persistence-modules/spring-data-jpa-query-2/pom.xml +++ b/persistence-modules/spring-data-jpa-query-2/pom.xml @@ -84,10 +84,6 @@ - - 2.22.2 - 5.6.2 - 4.13 9.0.0.M26 1.1 21.0 diff --git a/persistence-modules/spring-data-jpa-query/pom.xml b/persistence-modules/spring-data-jpa-query/pom.xml index fe42d4b595..1576fd729d 100644 --- a/persistence-modules/spring-data-jpa-query/pom.xml +++ b/persistence-modules/spring-data-jpa-query/pom.xml @@ -44,10 +44,6 @@ 1.4.1 - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo-2/pom.xml b/persistence-modules/spring-data-jpa-repo-2/pom.xml index 98ecdc6645..3be1068d8c 100644 --- a/persistence-modules/spring-data-jpa-repo-2/pom.xml +++ b/persistence-modules/spring-data-jpa-repo-2/pom.xml @@ -44,9 +44,5 @@ 29.0-jre - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-repo/pom.xml b/persistence-modules/spring-data-jpa-repo/pom.xml index 07514e9771..16a214fd7f 100644 --- a/persistence-modules/spring-data-jpa-repo/pom.xml +++ b/persistence-modules/spring-data-jpa-repo/pom.xml @@ -50,9 +50,6 @@ - - 2.22.2 - 5.6.2 - 4.13 + \ No newline at end of file diff --git a/persistence-modules/spring-data-keyvalue/pom.xml b/persistence-modules/spring-data-keyvalue/pom.xml index 190d6c7445..3aaee2f00c 100644 --- a/persistence-modules/spring-data-keyvalue/pom.xml +++ b/persistence-modules/spring-data-keyvalue/pom.xml @@ -29,9 +29,6 @@ - - 2.22.2 - 5.6.2 - 4.13 + \ No newline at end of file diff --git a/persistence-modules/spring-data-mongodb/pom.xml b/persistence-modules/spring-data-mongodb/pom.xml index a3a81fe450..448b635667 100644 --- a/persistence-modules/spring-data-mongodb/pom.xml +++ b/persistence-modules/spring-data-mongodb/pom.xml @@ -108,10 +108,6 @@ 3.2.0.RELEASE 4.0.5 - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-redis/pom.xml b/persistence-modules/spring-data-redis/pom.xml index 34674dc223..d271df31c7 100644 --- a/persistence-modules/spring-data-redis/pom.xml +++ b/persistence-modules/spring-data-redis/pom.xml @@ -98,11 +98,6 @@ 3.2.4 0.10.0 0.6 - - - 2.22.2 - 5.6.2 - 4.13 diff --git a/persistence-modules/spring-data-solr/pom.xml b/persistence-modules/spring-data-solr/pom.xml index 94a796c466..38b5bf8238 100644 --- a/persistence-modules/spring-data-solr/pom.xml +++ b/persistence-modules/spring-data-solr/pom.xml @@ -46,10 +46,6 @@ 2.0.5.RELEASE - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file diff --git a/persistence-modules/spring-jdbc/pom.xml b/persistence-modules/spring-jdbc/pom.xml index 77200cd66e..8a5786e1a5 100644 --- a/persistence-modules/spring-jdbc/pom.xml +++ b/persistence-modules/spring-jdbc/pom.xml @@ -18,7 +18,6 @@ org.springframework.data spring-data-jdbc - ${spring-data-jdbc.version} org.springframework.boot @@ -36,11 +35,5 @@ - 2.0.3.RELEASE - - - 2.22.2 - 5.6.2 - 4.13 \ No newline at end of file From e3dc0a40d4b16e8bd49d35813f4857f9ef0faff5 Mon Sep 17 00:00:00 2001 From: Loredana Date: Wed, 14 Oct 2020 16:24:30 +0300 Subject: [PATCH 243/260] revert explicit junit, maven version overrides for boot projects --- ddd/pom.xml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/ddd/pom.xml b/ddd/pom.xml index a67719f8a6..7d03208802 100644 --- a/ddd/pom.xml +++ b/ddd/pom.xml @@ -104,16 +104,12 @@ org.apache.maven.plugins maven-surefire-plugin - ${maven-surefire-plugin.version} - 2.22.2 - 1.0.1 - 5.6.2 From af0db9610ed916123ddc695266effbb81793203f Mon Sep 17 00:00:00 2001 From: Cristian Stancalau Date: Wed, 14 Oct 2020 18:22:32 +0300 Subject: [PATCH 244/260] Fix review suggestions. --- .../exceptions/classcastexception/Animal.java | 6 ++ .../exceptions/classcastexception/Box.java | 14 +++ .../exceptions/classcastexception/Frog.java | 9 ++ .../exceptions/classcastexception/Main.java | 94 ------------------- .../exceptions/classcastexception/Mammal.java | 9 ++ .../classcastexception/Reptile.java | 9 ++ .../CheckedCastsUnitTest.java | 40 ++++++++ .../GenericConversionUnitTest.java | 21 +++++ .../UncheckedConversionUnitTest.java | 17 ++++ 9 files changed, 125 insertions(+), 94 deletions(-) create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Animal.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Box.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Frog.java delete mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Mammal.java create mode 100644 core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Reptile.java create mode 100644 core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/CheckedCastsUnitTest.java create mode 100644 core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/GenericConversionUnitTest.java create mode 100644 core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/UncheckedConversionUnitTest.java diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Animal.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Animal.java new file mode 100644 index 0000000000..b57f68f053 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Animal.java @@ -0,0 +1,6 @@ +package com.baeldung.exceptions.classcastexception; + +public interface Animal { + + String getName(); +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Box.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Box.java new file mode 100644 index 0000000000..bb67407218 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Box.java @@ -0,0 +1,14 @@ +package com.baeldung.exceptions.classcastexception; + +public class Box { + + private T content; + + public T getContent() { + return content; + } + + public void setContent(T content) { + this.content = content; + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Frog.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Frog.java new file mode 100644 index 0000000000..0a0b2d1f63 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Frog.java @@ -0,0 +1,9 @@ +package com.baeldung.exceptions.classcastexception; + +public class Frog extends Reptile { + + @Override + public String getName() { + return super.getName() + ": Frog"; + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java deleted file mode 100644 index a92c9c6d74..0000000000 --- a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Main.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.baeldung.exceptions.classcastexception; - -import java.io.Serializable; - -public class Main { - - public static void main(String[] args) { - checkedCasts(); - uncheckedConversion(); - genericConversion(); - } - - private static void checkedCasts() { - Animal animal = new Frog(); - try { - Mammal mammal = (Mammal) animal; - } catch (ClassCastException e) { - System.out.println("A checked downcast to Mammal is incompatible from Frog because Frog is not a subtype of Mammal."); - } - - try { - Serializable serial = (Serializable) animal; - } catch (ClassCastException e) { - System.out.println("A checked cast to Serializable is incompatible from Frog because Frog is not a subtype of Serializable."); - } - - Object primitives = new int[1]; - try { - Integer[] integers = (Integer[]) primitives; - } catch (ClassCastException e) { - System.out.println("A checked cast to Integer[] is incompatible from primitive arrays. Auto-boxing does not work for arrays."); - } - - try { - long[] longs = (long[]) primitives; - } catch (ClassCastException e) { - System.out.println("A checked cast to long[] is incompatible from int[]. Type promotion does not work for arrays."); - } - } - - private static void uncheckedConversion() { - Box originalBox = new Box<>(); - Box raw = originalBox; - raw.setContent(2.5); - Box bound = (Box) raw; - try { - Long content = bound.getContent(); - } catch (ClassCastException e) { - System.out.println("An incompatible element was found in the raw box."); - } - } - - private static void genericConversion() { - try { - String shouldBeNull = convertInstanceOfObject(123); - } catch (ClassCastException e) { - System.out.println("Should have been null, but due to type erasure, inside convertInstanceOfObject, " + - "it will attempt to cast to Object instead of String, so it casts to Object, which is always possible."); - } - } - - public static T convertInstanceOfObject(Object o) { - try { - return (T) o; - } catch (ClassCastException e) { - return null; - } - } - - public interface Animal { - } - - public static class Reptile implements Animal { - } - - public static class Frog extends Reptile { - } - - public static class Mammal implements Animal { - } - - public static class Box { - private T content; - - public T getContent() { - return content; - } - - public void setContent(T content) { - this.content = content; - } - } - -} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Mammal.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Mammal.java new file mode 100644 index 0000000000..2723cc5b7b --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Mammal.java @@ -0,0 +1,9 @@ +package com.baeldung.exceptions.classcastexception; + +public class Mammal implements Animal { + + @Override + public String getName() { + return "Mammal"; + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Reptile.java b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Reptile.java new file mode 100644 index 0000000000..ed4b0273e5 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/main/java/com/baeldung/exceptions/classcastexception/Reptile.java @@ -0,0 +1,9 @@ +package com.baeldung.exceptions.classcastexception; + +public class Reptile implements Animal { + + @Override + public String getName() { + return "Reptile"; + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/CheckedCastsUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/CheckedCastsUnitTest.java new file mode 100644 index 0000000000..7fac000fa8 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/CheckedCastsUnitTest.java @@ -0,0 +1,40 @@ +package com.baeldung.exceptions.classcastexception; + +import org.junit.Test; + +import java.io.Serializable; + +public class CheckedCastsUnitTest { + + @Test(expected = ClassCastException.class) + public void givenBaseTypeVariableReferencingChildInstance_whenCastToIncompatibleSubtype_thenClassCastException() { + Animal animal = new Frog(); + + //A checked downcast to Mammal is incompatible from Frog because Frog is not a subtype of Mammal. + Mammal mammal = (Mammal) animal; + } + + @Test(expected = ClassCastException.class) + public void givenBaseTypeVariableReferencingChildInstance_whenCastToIncompatibleInterface_thenClassCastException() { + Animal animal = new Frog(); + + //A checked cast to Serializable is incompatible from Frog because Frog is not a subtype of Serializable. + Serializable serial = (Serializable) animal; + } + + @Test(expected = ClassCastException.class) + public void givenObjectVariableReferencingPrimitiveArray_whenCastToBoxedTypeArray_thenClassCastException() { + Object primitives = new int[1]; + + //A checked cast to Integer[] is incompatible from primitive arrays. Auto-boxing does not work for arrays. + Integer[] integers = (Integer[]) primitives; + } + + @Test(expected = ClassCastException.class) + public void givenObjectVariableReferencingPrimitiveArray_whenCastToPromotedTypeArray_thenClassCastException() { + Object primitives = new int[1]; + + //A checked cast to long[] is incompatible from int[]. Type promotion does not work for arrays. + long[] longs = (long[]) primitives; + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/GenericConversionUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/GenericConversionUnitTest.java new file mode 100644 index 0000000000..027ece2db7 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/GenericConversionUnitTest.java @@ -0,0 +1,21 @@ +package com.baeldung.exceptions.classcastexception; + +import org.junit.Test; + +public class GenericConversionUnitTest { + + @Test(expected = ClassCastException.class) + public void givenIncompatibleType_whenConvertInstanceOfObject_thenClassCastException() { + // Should have been null, but due to type erasure, inside convertInstanceOfObject, + // it will attempt to cast to Object instead of String, so it casts to Object, which is always possible. + String shouldBeNull = convertInstanceOfObject(123); + } + + public static T convertInstanceOfObject(Object o) { + try { + return (T) o; // Casts to Object due to type erasure + } catch (ClassCastException e) { + return null; // Will never reach this + } + } +} diff --git a/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/UncheckedConversionUnitTest.java b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/UncheckedConversionUnitTest.java new file mode 100644 index 0000000000..60e7d5a147 --- /dev/null +++ b/core-java-modules/core-java-exceptions-3/src/test/java/com/baeldung/exceptions/classcastexception/UncheckedConversionUnitTest.java @@ -0,0 +1,17 @@ +package com.baeldung.exceptions.classcastexception; + +import org.junit.Test; + +public class UncheckedConversionUnitTest { + + @Test(expected = ClassCastException.class) + public void givenPollutedGenericType_whenGetProperty_thenClassCastException() { + Box originalBox = new Box<>(); + Box raw = originalBox; + raw.setContent(2.5); + Box bound = (Box) raw; + + //An incompatible element was found in the raw box. + Long content = bound.getContent(); + } +} From 84d2b3a0f532302c36e05475859fb42ecfae39bf Mon Sep 17 00:00:00 2001 From: Stephane Landelle Date: Thu, 15 Oct 2020 16:26:35 +0200 Subject: [PATCH 245/260] Fix JSON payloads in the Gatling script Motivation: Ids are numbers (Integers), not Strings. Modifications: Remove wrong wrapping double quotes. Result: Less parsing overhead on the server side. --- .../main/resources/scripts/Gatling/GatlingScenario.scala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala index fc639881f5..e8cc608e42 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala +++ b/testing-modules/load-testing-comparison/src/main/resources/scripts/Gatling/GatlingScenario.scala @@ -16,7 +16,7 @@ class RewardsScenario extends Simulation { exec(http("transactions_add") .post("/transactions/add/") - .body(StringBody(_ => s"""{ "customerRewardsId":null,"customerId":"${randCustId()}","transactionDate":null }""")).asJson + .body(StringBody(_ => s"""{"customerRewardsId":null,"customerId":${randCustId()},"transactionDate":null}""")).asJson .check(jsonPath("$.id").saveAs("txnId")) .check(jsonPath("$.transactionDate").saveAs("txtDate")) .check(jsonPath("$.customerId").saveAs("custId"))) @@ -28,13 +28,13 @@ class RewardsScenario extends Simulation { .doIf("${rwdId.isUndefined()}"){ exec(http("rewards_add") .post("/rewards/add") - .body(StringBody("""{ "customerId": "${custId}" }""")).asJson + .body(StringBody("""{"customerId":${custId}}""")).asJson .check(jsonPath("$.id").saveAs("rwdId"))) } .exec(http("transactions_update") .post("/transactions/add/") - .body(StringBody("""{ "customerRewardsId":"${rwdId}","customerId":"${custId}","transactionDate":"${txtDate}" }""")).asJson) + .body(StringBody("""{"customerRewardsId":${rwdId},"customerId":${custId},"transactionDate":"${txtDate}" }""")).asJson) .exec(http("get_transactions") .get("/transactions/findAll/${rwdId}")) From 43feef5b42e2d11b27cd87706ed828bb60dee46e Mon Sep 17 00:00:00 2001 From: Loredana Date: Thu, 15 Oct 2020 19:03:52 +0300 Subject: [PATCH 246/260] add indexes to jpa entities --- testing-modules/load-testing-comparison/pom.xml | 2 -- .../baeldung/loadtesting/model/CustomerRewardsAccount.java | 3 +++ .../main/java/com/baeldung/loadtesting/model/Transaction.java | 4 ++++ .../src/main/resources/application.properties | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/testing-modules/load-testing-comparison/pom.xml b/testing-modules/load-testing-comparison/pom.xml index 55e94379db..4c237aeb75 100644 --- a/testing-modules/load-testing-comparison/pom.xml +++ b/testing-modules/load-testing-comparison/pom.xml @@ -37,7 +37,6 @@ com.fasterxml.jackson.core jackson-databind - ${jackson.version} org.springframework.boot @@ -72,7 +71,6 @@ org.springframework.boot spring-boot-maven-plugin - 2.0.5.RELEASE diff --git a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java index 0599020700..4d92c93fcb 100644 --- a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java +++ b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/CustomerRewardsAccount.java @@ -4,8 +4,11 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.Table; @Entity +@Table(indexes = {@Index(columnList="customerId")}) public class CustomerRewardsAccount { @Id diff --git a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java index 1a6e0d4360..6e2fb39cc6 100644 --- a/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java +++ b/testing-modules/load-testing-comparison/src/main/java/com/baeldung/loadtesting/model/Transaction.java @@ -4,10 +4,14 @@ import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Index; +import javax.persistence.Table; + import java.util.Date; import java.util.Calendar; @Entity +@Table(indexes = {@Index(columnList="customerRewardsId")}) public class Transaction { @Id diff --git a/testing-modules/load-testing-comparison/src/main/resources/application.properties b/testing-modules/load-testing-comparison/src/main/resources/application.properties index 424d3d0290..e2c8cb1879 100644 --- a/testing-modules/load-testing-comparison/src/main/resources/application.properties +++ b/testing-modules/load-testing-comparison/src/main/resources/application.properties @@ -2,6 +2,6 @@ spring.h2.console.enabled=true spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa -spring.datasource.password=password +spring.datasource.password= spring.jpa.database-platform=org.hibernate.dialect.H2Dialect From 470d4efde85784f1c9e33d3c2947ca00d6607ca6 Mon Sep 17 00:00:00 2001 From: Adrian Maghear Date: Fri, 16 Oct 2020 13:07:22 +0200 Subject: [PATCH 247/260] [BAEL-3600] add integration test --- netflix-modules/mantis/pom.xml | 14 ++++ .../netflix/mantis/job/LogAggregationJob.java | 9 ++- .../netflix/mantis/job/LogCollectingJob.java | 11 ++- .../netflix/mantis/model/LogAggregate.java | 6 +- .../job/LogAggregationJobIntegrationTest.java | 56 ++++++++++++++ .../job/LogCollectingJobIntegrationTest.java | 73 +++++++++++++++++++ .../netflix/mantis/job/MantisJobTestBase.java | 49 +++++++++++++ 7 files changed, 212 insertions(+), 6 deletions(-) create mode 100644 netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogAggregationJobIntegrationTest.java create mode 100644 netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogCollectingJobIntegrationTest.java create mode 100644 netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/MantisJobTestBase.java diff --git a/netflix-modules/mantis/pom.xml b/netflix-modules/mantis/pom.xml index 48151c142f..5d9611ccdf 100644 --- a/netflix-modules/mantis/pom.xml +++ b/netflix-modules/mantis/pom.xml @@ -52,6 +52,20 @@ 1.18.12 + + org.springframework + spring-webflux + 5.0.9.RELEASE + test + + + + io.projectreactor.netty + reactor-netty + 0.9.12.RELEASE + test + + diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java index 229d11d39d..7fc514deef 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogAggregationJob.java @@ -9,10 +9,17 @@ import io.mantisrx.runtime.Job; import io.mantisrx.runtime.MantisJob; import io.mantisrx.runtime.MantisJobProvider; import io.mantisrx.runtime.Metadata; +import io.mantisrx.runtime.sink.Sink; import io.mantisrx.runtime.sink.Sinks; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; +@NoArgsConstructor +@AllArgsConstructor public class LogAggregationJob extends MantisJobProvider { + private Sink sink = Sinks.eagerSubscribe(Sinks.sse(LogAggregate::toJsonString)); + @Override public Job getJobInstance() { @@ -21,7 +28,7 @@ public class LogAggregationJob extends MantisJobProvider { .stage(new TransformLogStage(), TransformLogStage.stageConfig()) .stage(new GroupLogStage(), GroupLogStage.config()) .stage(new CountLogStage(), CountLogStage.config()) - .sink(Sinks.eagerSubscribe(Sinks.sse(LogAggregate::toJsonString))) + .sink(sink) .metadata(new Metadata.Builder().build()) .create(); diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java index 492f30c43a..34ccf8355a 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/job/LogCollectingJob.java @@ -9,18 +9,23 @@ import io.mantisrx.runtime.MantisJob; import io.mantisrx.runtime.MantisJobProvider; import io.mantisrx.runtime.Metadata; import io.mantisrx.runtime.ScalarToScalar; -import lombok.extern.slf4j.Slf4j; +import io.mantisrx.runtime.sink.Sink; +import lombok.AllArgsConstructor; +import lombok.NoArgsConstructor; -@Slf4j +@NoArgsConstructor +@AllArgsConstructor public class LogCollectingJob extends MantisJobProvider { + private Sink sink = new LogSink(); + @Override public Job getJobInstance() { return MantisJob .source(new RandomLogSource()) .stage(new TransformLogStage(), new ScalarToScalar.Config<>()) - .sink(new LogSink()) + .sink(sink) .metadata(new Metadata.Builder().build()) .create(); diff --git a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java index 0eeb7ea086..e0e3c4f9fa 100644 --- a/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java +++ b/netflix-modules/mantis/src/main/java/com/baeldung/netflix/mantis/model/LogAggregate.java @@ -5,15 +5,17 @@ import com.fasterxml.jackson.databind.ObjectMapper; import io.mantisrx.runtime.codec.JsonType; import lombok.AllArgsConstructor; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter +@NoArgsConstructor @AllArgsConstructor public class LogAggregate implements JsonType { private static final ObjectMapper mapper = new ObjectMapper(); - private final Integer count; - private final String level; + private Integer count; + private String level; public String toJsonString() { try { diff --git a/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogAggregationJobIntegrationTest.java b/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogAggregationJobIntegrationTest.java new file mode 100644 index 0000000000..b9b16e2146 --- /dev/null +++ b/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogAggregationJobIntegrationTest.java @@ -0,0 +1,56 @@ +package com.baeldung.netflix.mantis.job; + +import com.baeldung.netflix.mantis.model.LogAggregate; +import io.mantisrx.runtime.PortRequest; +import io.mantisrx.runtime.sink.Sinks; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import static java.util.Arrays.asList; +import static java.util.Optional.of; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class LogAggregationJobIntegrationTest extends MantisJobTestBase { + + private final static int PORT = 7382; + private final static String SINK_URL = "http://localhost:" + PORT; + + @BeforeAll + static void beforeAll() { + start(new LogAggregationJob((context, portRequest, logAggregateObservable) -> { + logAggregateObservable.subscribe(); + Sinks.sse(LogAggregate::toJsonString).call(context, new PortRequest(PORT), logAggregateObservable); + })); + } + + @Override + public String getSinkUrl() { + return SINK_URL; + } + + @Override + public Class getEventType() { + return LogAggregate.class; + } + + @Test + void whenReadingFromSink_thenShouldRetrieveCorrectNumberOfLogAggregates() { + assertEquals(of(5L), sinkStream.take(5).count().blockOptional()); + } + + @Test + void whenReadingFromSink_thenShouldRetrieveLogAggregate() { + assertNotNull(sinkStream.take(1).blockFirst()); + } + + @Test + void whenReadingFromSink_thenShouldRetrieveValidLogAggregate() { + LogAggregate logAggregate = sinkStream.take(1).blockFirst(); + + assertTrue(asList("ERROR", "WARN", "INFO").contains(logAggregate.getLevel())); + assertTrue(logAggregate.getCount() > 0); + } + +} \ No newline at end of file diff --git a/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogCollectingJobIntegrationTest.java b/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogCollectingJobIntegrationTest.java new file mode 100644 index 0000000000..87e0c194b5 --- /dev/null +++ b/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/LogCollectingJobIntegrationTest.java @@ -0,0 +1,73 @@ +package com.baeldung.netflix.mantis.job; + +import com.baeldung.netflix.mantis.model.LogEvent; +import com.baeldung.netflix.mantis.sink.LogSink; +import io.mantisrx.runtime.Context; +import io.mantisrx.runtime.PortRequest; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import rx.Observable; + +import static java.util.Arrays.asList; +import static java.util.Optional.of; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +class LogCollectingJobIntegrationTest extends MantisJobTestBase { + + private final static int PORT = 7381; + private final static String SINK_URL = "http://localhost:" + PORT; + + @BeforeAll + static void beforeAll() { + + start(new LogCollectingJob(new LogSink() { + + @Override + public void call(Context context, PortRequest portRequest, Observable observable) { + super.call(context, new PortRequest(PORT), observable); + } + + })); + + } + + @Override + public String getSinkUrl() { + return SINK_URL; + } + + @Override + public Class getEventType() { + return LogEvent.class; + } + + @Test + void whenReadingFromSink_thenShouldRetrieveCorrectNumberOfLogEvents() { + assertEquals(of(5L), sinkStream.take(5).count().blockOptional()); + } + + @Test + void whenReadingFromSink_thenShouldRetrieveLogEvent() { + assertNotNull(sinkStream.take(1).blockFirst()); + } + + @Test + void whenReadingFromSink_thenShouldRetrieveValidLogEvent() { + LogEvent logEvent = sinkStream.take(1).blockFirst(); + + assertTrue(asList("ERROR", "WARN", "INFO").contains(logEvent.getLevel())); + assertTrue(asList("login attempt", "user created").contains(logEvent.getMessage())); + } + + @Test + void whenReadingFromSink_thenShouldRetrieveFilteredLogEvents() { + getSinkStream(SINK_URL + "?filter=login") + .take(7) + .toStream().forEach( + logEvent -> assertEquals("login attempt", logEvent.getMessage()) + ); + } + +} \ No newline at end of file diff --git a/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/MantisJobTestBase.java b/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/MantisJobTestBase.java new file mode 100644 index 0000000000..89425299a4 --- /dev/null +++ b/netflix-modules/mantis/src/test/java/com/baeldung/netflix/mantis/job/MantisJobTestBase.java @@ -0,0 +1,49 @@ +package com.baeldung.netflix.mantis.job; + +import io.mantisrx.runtime.Job; +import io.mantisrx.runtime.MantisJobProvider; +import io.mantisrx.runtime.executor.LocalJobExecutorNetworked; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeEach; +import org.springframework.web.reactive.function.client.WebClient; +import reactor.core.publisher.Flux; +import reactor.util.retry.Retry; + +import java.time.Duration; + +public abstract class MantisJobTestBase { + + private static Job jobInstance; + Flux sinkStream; + + public abstract String getSinkUrl(); + public abstract Class getEventType(); + + @BeforeEach + void setUp() { + sinkStream = getSinkStream(getSinkUrl()); + } + + @AfterAll + static void afterAll() { + stopJob(); + } + + protected Flux getSinkStream(String sinkUrl) { + return WebClient.builder().build().get() + .uri(sinkUrl) + .retrieve() + .bodyToFlux(getEventType()) + .retryWhen(Retry.fixedDelay(10, Duration.ofMillis(2000))); + } + + static void start(MantisJobProvider job) { + jobInstance = job.getJobInstance(); + new Thread(() -> LocalJobExecutorNetworked.execute(jobInstance)).start(); + } + + static void stopJob() { + jobInstance.getLifecycle().shutdown(); + } + +} From 5709eee956777f2cbeda0c7721ef6dfdd70c1d25 Mon Sep 17 00:00:00 2001 From: Umang Budhwar Date: Fri, 16 Oct 2020 19:22:25 +0530 Subject: [PATCH 248/260] BAEL-4475 (#10151) * Added code for checking if a class is abstract or not. * Renamed test name as per review comments. * Added code to get database URL from Connection object. * Refactored code to break lines. --- .../core-java-persistence-2/pom.xml | 29 +++++++++++++++++++ .../baeldung/getdburl/DBConfiguration.java | 13 +++++++++ .../getdburl/DBConfigurationUnitTest.java | 18 ++++++++++++ persistence-modules/pom.xml | 1 + 4 files changed, 61 insertions(+) create mode 100644 persistence-modules/core-java-persistence-2/pom.xml create mode 100644 persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/getdburl/DBConfiguration.java create mode 100644 persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/getdburl/DBConfigurationUnitTest.java diff --git a/persistence-modules/core-java-persistence-2/pom.xml b/persistence-modules/core-java-persistence-2/pom.xml new file mode 100644 index 0000000000..9845d5009d --- /dev/null +++ b/persistence-modules/core-java-persistence-2/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + com.baeldung.core-java-persistence-2 + core-java-persistence-2 + 0.1.0-SNAPSHOT + core-java-persistence-2 + jar + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + com.h2database + h2 + ${h2.version} + + + + + 1.4.200 + + + \ No newline at end of file diff --git a/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/getdburl/DBConfiguration.java b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/getdburl/DBConfiguration.java new file mode 100644 index 0000000000..51d3a432ac --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/main/java/com/baeldung/getdburl/DBConfiguration.java @@ -0,0 +1,13 @@ +package com.baeldung.getdburl; + +import java.sql.Connection; +import java.sql.DriverManager; + +public class DBConfiguration { + + public static Connection getConnection() throws Exception { + Class.forName("org.h2.Driver"); + String url = "jdbc:h2:mem:testdb"; + return DriverManager.getConnection(url, "user", "password"); + } +} diff --git a/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/getdburl/DBConfigurationUnitTest.java b/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/getdburl/DBConfigurationUnitTest.java new file mode 100644 index 0000000000..845076f070 --- /dev/null +++ b/persistence-modules/core-java-persistence-2/src/test/java/com/baeldung/getdburl/DBConfigurationUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.getdburl; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.sql.Connection; + +import org.junit.jupiter.api.Test; + +class DBConfigurationUnitTest { + + @Test + void givenConnectionObject_whenExtractMetaData_thenGetDbURL() throws Exception { + Connection connection = DBConfiguration.getConnection(); + String dbUrl = connection.getMetaData().getURL(); + assertEquals("jdbc:h2:mem:testdb", dbUrl); + } + +} diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 05ef14f188..c7905a178d 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -17,6 +17,7 @@ apache-bookkeeper apache-cayenne core-java-persistence + core-java-persistence-2 deltaspike elasticsearch flyway From 1c21d3ed2769d0c54709c38ebeba4c74d4901879 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Fri, 16 Oct 2020 19:14:29 +0300 Subject: [PATCH 249/260] Update MaxSizeConstraintValidator.java --- .../listvalidation/constraint/MaxSizeConstraintValidator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java b/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java index 524e98a39e..409b6e1ab5 100644 --- a/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java +++ b/spring-mvc-basics-3/src/main/java/com/baeldung/validation/listvalidation/constraint/MaxSizeConstraintValidator.java @@ -11,7 +11,7 @@ public class MaxSizeConstraintValidator implements ConstraintValidator values, ConstraintValidatorContext context) { - return values.size()<=4 + return values.size() <= 4; } } From 90c65b053095848c89d659b969839239bfbe28f7 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 17 Oct 2020 12:36:50 +0300 Subject: [PATCH 250/260] fix redis context test --- .../spring/data/redis/config/RedisConfig.java | 1 - .../java/com/baeldung/SpringContextTest.java | 28 +++++++++++++++---- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/config/RedisConfig.java b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/config/RedisConfig.java index 497e1506bd..7fd13d2777 100644 --- a/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/config/RedisConfig.java +++ b/persistence-modules/spring-data-redis/src/main/java/com/baeldung/spring/data/redis/config/RedisConfig.java @@ -5,7 +5,6 @@ import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.PropertySource; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; -import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.ChannelTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; diff --git a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/SpringContextTest.java index 4df0cbd0ad..5167e63721 100644 --- a/persistence-modules/spring-data-redis/src/test/java/com/baeldung/SpringContextTest.java +++ b/persistence-modules/spring-data-redis/src/test/java/com/baeldung/SpringContextTest.java @@ -1,16 +1,32 @@ package com.baeldung; +import org.junit.AfterClass; +import org.junit.BeforeClass; import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.annotation.DirtiesContext.ClassMode; -import com.baeldung.spring.data.redis.config.RedisConfig; +import com.baeldung.spring.data.redis.SpringRedisApplication; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = RedisConfig.class) +import redis.embedded.RedisServerBuilder; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = SpringRedisApplication.class) +@DirtiesContext(classMode = ClassMode.BEFORE_CLASS) public class SpringContextTest { + + private static redis.embedded.RedisServer redisServer; + + @BeforeClass + public static void startRedisServer() { + redisServer = new RedisServerBuilder().port(6379).setting("maxmemory 256M").build(); + redisServer.start(); + } + @AfterClass + public static void stopRedisServer() { + redisServer.stop(); + } @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { } From 7d297f344f7c4a0be17a5652a72448e370107241 Mon Sep 17 00:00:00 2001 From: amdegregorio Date: Sat, 17 Oct 2020 08:28:31 -0400 Subject: [PATCH 251/260] BAEL-4503 PR/article review feedback --- .../constantspatterns/calculations/MathConstants.java | 6 +++--- .../baeldung/constantspatterns/ConstantPatternUnitTest.java | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java index a7ecf7aabe..1c9c4172ca 100644 --- a/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java +++ b/core-java-modules/core-java-lang-3/src/main/java/com/baeldung/constantspatterns/calculations/MathConstants.java @@ -2,9 +2,9 @@ package com.baeldung.constantspatterns.calculations; public final class MathConstants { public static final double PI = 3.14159265359; - public static final double GOLDEN_RATIO = 1.6180; - public static final double GRAVITATIONAL_ACCELERATION = 9.8; - public static final double EULERS_NUMBER = 2.7182818284590452353602874713527; + static final double GOLDEN_RATIO = 1.6180; + static final double GRAVITATIONAL_ACCELERATION = 9.8; + static final double EULERS_NUMBER = 2.7182818284590452353602874713527; public enum Operation { ADD, SUBTRACT, DIVIDE, MULTIPLY diff --git a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java index 39cb8f82f9..ba8f237fd3 100644 --- a/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java +++ b/core-java-modules/core-java-lang-3/src/test/java/com/baeldung/constantspatterns/ConstantPatternUnitTest.java @@ -6,7 +6,7 @@ import org.junit.Test; public class ConstantPatternUnitTest { @Test - public void givenTwoNumbersAndAdd_whenCallingCalculatorOperatOneTwoNumbers_correctAnswerReturned() { + public void givenTwoNumbersAndAdd_whenCallingCalculatorOperatOneTwoNumbers_thenCorrectAnswerReturned() { Calculator calculator = new Calculator(); double expected = 4; double answer = calculator.operateOnTwoNumbers(2, 2, Calculator.Operation.ADD); @@ -14,7 +14,7 @@ public class ConstantPatternUnitTest { } @Test - public void givenTwoNumbersAndAdd_whenCallingGeometryCalculatorOperatOneTwoNumbers_correctAnswerReturned() { + public void givenTwoNumbersAndAdd_whenCallingGeometryCalculatorOperatOneTwoNumbers_thenCorrectAnswerReturned() { GeometryCalculator calculator = new GeometryCalculator(); double expected = 4; double answer = calculator.operateOnTwoNumbers(2, 2, GeometryCalculator.Operation.ADD); From 12dcd4e4bb806aedbd4e2022806450096e9a6ff6 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 17 Oct 2020 16:16:00 +0300 Subject: [PATCH 252/260] exclude logback, add log4j config file --- spring-boot-modules/spring-boot-mvc-birt/pom.xml | 16 +++++----------- .../src/main/resources/log4j.properties | 9 +++++++++ 2 files changed, 14 insertions(+), 11 deletions(-) create mode 100644 spring-boot-modules/spring-boot-mvc-birt/src/main/resources/log4j.properties diff --git a/spring-boot-modules/spring-boot-mvc-birt/pom.xml b/spring-boot-modules/spring-boot-mvc-birt/pom.xml index 0ab744bb26..1e3075dc2d 100644 --- a/spring-boot-modules/spring-boot-mvc-birt/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-birt/pom.xml @@ -5,10 +5,10 @@ 4.0.0 - com.baeldung.spring-boot-modules - spring-boot-modules - 1.0.0-SNAPSHOT - ../ + org.springframework.boot + spring-boot-starter-parent + 2.1.1.RELEASE + spring-boot-mvc-birt @@ -19,10 +19,6 @@ Module For Spring Boot Integration with BIRT - - org.springframework.boot - spring-boot-starter - org.springframework.boot @@ -51,17 +47,14 @@ org.eclipse.birt.runtime_4.8.0-20180626 ${eclipse.birt.runtime.version} - log4j log4j ${log4j.version} - org.projectlombok lombok - ${lombok.version} provided @@ -81,6 +74,7 @@ 1.8 1.8 4.8.0 + 1.2.17 diff --git a/spring-boot-modules/spring-boot-mvc-birt/src/main/resources/log4j.properties b/spring-boot-modules/spring-boot-mvc-birt/src/main/resources/log4j.properties new file mode 100644 index 0000000000..e4fcb01308 --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-birt/src/main/resources/log4j.properties @@ -0,0 +1,9 @@ +# Set root logger level to DEBUG and its only appender to A1. +log4j.rootLogger=DEBUG, A1 + +# A1 is set to be a ConsoleAppender. +log4j.appender.A1=org.apache.log4j.ConsoleAppender + +# A1 uses PatternLayout. +log4j.appender.A1.layout=org.apache.log4j.PatternLayout +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n \ No newline at end of file From 07da242830fd1e6864e7569d61fa94e271317ff8 Mon Sep 17 00:00:00 2001 From: Loredana Date: Sat, 17 Oct 2020 16:19:01 +0300 Subject: [PATCH 253/260] add context test, explanation --- spring-boot-modules/spring-boot-mvc-birt/pom.xml | 1 + .../com/baeldung/birt/engine/SpringContextTest.java | 13 +++++++++++++ 2 files changed, 14 insertions(+) create mode 100644 spring-boot-modules/spring-boot-mvc-birt/src/test/java/com/baeldung/birt/engine/SpringContextTest.java diff --git a/spring-boot-modules/spring-boot-mvc-birt/pom.xml b/spring-boot-modules/spring-boot-mvc-birt/pom.xml index 1e3075dc2d..4963cc3036 100644 --- a/spring-boot-modules/spring-boot-mvc-birt/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-birt/pom.xml @@ -4,6 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 + org.springframework.boot spring-boot-starter-parent diff --git a/spring-boot-modules/spring-boot-mvc-birt/src/test/java/com/baeldung/birt/engine/SpringContextTest.java b/spring-boot-modules/spring-boot-mvc-birt/src/test/java/com/baeldung/birt/engine/SpringContextTest.java new file mode 100644 index 0000000000..5235a494df --- /dev/null +++ b/spring-boot-modules/spring-boot-mvc-birt/src/test/java/com/baeldung/birt/engine/SpringContextTest.java @@ -0,0 +1,13 @@ +package com.baeldung.birt.engine; + +import org.junit.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +public class SpringContextTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + + } +} From 000275f9f7d18a482a377b05ec9ca0f06423b234 Mon Sep 17 00:00:00 2001 From: AmitB Date: Sun, 18 Oct 2020 21:29:00 +0530 Subject: [PATCH 254/260] [BAEL-4495] - Add test for case when 2nd collection is also hashset (#10175) * [BAEL-4495] Performance of removeAll() in a HashSet * [BAEL-4495] Add unit test for hashset removeAll() * [BAEL-4495] Update test methods to camelCase * [BAEL-4495] Add test for case when 2nd collection is also hashset --- .../removeallperformance/HashSetBenchmark.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java index 8ce58c865e..8f784de26d 100644 --- a/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java +++ b/core-java-modules/core-java-collections-3/src/main/java/com/baeldung/collections/removeallperformance/HashSetBenchmark.java @@ -33,11 +33,15 @@ public class HashSetBenchmark { private List employeeList1 = new ArrayList<>(); private Set employeeSet2 = new HashSet<>(); private List employeeList2 = new ArrayList<>(); + private Set employeeSet3 = new HashSet<>(); + private Set employeeSet4 = new HashSet<>(); private long set1Size = 60000; private long list1Size = 50000; private long set2Size = 50000; private long list2Size = 60000; + private long set3Size = 50000; + private long set4Size = 60000; @Setup(Level.Trial) public void setUp() { @@ -57,6 +61,14 @@ public class HashSetBenchmark { for (long i = 0; i < list2Size; i++) { employeeList2.add(new Employee(i, RandomStringUtils.random(7, true, false))); } + + for (long i = 0; i < set3Size; i++) { + employeeSet3.add(new Employee(i, RandomStringUtils.random(7, true, false))); + } + + for (long i = 0; i < set4Size; i++) { + employeeSet4.add(new Employee(i, RandomStringUtils.random(7, true, false))); + } } @@ -71,6 +83,11 @@ public class HashSetBenchmark { public boolean given_SizeOfHashsetSmallerThanSizeOfCollection_When_RemoveAllFromHashSet_Then_BadPerformance(MyState state) { return state.employeeSet2.removeAll(state.employeeList2); } + + @Benchmark + public boolean given_SizeOfHashsetSmallerThanSizeOfAnotherHashSet_When_RemoveAllFromHashSet_Then_GoodPerformance(MyState state) { + return state.employeeSet3.removeAll(state.employeeSet4); + } public static void main(String[] args) throws Exception { Options options = new OptionsBuilder().include(HashSetBenchmark.class.getSimpleName()) From 61f2654a9d17591a90026613ba3dd168d2ddc3b7 Mon Sep 17 00:00:00 2001 From: Loredana Date: Tue, 20 Oct 2020 11:16:17 +0300 Subject: [PATCH 255/260] update basename for messagesource --- .../com/baeldung/spring/configuration/EmailConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java b/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java index 86a7f1162c..7f296ce6a7 100644 --- a/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java +++ b/spring-mvc-basics-2/src/main/java/com/baeldung/spring/configuration/EmailConfiguration.java @@ -119,7 +119,7 @@ public class EmailConfiguration { @Bean public ResourceBundleMessageSource emailMessageSource() { final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); - messageSource.setBasename("/mailMessages"); + messageSource.setBasename("mailMessages"); return messageSource; } From e012de2de98270702e7cdb93227c0c7725d010e6 Mon Sep 17 00:00:00 2001 From: Loredana Date: Tue, 20 Oct 2020 11:42:57 +0300 Subject: [PATCH 256/260] add the oidc legacy code back --- spring-security-modules/pom.xml | 1 + .../spring-security-legacy-oidc/README.md | 23 ++++ .../spring-security-legacy-oidc/pom.xml | 58 ++++++++++ .../oidc/GoogleOpenIdConnectConfig.java | 51 +++++++++ .../baeldung/openid/oidc/HomeController.java | 22 ++++ .../openid/oidc/OpenIdConnectFilter.java | 103 ++++++++++++++++++ .../openid/oidc/OpenIdConnectUserDetails.java | 81 ++++++++++++++ .../baeldung/openid/oidc/SecurityConfig.java | 48 ++++++++ .../openid/oidc/SpringOpenidApplication.java | 14 +++ .../src/main/resources/application.properties | 8 ++ .../src/main/resources/logback.xml | 13 +++ .../openid/oidc/SpringContextTest.java | 15 +++ 12 files changed, 437 insertions(+) create mode 100644 spring-security-modules/spring-security-legacy-oidc/README.md create mode 100644 spring-security-modules/spring-security-legacy-oidc/pom.xml create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/GoogleOpenIdConnectConfig.java create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/HomeController.java create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectFilter.java create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectUserDetails.java create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SecurityConfig.java create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SpringOpenidApplication.java create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/resources/application.properties create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/main/resources/logback.xml create mode 100644 spring-security-modules/spring-security-legacy-oidc/src/test/java/com/baeldung/openid/oidc/SpringContextTest.java diff --git a/spring-security-modules/pom.xml b/spring-security-modules/pom.xml index d5c0c0dd6e..0fc2b49fa7 100644 --- a/spring-security-modules/pom.xml +++ b/spring-security-modules/pom.xml @@ -28,6 +28,7 @@ spring-security-web-login spring-security-web-persisted-remember-me spring-security-web-sockets + spring-security-legacy-oidc spring-security-oidc spring-security-okta spring-security-web-react diff --git a/spring-security-modules/spring-security-legacy-oidc/README.md b/spring-security-modules/spring-security-legacy-oidc/README.md new file mode 100644 index 0000000000..5e8f391b96 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/README.md @@ -0,0 +1,23 @@ +## Spring Security OpenID + +This module contains articles about OpenID with Spring Security + +### Relevant articles + +- [Spring Security and OpenID Connect (Legacy)](https://www.baeldung.com/spring-security-openid-connect-legacy) + +### OpenID Connect with Spring Security + +### Run the Project + +``` +mvn spring-boot:run +``` + +### Obtain Google App - Client ID, Secret + +- We need to get client id and client secret by creating a new project at [Google Developer Console](https://console.developers.google.com/project/_/apiui/credential?pli=1) +- We can follow these instructions to register our client application on their platform + +- Once we have the client id and secret, we have to make sure we add them to the YAML files of the project + diff --git a/spring-security-modules/spring-security-legacy-oidc/pom.xml b/spring-security-modules/spring-security-legacy-oidc/pom.xml new file mode 100644 index 0000000000..a4ead0f6e0 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/pom.xml @@ -0,0 +1,58 @@ + + + 4.0.0 + spring-security-legacy-oidc + spring-security-legacy-oidc + war + Spring OpenID Connect sample project + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-tomcat + + + + org.springframework.security.oauth + spring-security-oauth2 + ${spring-security-oauth2.version} + + + + org.springframework.security + spring-security-jwt + ${spring-security-jwt.version} + + + + com.auth0 + jwks-rsa + ${jwks-rsa.version} + + + + + 2.2.1.RELEASE + 1.0.9.RELEASE + 0.3.0 + + + diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/GoogleOpenIdConnectConfig.java b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/GoogleOpenIdConnectConfig.java new file mode 100644 index 0000000000..a9fdcfb286 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/GoogleOpenIdConnectConfig.java @@ -0,0 +1,51 @@ +package com.baeldung.openid.oidc; + +import java.util.Arrays; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.oauth2.client.OAuth2ClientContext; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.client.resource.OAuth2ProtectedResourceDetails; +import org.springframework.security.oauth2.client.token.grant.code.AuthorizationCodeResourceDetails; +import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client; + +@Configuration +@EnableOAuth2Client +public class GoogleOpenIdConnectConfig { + @Value("${google.clientId}") + private String clientId; + + @Value("${google.clientSecret}") + private String clientSecret; + + @Value("${google.accessTokenUri}") + private String accessTokenUri; + + @Value("${google.userAuthorizationUri}") + private String userAuthorizationUri; + + @Value("${google.redirectUri}") + private String redirectUri; + + @Bean + public OAuth2ProtectedResourceDetails googleOpenId() { + final AuthorizationCodeResourceDetails details = new AuthorizationCodeResourceDetails(); + details.setClientId(clientId); + details.setClientSecret(clientSecret); + details.setAccessTokenUri(accessTokenUri); + details.setUserAuthorizationUri(userAuthorizationUri); + details.setScope(Arrays.asList("openid", "email")); + details.setPreEstablishedRedirectUri(redirectUri); + details.setUseCurrentUri(false); + return details; + } + + @Bean + public OAuth2RestTemplate googleOpenIdTemplate(final OAuth2ClientContext clientContext) { + final OAuth2RestTemplate template = new OAuth2RestTemplate(googleOpenId(), clientContext); + return template; + } + +} \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/HomeController.java b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/HomeController.java new file mode 100644 index 0000000000..3d2e776eca --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/HomeController.java @@ -0,0 +1,22 @@ +package com.baeldung.openid.oidc; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +public class HomeController { + private final Logger logger = LoggerFactory.getLogger(getClass()); + + @RequestMapping("/") + @ResponseBody + public final String home() { + final String username = SecurityContextHolder.getContext().getAuthentication().getName(); + logger.info(username); + return "Welcome, " + username; + } + +} \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectFilter.java b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectFilter.java new file mode 100644 index 0000000000..c0b08bc548 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectFilter.java @@ -0,0 +1,103 @@ +package com.baeldung.openid.oidc; + +import java.io.IOException; +import java.net.URL; +import java.security.interfaces.RSAPublicKey; +import java.util.Date; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.BadCredentialsException; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.jwt.Jwt; +import org.springframework.security.jwt.JwtHelper; +import org.springframework.security.jwt.crypto.sign.RsaVerifier; +import org.springframework.security.oauth2.client.OAuth2RestOperations; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.common.OAuth2AccessToken; +import org.springframework.security.oauth2.common.exceptions.OAuth2Exception; +import org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter; + +import com.auth0.jwk.Jwk; +import com.auth0.jwk.JwkProvider; +import com.auth0.jwk.UrlJwkProvider; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class OpenIdConnectFilter extends AbstractAuthenticationProcessingFilter { + @Value("${google.clientId}") + private String clientId; + + @Value("${google.issuer}") + private String issuer; + + @Value("${google.jwkUrl}") + private String jwkUrl; + + public OAuth2RestOperations restTemplate; + + public OpenIdConnectFilter(String defaultFilterProcessesUrl) { + super(defaultFilterProcessesUrl); + setAuthenticationManager(new NoopAuthenticationManager()); + } + + @Override + public Authentication attemptAuthentication(HttpServletRequest request, HttpServletResponse response) throws AuthenticationException, IOException, ServletException { + + OAuth2AccessToken accessToken; + try { + accessToken = restTemplate.getAccessToken(); + } catch (final OAuth2Exception e) { + throw new BadCredentialsException("Could not obtain access token", e); + } + try { + final String idToken = accessToken.getAdditionalInformation().get("id_token").toString(); + String kid = JwtHelper.headers(idToken) + .get("kid"); + final Jwt tokenDecoded = JwtHelper.decodeAndVerify(idToken, verifier(kid)); + final Map authInfo = new ObjectMapper().readValue(tokenDecoded.getClaims(), Map.class); + verifyClaims(authInfo); + final OpenIdConnectUserDetails user = new OpenIdConnectUserDetails(authInfo, accessToken); + return new UsernamePasswordAuthenticationToken(user, null, user.getAuthorities()); + } catch (final Exception e) { + throw new BadCredentialsException("Could not obtain user details from token", e); + } + + } + + public void verifyClaims(Map claims) { + int exp = (int) claims.get("exp"); + Date expireDate = new Date(exp * 1000L); + Date now = new Date(); + if (expireDate.before(now) || !claims.get("iss").equals(issuer) || !claims.get("aud").equals(clientId)) { + throw new RuntimeException("Invalid claims"); + } + } + + + private RsaVerifier verifier(String kid) throws Exception { + JwkProvider provider = new UrlJwkProvider(new URL(jwkUrl)); + Jwk jwk = provider.get(kid); + return new RsaVerifier((RSAPublicKey) jwk.getPublicKey()); + } + + public void setRestTemplate(OAuth2RestTemplate restTemplate2) { + restTemplate = restTemplate2; + + } + + private static class NoopAuthenticationManager implements AuthenticationManager { + + @Override + public Authentication authenticate(Authentication authentication) throws AuthenticationException { + throw new UnsupportedOperationException("No authentication should be done with this AuthenticationManager"); + } + + } +} \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectUserDetails.java b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectUserDetails.java new file mode 100644 index 0000000000..4ff61bcad9 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/OpenIdConnectUserDetails.java @@ -0,0 +1,81 @@ +package com.baeldung.openid.oidc; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Map; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.oauth2.common.OAuth2AccessToken; + +public class OpenIdConnectUserDetails implements UserDetails { + + private static final long serialVersionUID = 1L; + + private String userId; + private String username; + private OAuth2AccessToken token; + + public OpenIdConnectUserDetails(Map userInfo, OAuth2AccessToken token) { + this.userId = userInfo.get("sub"); + this.username = userInfo.get("email"); + this.token = token; + } + + @Override + public String getUsername() { + return username; + } + + @Override + public Collection getAuthorities() { + return Arrays.asList(new SimpleGrantedAuthority("ROLE_USER")); + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + public OAuth2AccessToken getToken() { + return token; + } + + public void setToken(OAuth2AccessToken token) { + this.token = token; + } + + public void setUsername(String username) { + this.username = username; + } + + @Override + public String getPassword() { + return null; + } + + @Override + public boolean isAccountNonExpired() { + return true; + } + + @Override + public boolean isAccountNonLocked() { + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + return true; + } + + @Override + public boolean isEnabled() { + return true; + } + +} \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SecurityConfig.java b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SecurityConfig.java new file mode 100644 index 0000000000..fc5397a35b --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SecurityConfig.java @@ -0,0 +1,48 @@ +package com.baeldung.openid.oidc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.oauth2.client.OAuth2RestTemplate; +import org.springframework.security.oauth2.client.filter.OAuth2ClientContextFilter; +import org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint; +import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter; + +@Configuration +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + private OAuth2RestTemplate restTemplate; + + @Override + public void configure(WebSecurity web) throws Exception { + web.ignoring().antMatchers("/resources/**"); + } + + @Bean + public OpenIdConnectFilter myFilter() { + final OpenIdConnectFilter filter = new OpenIdConnectFilter("/google-login"); + filter.setRestTemplate(restTemplate); + return filter; + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + // @formatter:off + http + .addFilterAfter(new OAuth2ClientContextFilter(), AbstractPreAuthenticatedProcessingFilter.class) + .addFilterAfter(myFilter(), OAuth2ClientContextFilter.class) + .httpBasic().authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/google-login")) + .and() + .authorizeRequests() + // .antMatchers("/","/index*").permitAll() + .anyRequest().authenticated() + ; + + // @formatter:on + } +} \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SpringOpenidApplication.java b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SpringOpenidApplication.java new file mode 100644 index 0000000000..ec686f746d --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/java/com/baeldung/openid/oidc/SpringOpenidApplication.java @@ -0,0 +1,14 @@ +package com.baeldung.openid.oidc; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +@SpringBootApplication +public class SpringOpenidApplication extends SpringBootServletInitializer { + + public static void main(String[] args) { + SpringApplication.run(SpringOpenidApplication.class, args); + } + +} \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/resources/application.properties b/spring-security-modules/spring-security-legacy-oidc/src/main/resources/application.properties new file mode 100644 index 0000000000..e9ae90dd10 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/resources/application.properties @@ -0,0 +1,8 @@ +server.port=8081 +google.clientId=475873350264-g1opb20lf2fc60h0o84rrkn972krgkvo.apps.googleusercontent.com +google.clientSecret=GiA1Agf_aSt-bhTrnXjre-5Z +google.accessTokenUri=https://www.googleapis.com/oauth2/v3/token +google.userAuthorizationUri=https://accounts.google.com/o/oauth2/auth +google.redirectUri=http://localhost:8081/google-login +google.issuer=accounts.google.com +google.jwkUrl=https://www.googleapis.com/oauth2/v2/certs \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/main/resources/logback.xml b/spring-security-modules/spring-security-legacy-oidc/src/main/resources/logback.xml new file mode 100644 index 0000000000..3b8d0b9964 --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/src/test/java/com/baeldung/openid/oidc/SpringContextTest.java b/spring-security-modules/spring-security-legacy-oidc/src/test/java/com/baeldung/openid/oidc/SpringContextTest.java new file mode 100644 index 0000000000..0a21c5e93f --- /dev/null +++ b/spring-security-modules/spring-security-legacy-oidc/src/test/java/com/baeldung/openid/oidc/SpringContextTest.java @@ -0,0 +1,15 @@ +package com.baeldung.openid.oidc; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = SpringOpenidApplication.class) +public class SpringContextTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} \ No newline at end of file From e16eef77267fe0d7a0bfb105d9e01d8821c899ac Mon Sep 17 00:00:00 2001 From: Loredana Date: Tue, 20 Oct 2020 12:33:13 +0300 Subject: [PATCH 257/260] update jpa shared key --- .../hibernate/jpabootstrap/application/Application.java | 2 +- .../baeldung/hibernate/onetoone/sharedkeybased/Address.java | 5 +++-- .../com/baeldung/hibernate/onetoone/sharedkeybased/User.java | 2 ++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java index f7b8e6bf6d..b547a60b06 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/jpabootstrap/application/Application.java @@ -8,7 +8,7 @@ public class Application { public static void main(String[] args) { EntityManager entityManager = getJpaEntityManager(); - User user = entityManager.find(User.class, 1); + User user = entityManager.find(User.class, 1l); System.out.println(user); entityManager.getTransaction().begin(); user.setName("John"); diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java index 927516f6bb..e70c62e77b 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/Address.java @@ -1,9 +1,9 @@ package com.baeldung.hibernate.onetoone.sharedkeybased; - import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; +import javax.persistence.JoinColumn; import javax.persistence.MapsId; import javax.persistence.OneToOne; import javax.persistence.Table; @@ -13,7 +13,7 @@ import javax.persistence.Table; public class Address { @Id - @Column(name = "id") + @Column(name = "user_id") private Long id; @Column(name = "street") @@ -24,6 +24,7 @@ public class Address { @OneToOne @MapsId + @JoinColumn(name = "user_id") private User user; public Long getId() { diff --git a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java index fa00db1271..605671a149 100644 --- a/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java +++ b/persistence-modules/hibernate-jpa/src/main/java/com/baeldung/hibernate/onetoone/sharedkeybased/User.java @@ -8,6 +8,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.OneToOne; +import javax.persistence.PrimaryKeyJoinColumn; import javax.persistence.Table; @Entity @@ -22,6 +23,7 @@ public class User { private String userName; @OneToOne(mappedBy = "user", cascade = CascadeType.ALL) + @PrimaryKeyJoinColumn private Address address; public Long getId() { From b6dbadc18e4c4408d117adc710963184dea57585 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Tue, 20 Oct 2020 12:41:36 +0300 Subject: [PATCH 258/260] Update README.md --- spring-security-modules/spring-security-oidc/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/spring-security-modules/spring-security-oidc/README.md b/spring-security-modules/spring-security-oidc/README.md index ca6053f70f..5e8f391b96 100644 --- a/spring-security-modules/spring-security-oidc/README.md +++ b/spring-security-modules/spring-security-oidc/README.md @@ -4,7 +4,6 @@ This module contains articles about OpenID with Spring Security ### Relevant articles -- [Spring Security and OpenID Connect](https://www.baeldung.com/spring-security-openid-connect) - [Spring Security and OpenID Connect (Legacy)](https://www.baeldung.com/spring-security-openid-connect-legacy) ### OpenID Connect with Spring Security From 3f8591f891725ea65539e1be7b6bc4da2645453d Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Tue, 20 Oct 2020 12:42:29 +0300 Subject: [PATCH 259/260] Update README.md --- spring-security-modules/spring-security-legacy-oidc/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-modules/spring-security-legacy-oidc/README.md b/spring-security-modules/spring-security-legacy-oidc/README.md index 5e8f391b96..9d47b35b21 100644 --- a/spring-security-modules/spring-security-legacy-oidc/README.md +++ b/spring-security-modules/spring-security-legacy-oidc/README.md @@ -19,5 +19,5 @@ mvn spring-boot:run - We need to get client id and client secret by creating a new project at [Google Developer Console](https://console.developers.google.com/project/_/apiui/credential?pli=1) - We can follow these instructions to register our client application on their platform -- Once we have the client id and secret, we have to make sure we add them to the YAML files of the project +- Once we have the client id and secret, we have to make sure we add them to the application.properties file. From 0efc73afccbd920ae0e078fea4108b0c87bbca70 Mon Sep 17 00:00:00 2001 From: Loredana Crusoveanu Date: Tue, 20 Oct 2020 13:14:22 +0300 Subject: [PATCH 260/260] Update README.md --- spring-security-modules/spring-security-web-sockets/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-modules/spring-security-web-sockets/README.md b/spring-security-modules/spring-security-web-sockets/README.md index 14ef0c8b99..76717e2fe6 100644 --- a/spring-security-modules/spring-security-web-sockets/README.md +++ b/spring-security-modules/spring-security-web-sockets/README.md @@ -5,7 +5,7 @@ This module contains articles about WebSockets with Spring Security ### Relevant Articles: - [Intro to Security and WebSockets](https://www.baeldung.com/spring-security-websockets) -- [Spring WebSockets: Build an User Chat](https://www.baeldung.com/spring-websockets-send-message-to-user) +- [Spring WebSockets: Send Messages to a Specific User](https://www.baeldung.com/spring-websockets-send-message-to-user) - [REST vs WebSockets](https://www.baeldung.com/rest-vs-websockets) ### Running This Project: