From 4b669dc6880a9cfb9dce1712ecf6d9637ac73259 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Wed, 8 Jul 2020 04:29:31 +0530 Subject: [PATCH 01/11] 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 02/11] 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 03/11] 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 04/11] 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 05/11] 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 06/11] 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 07/11] 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 8febb192a323c2832db3694a58a892221b9cf478 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sat, 22 Aug 2020 23:27:21 +0530 Subject: [PATCH 08/11] 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 51c2e22324186f7b17b141635dc66a685014ec95 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Tue, 15 Sep 2020 20:32:07 +0530 Subject: [PATCH 09/11] 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 3626b5c85857e735b1aa2dade5fd687eaf0ec3ef Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Sun, 20 Sep 2020 01:20:58 +0530 Subject: [PATCH 10/11] 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 17369c4b7733cfb09fd5be036faae1d350fddf07 Mon Sep 17 00:00:00 2001 From: Tarun Jain Date: Thu, 24 Sep 2020 03:02:04 +0530 Subject: [PATCH 11/11] 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 {