From f7d38de477eb2f9aae7f23dfebb88537dd3f9930 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Sun, 14 Mar 2021 12:50:35 +0530 Subject: [PATCH 01/27] Committing code for Hexagonal architecture example. --- hexagonal-example/HexagonalStructure/pom.xml | 47 +++++++++++++++++++ .../src/com/baeldung/HexagonalLibrary.java | 13 +++++ .../adapter/LibraryRepoImpl.java | 39 +++++++++++++++ .../adapter/LibraryRestController.java | 37 +++++++++++++++ .../hexagonalPattern/core/domain/Book.java | 33 +++++++++++++ .../core/impl/LibraryServiceImpl.java | 38 +++++++++++++++ .../hexagonalPattern/ports/LibraryRepo.java | 14 ++++++ .../ports/LibraryService.java | 15 ++++++ .../hexagonalPattern/web/LibraryRestUI.java | 24 ++++++++++ 9 files changed, 260 insertions(+) create mode 100644 hexagonal-example/HexagonalStructure/pom.xml create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java create mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java diff --git a/hexagonal-example/HexagonalStructure/pom.xml b/hexagonal-example/HexagonalStructure/pom.xml new file mode 100644 index 0000000000..47bd8e7489 --- /dev/null +++ b/hexagonal-example/HexagonalStructure/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.6.RELEASE + + + com.baeldung + HexagonalLibrary + 0.0.1-SNAPSHOT + HexagonalLibrary + HexagonalLibrary + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.HexagonalLibrary + + + + + + \ No newline at end of file diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java new file mode 100644 index 0000000000..b730fa1244 --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class HexagonalLibrary { + + public static void main(String[] args) { + SpringApplication.run(HexagonalLibrary.class, args); + } + +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java new file mode 100644 index 0000000000..1b678a4e80 --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java @@ -0,0 +1,39 @@ +package com.baeldung.hexagonalPattern.adapter; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Repository; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.ports.LibraryRepo; + +@Repository +public class LibraryRepoImpl implements LibraryRepo { + // This class is the actual implementation of the out bound port/adapter. + + private HashMap books = new HashMap(); + + @Override + public void insertBook(Book book) { + // Mock Database call here. + books.put("mock", new Book("mock", "mock", "mock")); + } + + @Override + public Book searchBook(String name) { + // TODO Auto-generated method stub + Book b = new Book(); + // Some code for retrieval of book from db + return b; + } + + @Override + public List getAllBooks() { + // Fetch all books from db + return books.values().stream().collect(Collectors.toList()); + } + +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java new file mode 100644 index 0000000000..176b8471b5 --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java @@ -0,0 +1,37 @@ +package com.baeldung.hexagonalPattern.adapter; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.web.LibraryRestUI; + +@RestController +public class LibraryRestController implements LibraryRestUI { + + @Override + @RequestMapping("/library") + public void insertBook(Book book) { + // TODO Auto-generated method stub + + } + + @Override + @GetMapping("/searchBook") + public Book searchBook(@PathVariable String name) { + // TODO Auto-generated method stub + return null; + } + + @Override + @GetMapping("/listBooks") + public List listAllBooks() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java new file mode 100644 index 0000000000..38e761ba50 --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java @@ -0,0 +1,33 @@ +package com.baeldung.hexagonalPattern.core.domain; + +public class Book { + + private String name; + private String author_list; + private String isbn13; + + /* constructors and getter and setters */ + public Book(String string, String string2, String string3) { + // TODO Auto-generated constructor stub + } + + public Book() { + // TODO Auto-generated constructor stub + } + + /* + * public String getName() { return name; } + * + * public void setName(String name) { this.name = name; } + * + * public String getAuthor_list() { return author_list; } + * + * public void setAuthor_list(String author_list) { this.author_list = + * author_list; } + * + * public String getIsbn13() { return isbn13; } + * + * public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } + */ + +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java new file mode 100644 index 0000000000..1bde7c8d0e --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java @@ -0,0 +1,38 @@ +package com.baeldung.hexagonalPattern.core.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.ports.LibraryRepo; +import com.baeldung.hexagonalPattern.ports.LibraryService; + +@Service +public class LibraryServiceImpl implements LibraryService { + + // This is the class which actually implements the methods from the ports. + // The ports are just for exposing the methods to the outside. + + @Autowired + private LibraryRepo bookRepo; + + @Override + public void insertBook(Book book) { + // TODO some implementation to insert record in the db or similar + bookRepo.insertBook(book); + } + + @Override + public Book lendBook(String name) { + // TODO Auto-generated method stub + return bookRepo.searchBook(name); + } + + @Override + public List getAllBooks() { + // TODO Auto-generated method + return null; + } + +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java new file mode 100644 index 0000000000..83858403ef --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java @@ -0,0 +1,14 @@ +package com.baeldung.hexagonalPattern.ports; + +import java.util.List; +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryRepo { + // Outbound Port. + + public void insertBook(Book book); + + public Book searchBook(String name); + + public List getAllBooks(); +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java new file mode 100644 index 0000000000..7391b4795d --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java @@ -0,0 +1,15 @@ +package com.baeldung.hexagonalPattern.ports; + +import java.util.List; +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryService { +//This is the in bound port.exposes the application to the world. + + public void insertBook(Book book); + + public Book lendBook(String name); + + List getAllBooks(); + +} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java new file mode 100644 index 0000000000..16d7beac87 --- /dev/null +++ b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java @@ -0,0 +1,24 @@ +package com.baeldung.hexagonalPattern.web; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryRestUI { + // This is the in bound Adapter + + @PostMapping + void insertBook(@RequestBody Book book); + + @GetMapping("/{name}") + public Book searchBook(@PathVariable String name); + + @GetMapping + public List listAllBooks(); + +} From f58867dedfe6a3b22f7c574a58317d84744343f4 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Sun, 14 Mar 2021 13:50:48 +0530 Subject: [PATCH 02/27] committing the correct way. --- hexagonal-example/HexagonalStructure/pom.xml | 47 ------------------- .../src/com/baeldung/HexagonalLibrary.java | 13 ----- .../adapter/LibraryRepoImpl.java | 39 --------------- .../adapter/LibraryRestController.java | 37 --------------- .../hexagonalPattern/core/domain/Book.java | 33 ------------- .../core/impl/LibraryServiceImpl.java | 38 --------------- .../hexagonalPattern/ports/LibraryRepo.java | 14 ------ .../ports/LibraryService.java | 15 ------ .../hexagonalPattern/web/LibraryRestUI.java | 24 ---------- 9 files changed, 260 deletions(-) delete mode 100644 hexagonal-example/HexagonalStructure/pom.xml delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java delete mode 100644 hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java diff --git a/hexagonal-example/HexagonalStructure/pom.xml b/hexagonal-example/HexagonalStructure/pom.xml deleted file mode 100644 index 47bd8e7489..0000000000 --- a/hexagonal-example/HexagonalStructure/pom.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.1.6.RELEASE - - - com.baeldung - HexagonalLibrary - 0.0.1-SNAPSHOT - HexagonalLibrary - HexagonalLibrary - - - 1.8 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - - - - - org.springframework.boot - spring-boot-maven-plugin - - com.baeldung.HexagonalLibrary - - - - - - \ No newline at end of file diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java deleted file mode 100644 index b730fa1244..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/HexagonalLibrary.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class HexagonalLibrary { - - public static void main(String[] args) { - SpringApplication.run(HexagonalLibrary.class, args); - } - -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java deleted file mode 100644 index 1b678a4e80..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.hexagonalPattern.adapter; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Repository; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.ports.LibraryRepo; - -@Repository -public class LibraryRepoImpl implements LibraryRepo { - // This class is the actual implementation of the out bound port/adapter. - - private HashMap books = new HashMap(); - - @Override - public void insertBook(Book book) { - // Mock Database call here. - books.put("mock", new Book("mock", "mock", "mock")); - } - - @Override - public Book searchBook(String name) { - // TODO Auto-generated method stub - Book b = new Book(); - // Some code for retrieval of book from db - return b; - } - - @Override - public List getAllBooks() { - // Fetch all books from db - return books.values().stream().collect(Collectors.toList()); - } - -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java deleted file mode 100644 index 176b8471b5..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.hexagonalPattern.adapter; - -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.web.LibraryRestUI; - -@RestController -public class LibraryRestController implements LibraryRestUI { - - @Override - @RequestMapping("/library") - public void insertBook(Book book) { - // TODO Auto-generated method stub - - } - - @Override - @GetMapping("/searchBook") - public Book searchBook(@PathVariable String name) { - // TODO Auto-generated method stub - return null; - } - - @Override - @GetMapping("/listBooks") - public List listAllBooks() { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java deleted file mode 100644 index 38e761ba50..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/domain/Book.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.hexagonalPattern.core.domain; - -public class Book { - - private String name; - private String author_list; - private String isbn13; - - /* constructors and getter and setters */ - public Book(String string, String string2, String string3) { - // TODO Auto-generated constructor stub - } - - public Book() { - // TODO Auto-generated constructor stub - } - - /* - * public String getName() { return name; } - * - * public void setName(String name) { this.name = name; } - * - * public String getAuthor_list() { return author_list; } - * - * public void setAuthor_list(String author_list) { this.author_list = - * author_list; } - * - * public String getIsbn13() { return isbn13; } - * - * public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } - */ - -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java deleted file mode 100644 index 1bde7c8d0e..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.hexagonalPattern.core.impl; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.ports.LibraryRepo; -import com.baeldung.hexagonalPattern.ports.LibraryService; - -@Service -public class LibraryServiceImpl implements LibraryService { - - // This is the class which actually implements the methods from the ports. - // The ports are just for exposing the methods to the outside. - - @Autowired - private LibraryRepo bookRepo; - - @Override - public void insertBook(Book book) { - // TODO some implementation to insert record in the db or similar - bookRepo.insertBook(book); - } - - @Override - public Book lendBook(String name) { - // TODO Auto-generated method stub - return bookRepo.searchBook(name); - } - - @Override - public List getAllBooks() { - // TODO Auto-generated method - return null; - } - -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java deleted file mode 100644 index 83858403ef..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.baeldung.hexagonalPattern.ports; - -import java.util.List; -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryRepo { - // Outbound Port. - - public void insertBook(Book book); - - public Book searchBook(String name); - - public List getAllBooks(); -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java deleted file mode 100644 index 7391b4795d..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/ports/LibraryService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.hexagonalPattern.ports; - -import java.util.List; -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryService { -//This is the in bound port.exposes the application to the world. - - public void insertBook(Book book); - - public Book lendBook(String name); - - List getAllBooks(); - -} diff --git a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java b/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java deleted file mode 100644 index 16d7beac87..0000000000 --- a/hexagonal-example/HexagonalStructure/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.hexagonalPattern.web; - -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryRestUI { - // This is the in bound Adapter - - @PostMapping - void insertBook(@RequestBody Book book); - - @GetMapping("/{name}") - public Book searchBook(@PathVariable String name); - - @GetMapping - public List listAllBooks(); - -} From da32163216e5dbb3ca65da3f9a83ae3561ffaa50 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Sun, 14 Mar 2021 13:58:13 +0530 Subject: [PATCH 03/27] commiting code for hexagonal archi(eval article) --- hexagonal-example/pom.xml | 47 +++++++++++++++++++ .../src/com/baeldung/HexagonalLibrary.java | 13 +++++ .../adapter/LibraryRepoImpl.java | 39 +++++++++++++++ .../adapter/LibraryRestController.java | 37 +++++++++++++++ .../hexagonalPattern/core/domain/Book.java | 33 +++++++++++++ .../core/impl/LibraryServiceImpl.java | 38 +++++++++++++++ .../hexagonalPattern/ports/LibraryRepo.java | 14 ++++++ .../ports/LibraryService.java | 15 ++++++ .../hexagonalPattern/web/LibraryRestUI.java | 24 ++++++++++ 9 files changed, 260 insertions(+) create mode 100644 hexagonal-example/pom.xml create mode 100644 hexagonal-example/src/com/baeldung/HexagonalLibrary.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java create mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java diff --git a/hexagonal-example/pom.xml b/hexagonal-example/pom.xml new file mode 100644 index 0000000000..47bd8e7489 --- /dev/null +++ b/hexagonal-example/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + + org.springframework.boot + spring-boot-starter-parent + 2.1.6.RELEASE + + + com.baeldung + HexagonalLibrary + 0.0.1-SNAPSHOT + HexagonalLibrary + HexagonalLibrary + + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + com.baeldung.HexagonalLibrary + + + + + + \ No newline at end of file diff --git a/hexagonal-example/src/com/baeldung/HexagonalLibrary.java b/hexagonal-example/src/com/baeldung/HexagonalLibrary.java new file mode 100644 index 0000000000..b730fa1244 --- /dev/null +++ b/hexagonal-example/src/com/baeldung/HexagonalLibrary.java @@ -0,0 +1,13 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class HexagonalLibrary { + + public static void main(String[] args) { + SpringApplication.run(HexagonalLibrary.class, args); + } + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java new file mode 100644 index 0000000000..1b678a4e80 --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java @@ -0,0 +1,39 @@ +package com.baeldung.hexagonalPattern.adapter; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Repository; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.ports.LibraryRepo; + +@Repository +public class LibraryRepoImpl implements LibraryRepo { + // This class is the actual implementation of the out bound port/adapter. + + private HashMap books = new HashMap(); + + @Override + public void insertBook(Book book) { + // Mock Database call here. + books.put("mock", new Book("mock", "mock", "mock")); + } + + @Override + public Book searchBook(String name) { + // TODO Auto-generated method stub + Book b = new Book(); + // Some code for retrieval of book from db + return b; + } + + @Override + public List getAllBooks() { + // Fetch all books from db + return books.values().stream().collect(Collectors.toList()); + } + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java new file mode 100644 index 0000000000..176b8471b5 --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java @@ -0,0 +1,37 @@ +package com.baeldung.hexagonalPattern.adapter; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.web.LibraryRestUI; + +@RestController +public class LibraryRestController implements LibraryRestUI { + + @Override + @RequestMapping("/library") + public void insertBook(Book book) { + // TODO Auto-generated method stub + + } + + @Override + @GetMapping("/searchBook") + public Book searchBook(@PathVariable String name) { + // TODO Auto-generated method stub + return null; + } + + @Override + @GetMapping("/listBooks") + public List listAllBooks() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java new file mode 100644 index 0000000000..38e761ba50 --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java @@ -0,0 +1,33 @@ +package com.baeldung.hexagonalPattern.core.domain; + +public class Book { + + private String name; + private String author_list; + private String isbn13; + + /* constructors and getter and setters */ + public Book(String string, String string2, String string3) { + // TODO Auto-generated constructor stub + } + + public Book() { + // TODO Auto-generated constructor stub + } + + /* + * public String getName() { return name; } + * + * public void setName(String name) { this.name = name; } + * + * public String getAuthor_list() { return author_list; } + * + * public void setAuthor_list(String author_list) { this.author_list = + * author_list; } + * + * public String getIsbn13() { return isbn13; } + * + * public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } + */ + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java new file mode 100644 index 0000000000..1bde7c8d0e --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java @@ -0,0 +1,38 @@ +package com.baeldung.hexagonalPattern.core.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.ports.LibraryRepo; +import com.baeldung.hexagonalPattern.ports.LibraryService; + +@Service +public class LibraryServiceImpl implements LibraryService { + + // This is the class which actually implements the methods from the ports. + // The ports are just for exposing the methods to the outside. + + @Autowired + private LibraryRepo bookRepo; + + @Override + public void insertBook(Book book) { + // TODO some implementation to insert record in the db or similar + bookRepo.insertBook(book); + } + + @Override + public Book lendBook(String name) { + // TODO Auto-generated method stub + return bookRepo.searchBook(name); + } + + @Override + public List getAllBooks() { + // TODO Auto-generated method + return null; + } + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java new file mode 100644 index 0000000000..83858403ef --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java @@ -0,0 +1,14 @@ +package com.baeldung.hexagonalPattern.ports; + +import java.util.List; +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryRepo { + // Outbound Port. + + public void insertBook(Book book); + + public Book searchBook(String name); + + public List getAllBooks(); +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java new file mode 100644 index 0000000000..7391b4795d --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java @@ -0,0 +1,15 @@ +package com.baeldung.hexagonalPattern.ports; + +import java.util.List; +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryService { +//This is the in bound port.exposes the application to the world. + + public void insertBook(Book book); + + public Book lendBook(String name); + + List getAllBooks(); + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java new file mode 100644 index 0000000000..16d7beac87 --- /dev/null +++ b/hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java @@ -0,0 +1,24 @@ +package com.baeldung.hexagonalPattern.web; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryRestUI { + // This is the in bound Adapter + + @PostMapping + void insertBook(@RequestBody Book book); + + @GetMapping("/{name}") + public Book searchBook(@PathVariable String name); + + @GetMapping + public List listAllBooks(); + +} From f92573f298076182050d2be779ccb5c29fe02768 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Mon, 22 Mar 2021 13:17:17 +0530 Subject: [PATCH 04/27] committing code changes with a simple Junit test. corrected the project structure as well. --- hexagonal-example/pom.xml | 101 +++++++++++++----- .../src/com/baeldung/HexagonalLibrary.java | 13 --- .../adapter/LibraryRepoImpl.java | 39 ------- .../adapter/LibraryRestController.java | 37 ------- .../hexagonalPattern/core/domain/Book.java | 33 ------ .../core/impl/LibraryServiceImpl.java | 38 ------- .../ports/LibraryService.java | 15 --- .../HexagonalLibraryApplication.java | 11 ++ .../adapters/LibraryRepoImpl.java | 40 +++++++ .../adapters/LibraryRestController.java | 38 +++++++ .../hexagonalPattern/core/domain/Book.java | 33 ++++++ .../core/impl/LibraryServiceImpl.java | 33 ++++++ .../hexagonalPattern/ports/LibraryRepo.java | 7 +- .../ports/LibraryService.java | 15 +++ .../hexagonalPattern/web/LibraryRestUI.java | 14 +-- .../HexagonalLibraryApplicationTest.java | 46 ++++++++ 16 files changed, 303 insertions(+), 210 deletions(-) delete mode 100644 hexagonal-example/src/com/baeldung/HexagonalLibrary.java delete mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java delete mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java delete mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java delete mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java delete mode 100644 hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java create mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java create mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java create mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java create mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java create mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java rename hexagonal-example/src/{ => main/java}/com/baeldung/hexagonalPattern/ports/LibraryRepo.java (55%) create mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java rename hexagonal-example/src/{ => main/java}/com/baeldung/hexagonalPattern/web/LibraryRestUI.java (63%) create mode 100644 hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java diff --git a/hexagonal-example/pom.xml b/hexagonal-example/pom.xml index 47bd8e7489..eaa05332a8 100644 --- a/hexagonal-example/pom.xml +++ b/hexagonal-example/pom.xml @@ -1,47 +1,100 @@ + 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.1.6.RELEASE - - + com.baeldung - HexagonalLibrary + hexagonalPattern 0.0.1-SNAPSHOT - HexagonalLibrary - HexagonalLibrary + + hexagonalPattern + + 1.8 + UTF-8 + 1.8 + 1.8 - org.springframework.boot - spring-boot-starter-web + org.junit.jupiter + junit-jupiter-engine + 5.1.0 + test - org.springframework.boot - spring-boot-starter-test + spring-boot-starter-parent + 2.2.1.RELEASE + pom + + + org.springframework.boot + spring-boot-starter-web + 2.2.1.RELEASE + + + org.mockito + mockito-core + 2.26.0 + + + org.mockito + mockito-core + 2.22.0 test - - - org.springframework.boot - spring-boot-maven-plugin - - com.baeldung.HexagonalLibrary - - - + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + - - \ No newline at end of file + diff --git a/hexagonal-example/src/com/baeldung/HexagonalLibrary.java b/hexagonal-example/src/com/baeldung/HexagonalLibrary.java deleted file mode 100644 index b730fa1244..0000000000 --- a/hexagonal-example/src/com/baeldung/HexagonalLibrary.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class HexagonalLibrary { - - public static void main(String[] args) { - SpringApplication.run(HexagonalLibrary.class, args); - } - -} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java deleted file mode 100644 index 1b678a4e80..0000000000 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRepoImpl.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.baeldung.hexagonalPattern.adapter; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Repository; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.ports.LibraryRepo; - -@Repository -public class LibraryRepoImpl implements LibraryRepo { - // This class is the actual implementation of the out bound port/adapter. - - private HashMap books = new HashMap(); - - @Override - public void insertBook(Book book) { - // Mock Database call here. - books.put("mock", new Book("mock", "mock", "mock")); - } - - @Override - public Book searchBook(String name) { - // TODO Auto-generated method stub - Book b = new Book(); - // Some code for retrieval of book from db - return b; - } - - @Override - public List getAllBooks() { - // Fetch all books from db - return books.values().stream().collect(Collectors.toList()); - } - -} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java deleted file mode 100644 index 176b8471b5..0000000000 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/adapter/LibraryRestController.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.hexagonalPattern.adapter; - -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.web.LibraryRestUI; - -@RestController -public class LibraryRestController implements LibraryRestUI { - - @Override - @RequestMapping("/library") - public void insertBook(Book book) { - // TODO Auto-generated method stub - - } - - @Override - @GetMapping("/searchBook") - public Book searchBook(@PathVariable String name) { - // TODO Auto-generated method stub - return null; - } - - @Override - @GetMapping("/listBooks") - public List listAllBooks() { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java deleted file mode 100644 index 38e761ba50..0000000000 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/core/domain/Book.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.hexagonalPattern.core.domain; - -public class Book { - - private String name; - private String author_list; - private String isbn13; - - /* constructors and getter and setters */ - public Book(String string, String string2, String string3) { - // TODO Auto-generated constructor stub - } - - public Book() { - // TODO Auto-generated constructor stub - } - - /* - * public String getName() { return name; } - * - * public void setName(String name) { this.name = name; } - * - * public String getAuthor_list() { return author_list; } - * - * public void setAuthor_list(String author_list) { this.author_list = - * author_list; } - * - * public String getIsbn13() { return isbn13; } - * - * public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } - */ - -} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java deleted file mode 100644 index 1bde7c8d0e..0000000000 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.hexagonalPattern.core.impl; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.ports.LibraryRepo; -import com.baeldung.hexagonalPattern.ports.LibraryService; - -@Service -public class LibraryServiceImpl implements LibraryService { - - // This is the class which actually implements the methods from the ports. - // The ports are just for exposing the methods to the outside. - - @Autowired - private LibraryRepo bookRepo; - - @Override - public void insertBook(Book book) { - // TODO some implementation to insert record in the db or similar - bookRepo.insertBook(book); - } - - @Override - public Book lendBook(String name) { - // TODO Auto-generated method stub - return bookRepo.searchBook(name); - } - - @Override - public List getAllBooks() { - // TODO Auto-generated method - return null; - } - -} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java b/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java deleted file mode 100644 index 7391b4795d..0000000000 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.hexagonalPattern.ports; - -import java.util.List; -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryService { -//This is the in bound port.exposes the application to the world. - - public void insertBook(Book book); - - public Book lendBook(String name); - - List getAllBooks(); - -} diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java new file mode 100644 index 0000000000..62f35111db --- /dev/null +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java @@ -0,0 +1,11 @@ +package com.baeldung.hexagonalPattern; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class HexagonalLibraryApplication { + public static void main(String[] args) { + SpringApplication.run(HexagonalLibraryApplication.class, args); + } +} diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java new file mode 100644 index 0000000000..c8fe584419 --- /dev/null +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java @@ -0,0 +1,40 @@ +package com.baeldung.hexagonalPattern.adapters; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import org.springframework.stereotype.Repository; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.ports.LibraryRepo; + +@Repository +public class LibraryRepoImpl implements LibraryRepo { + // This class is the actual implementation of the out bound port/adapter. + + private HashMap books = new HashMap(); + + @Override + public int insertBook(Book book) { + // Mock Database call here. + books.put("mock", new Book("mock", "mock", "mock")); + return 1; + } + + @Override + public Book searchBook(String name) { + // TODO Auto-generated method stub + Book b = new Book(); + // Some code for retrieval of book from db + return b; + } + + @Override + public List getAllBooks() { + // Fetch all books from db + return books.values().stream().collect(Collectors.toList()); + } + +} diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java new file mode 100644 index 0000000000..92c4b0a8a7 --- /dev/null +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java @@ -0,0 +1,38 @@ +package com.baeldung.hexagonalPattern.adapters; + +import java.util.List; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.web.LibraryRestUI; + +@RestController +@RequestMapping("/library") +public class LibraryRestController implements LibraryRestUI { + + @Override + @PostMapping("/insertBook") + public int insertBook(Book book) { + return 0; + } + + @Override + @GetMapping("/searchBook") + public Book searchBook(@PathVariable String name) { + // TODO Auto-generated method stub + return null; + } + + @Override + @GetMapping("/listBooks") + public List listAllBooks() { + // TODO Auto-generated method stub + return null; + } + +} diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java new file mode 100644 index 0000000000..9551d0f09d --- /dev/null +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java @@ -0,0 +1,33 @@ +package com.baeldung.hexagonalPattern.core.domain; + +public class Book { + + private String name; + private String author_list; + private String isbn13; + + /* constructors and getter and setters */ + public Book(String string, String string2, String string3) { + // TODO Auto-generated constructor stub + } + + public Book() { + // TODO Auto-generated constructor stub + } + + /* + * public String getName() { return name; } + * + * public void setName(String name) { this.name = name; } + * + * public String getAuthor_list() { return author_list; } + * + * public void setAuthor_list(String author_list) { this.author_list = + * author_list; } + * + * public String getIsbn13() { return isbn13; } + * + * public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } + */ + +} diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java new file mode 100644 index 0000000000..de64e46f36 --- /dev/null +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java @@ -0,0 +1,33 @@ +package com.baeldung.hexagonalPattern.core.impl; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.hexagonalPattern.adapters.LibraryRepoImpl; +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.ports.LibraryService; + +@Service +public class LibraryServiceImpl implements LibraryService { + + @Autowired + private LibraryRepoImpl bookRepo = new LibraryRepoImpl(); + + @Override + public int insertBook(Book book) { + bookRepo.insertBook(book); + return 1; + } + + @Override + public Book searchBook(String name) { + return bookRepo.searchBook(name); + } + + @Override + public List getAllBooks() { + return bookRepo.getAllBooks(); + } +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java similarity index 55% rename from hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java rename to hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java index 83858403ef..99de3c2e93 100644 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/ports/LibraryRepo.java +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java @@ -4,11 +4,10 @@ import java.util.List; import com.baeldung.hexagonalPattern.core.domain.Book; public interface LibraryRepo { - // Outbound Port. - public void insertBook(Book book); + public int insertBook(Book book); - public Book searchBook(String name); + public Book searchBook(String name); - public List getAllBooks(); + public List getAllBooks(); } diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java new file mode 100644 index 0000000000..947ea402dc --- /dev/null +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java @@ -0,0 +1,15 @@ +package com.baeldung.hexagonalPattern.ports; + +import java.util.List; + +import com.baeldung.hexagonalPattern.core.domain.Book; + +public interface LibraryService { + + public int insertBook(Book book); + + public Book searchBook(String name); + + public List getAllBooks(); + +} diff --git a/hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java similarity index 63% rename from hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java rename to hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java index 16d7beac87..e212fca33d 100644 --- a/hexagonal-example/src/com/baeldung/hexagonalPattern/web/LibraryRestUI.java +++ b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java @@ -10,15 +10,15 @@ import org.springframework.web.bind.annotation.RequestBody; import com.baeldung.hexagonalPattern.core.domain.Book; public interface LibraryRestUI { - // This is the in bound Adapter + // This is the in bound Adapter - @PostMapping - void insertBook(@RequestBody Book book); + @PostMapping + public int insertBook(@RequestBody Book book); - @GetMapping("/{name}") - public Book searchBook(@PathVariable String name); + @GetMapping + public Book searchBook(@PathVariable String name); - @GetMapping - public List listAllBooks(); + @GetMapping + public List listAllBooks(); } diff --git a/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java b/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java new file mode 100644 index 0000000000..bee384eb7d --- /dev/null +++ b/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java @@ -0,0 +1,46 @@ +package com.baeldung.hexagonalPattern; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.junit.MockitoJUnitRunner; + +import com.baeldung.hexagonalPattern.core.domain.Book; +import com.baeldung.hexagonalPattern.core.impl.LibraryServiceImpl; + +@RunWith(MockitoJUnitRunner.class) +public class HexagonalLibraryApplicationTest { + + @Mock + private LibraryServiceImpl libService = org.mockito.Mockito.mock(LibraryServiceImpl.class);; + Book bk = new Book(); + Book book; + + @Test + public void testInsertBook() { + Mockito.when(libService.insertBook(bk)).thenReturn(1); + int returnVal = libService.insertBook(bk); + assertEquals(1, returnVal); + } + + @Test + public void testSearchBook() { + Book returnBook = new Book(); + Mockito.lenient().when(libService.searchBook("Pride and Prejudice")).thenReturn(returnBook); + assertNotNull(returnBook); + } + + @Test + public void testGetAllBooks() { + List returnBookList = new ArrayList(); + returnBookList = libService.getAllBooks(); + assertNotNull(returnBookList); + } +} From 54277a0bfba08cc40274218ba4b9027bdd73a275 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Mon, 26 Apr 2021 09:59:09 +0530 Subject: [PATCH 05/27] changed the test namesas per Bdd convention --- .../hexagonalPattern/HexagonalLibraryApplicationTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java b/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java index bee384eb7d..c73ae11d1d 100644 --- a/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java +++ b/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java @@ -24,21 +24,21 @@ public class HexagonalLibraryApplicationTest { Book book; @Test - public void testInsertBook() { + public void when_InsertBook_then_returnInteger() { Mockito.when(libService.insertBook(bk)).thenReturn(1); int returnVal = libService.insertBook(bk); assertEquals(1, returnVal); } @Test - public void testSearchBook() { + public void when_SearchBook_then_returnBookObject() { Book returnBook = new Book(); Mockito.lenient().when(libService.searchBook("Pride and Prejudice")).thenReturn(returnBook); assertNotNull(returnBook); } @Test - public void testGetAllBooks() { + public void when_getAllBooks_then_returnListofBookObjects() { List returnBookList = new ArrayList(); returnBookList = libService.getAllBooks(); assertNotNull(returnBookList); From a6a9db70658c278c13da86229fd39eb1bcc7937d Mon Sep 17 00:00:00 2001 From: rvsathe Date: Sun, 9 May 2021 21:21:26 +0530 Subject: [PATCH 06/27] Committing changes for BAEL-3962 --- java-download-email/pom.xml | 82 +++++++++++++ .../DownloadEmailAttachments.java | 116 ++++++++++++++++++ .../DownloadEmailAttachmentsTest.java | 25 ++++ 3 files changed, 223 insertions(+) create mode 100644 java-download-email/pom.xml create mode 100644 java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java create mode 100644 java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java diff --git a/java-download-email/pom.xml b/java-download-email/pom.xml new file mode 100644 index 0000000000..7885fd9a48 --- /dev/null +++ b/java-download-email/pom.xml @@ -0,0 +1,82 @@ + + + + 4.0.0 + + DemoEmailAttachment + EmailAttachments + 0.0.1-SNAPSHOT + + EmailAttachments + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + com.sun.mail + javax.mail + 1.6.2 + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java new file mode 100644 index 0000000000..c320b69b75 --- /dev/null +++ b/java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java @@ -0,0 +1,116 @@ +package com.baeldung.downloadAttachments; + +import java.io.File; +import java.io.IOException; +import java.util.Properties; +import javax.mail.Address; +import javax.mail.Folder; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Multipart; +import javax.mail.NoSuchProviderException; +import javax.mail.Part; +import javax.mail.Session; +import javax.mail.Store; +import javax.mail.internet.MimeBodyPart; + +public class DownloadEmailAttachments { + private String downloadDirectory; + + public void setSaveDirectory(String dir) { + this.downloadDirectory = dir; + } + + public void downloadEmailAttachments(String host, String port, String userName, String password) throws NoSuchProviderException, MessagingException, IOException { + Properties properties = setMailServerProperties(host, port); + Store store = setSessionStoreProperties(userName, password, properties); + Folder inbox = store.getFolder("INBOX"); + inbox.open(Folder.READ_ONLY); + Message[] arrayMessages = inbox.getMessages(); + for (int i = 0; i < arrayMessages.length; i++) { + Message message = arrayMessages[i]; + Address[] fromAddress = message.getFrom(); + String from = fromAddress[0].toString(); + String subject = message.getSubject(); + String sentDate = message.getSentDate() + .toString(); + String contentType = message.getContentType(); + String messageContent = ""; + String attachments = ""; + if (contentType.contains("multipart")) { + Multipart multiPart = (Multipart) message.getContent(); + int numberOfParts = multiPart.getCount(); + for (int partCount = 0; partCount < numberOfParts; partCount++) { + MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount); + if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) { + String file = part.getFileName(); + attachments += file + ", "; + part.saveFile(downloadDirectory + File.separator + file); + } else { + messageContent = part.getContent() + .toString(); + } + } + if (attachments.length() > 1) { + attachments = attachments.substring(0, attachments.length() - 2); + } + } else if (contentType.contains("text/plain") || contentType.contains("text/html")) { + Object content = message.getContent(); + if (content != null) { + messageContent = content.toString(); + } + } + System.out.println("Message #" + (i + 1) + ":"); + System.out.println(" From: " + from); + System.out.println(" Subject: " + subject); + System.out.println(" Sent Date: " + sentDate); + System.out.println(" Message: " + messageContent); + System.out.println(" Attachments: " + attachments); + } + inbox.close(false); + store.close(); + } + + public Store setSessionStoreProperties(String userName, String password, Properties properties) throws NoSuchProviderException, MessagingException { + Session session = Session.getDefaultInstance(properties); + + Store store = session.getStore("pop3"); + store.connect(userName, password); + return store; + } + + public Properties setMailServerProperties(String host, String port) { + Properties properties = new Properties(); + + properties.put("mail.pop3.host", host); + properties.put("mail.pop3.port", port); + + properties.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + properties.setProperty("mail.pop3.socketFactory.fallback", "false"); + properties.setProperty("mail.pop3.socketFactory.port", String.valueOf(port)); + return properties; + } + + public static void main(String[] args) { + String host = "pop.gmail.com"; + String port = "995"; + String userName = "your_email"; + String password = "your_password"; + + String saveDirectory = "valid_folder_path"; + + DownloadEmailAttachments receiver = new DownloadEmailAttachments(); + receiver.setSaveDirectory(saveDirectory); + try { + receiver.downloadEmailAttachments(host, port, userName, password); + } catch (NoSuchProviderException ex) { + System.out.println("No provider for pop3."); + ex.printStackTrace(); + } catch (MessagingException ex) { + System.out.println("Could not connect to the message store"); + ex.printStackTrace(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java b/java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java new file mode 100644 index 0000000000..b23ec87f05 --- /dev/null +++ b/java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java @@ -0,0 +1,25 @@ +package com.baeldung.downloadAttachments; + +import static org.junit.Assert.fail; +import org.junit.Test; + +public class DownloadEmailAttachmentsTest { + @Test + public void when_Run_then_downloadAttachments() { + + String host = "pop.gmail.com"; + String port = "995"; + String userName = "your_email"; + String password = "your_password"; + + String saveDirectory = "valid_folder_path"; + + DownloadEmailAttachments receiver = new DownloadEmailAttachments(); + receiver.setSaveDirectory(saveDirectory); + try { + receiver.downloadEmailAttachments(host, port, userName, password); + } catch (Exception ex) { + fail("Exception: " + ex); + } + } +} From 9f67625dc95d7e90749f042f91b35e843d7f8114 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:39:40 +0530 Subject: [PATCH 07/27] do not need --- hexagonal-example/pom.xml | 100 -------------------------------------- 1 file changed, 100 deletions(-) delete mode 100644 hexagonal-example/pom.xml diff --git a/hexagonal-example/pom.xml b/hexagonal-example/pom.xml deleted file mode 100644 index eaa05332a8..0000000000 --- a/hexagonal-example/pom.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - 4.0.0 - - com.baeldung - hexagonalPattern - 0.0.1-SNAPSHOT - - hexagonalPattern - - - - - 1.8 - UTF-8 - 1.8 - 1.8 - - - - - org.junit.jupiter - junit-jupiter-engine - 5.1.0 - test - - - org.springframework.boot - spring-boot-starter-parent - 2.2.1.RELEASE - pom - - - org.springframework.boot - spring-boot-starter-web - 2.2.1.RELEASE - - - org.mockito - mockito-core - 2.26.0 - - - org.mockito - mockito-core - 2.22.0 - test - - - - - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - - - From 9bd03a2523f3d6430fa284b3346eb762ceccbefa Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:41:12 +0530 Subject: [PATCH 08/27] do not need --- .../hexagonalPattern/HexagonalLibraryApplication.java | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java deleted file mode 100644 index 62f35111db..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplication.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.hexagonalPattern; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class HexagonalLibraryApplication { - public static void main(String[] args) { - SpringApplication.run(HexagonalLibraryApplication.class, args); - } -} From 30b91e85ebda27af3a91ef21a86de2990c64fde4 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:41:26 +0530 Subject: [PATCH 09/27] do not need --- .../adapters/LibraryRepoImpl.java | 40 ------------------- 1 file changed, 40 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java deleted file mode 100644 index c8fe584419..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRepoImpl.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.baeldung.hexagonalPattern.adapters; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Repository; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.ports.LibraryRepo; - -@Repository -public class LibraryRepoImpl implements LibraryRepo { - // This class is the actual implementation of the out bound port/adapter. - - private HashMap books = new HashMap(); - - @Override - public int insertBook(Book book) { - // Mock Database call here. - books.put("mock", new Book("mock", "mock", "mock")); - return 1; - } - - @Override - public Book searchBook(String name) { - // TODO Auto-generated method stub - Book b = new Book(); - // Some code for retrieval of book from db - return b; - } - - @Override - public List getAllBooks() { - // Fetch all books from db - return books.values().stream().collect(Collectors.toList()); - } - -} From e5b7f6fccdef0762ae68c87bea8608ee825bdebf Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:41:53 +0530 Subject: [PATCH 10/27] do not need --- .../adapters/LibraryRestController.java | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java deleted file mode 100644 index 92c4b0a8a7..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/adapters/LibraryRestController.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.baeldung.hexagonalPattern.adapters; - -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.web.LibraryRestUI; - -@RestController -@RequestMapping("/library") -public class LibraryRestController implements LibraryRestUI { - - @Override - @PostMapping("/insertBook") - public int insertBook(Book book) { - return 0; - } - - @Override - @GetMapping("/searchBook") - public Book searchBook(@PathVariable String name) { - // TODO Auto-generated method stub - return null; - } - - @Override - @GetMapping("/listBooks") - public List listAllBooks() { - // TODO Auto-generated method stub - return null; - } - -} From 4e3516f9f885504576ab6eb04de8343171094ad7 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:42:15 +0530 Subject: [PATCH 11/27] do not need --- .../hexagonalPattern/core/domain/Book.java | 33 ------------------- 1 file changed, 33 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java deleted file mode 100644 index 9551d0f09d..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/domain/Book.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.hexagonalPattern.core.domain; - -public class Book { - - private String name; - private String author_list; - private String isbn13; - - /* constructors and getter and setters */ - public Book(String string, String string2, String string3) { - // TODO Auto-generated constructor stub - } - - public Book() { - // TODO Auto-generated constructor stub - } - - /* - * public String getName() { return name; } - * - * public void setName(String name) { this.name = name; } - * - * public String getAuthor_list() { return author_list; } - * - * public void setAuthor_list(String author_list) { this.author_list = - * author_list; } - * - * public String getIsbn13() { return isbn13; } - * - * public void setIsbn13(String isbn13) { this.isbn13 = isbn13; } - */ - -} From 42abea54d89a65c343c00258e45c9a54ba731300 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:42:36 +0530 Subject: [PATCH 12/27] do not need --- .../core/impl/LibraryServiceImpl.java | 33 ------------------- 1 file changed, 33 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java deleted file mode 100644 index de64e46f36..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/core/impl/LibraryServiceImpl.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.hexagonalPattern.core.impl; - -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.baeldung.hexagonalPattern.adapters.LibraryRepoImpl; -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.ports.LibraryService; - -@Service -public class LibraryServiceImpl implements LibraryService { - - @Autowired - private LibraryRepoImpl bookRepo = new LibraryRepoImpl(); - - @Override - public int insertBook(Book book) { - bookRepo.insertBook(book); - return 1; - } - - @Override - public Book searchBook(String name) { - return bookRepo.searchBook(name); - } - - @Override - public List getAllBooks() { - return bookRepo.getAllBooks(); - } -} From 1c57f9d3e9fd3bab751ef6c7e4fa139d9d31e2dc Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:42:54 +0530 Subject: [PATCH 13/27] do not need --- .../hexagonalPattern/ports/LibraryRepo.java | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java deleted file mode 100644 index 99de3c2e93..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryRepo.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.hexagonalPattern.ports; - -import java.util.List; -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryRepo { - - public int insertBook(Book book); - - public Book searchBook(String name); - - public List getAllBooks(); -} From 5578045af2542be4aed6b87d68f1c536d74eaef3 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:43:12 +0530 Subject: [PATCH 14/27] do not need --- .../hexagonalPattern/ports/LibraryService.java | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java deleted file mode 100644 index 947ea402dc..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/ports/LibraryService.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.baeldung.hexagonalPattern.ports; - -import java.util.List; - -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryService { - - public int insertBook(Book book); - - public Book searchBook(String name); - - public List getAllBooks(); - -} From b29c74844a9e62d17122992cbe31ffdcc41b1e23 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:43:35 +0530 Subject: [PATCH 15/27] do not need --- .../hexagonalPattern/web/LibraryRestUI.java | 24 ------------------- 1 file changed, 24 deletions(-) delete mode 100644 hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java diff --git a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java b/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java deleted file mode 100644 index e212fca33d..0000000000 --- a/hexagonal-example/src/main/java/com/baeldung/hexagonalPattern/web/LibraryRestUI.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.hexagonalPattern.web; - -import java.util.List; - -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; - -import com.baeldung.hexagonalPattern.core.domain.Book; - -public interface LibraryRestUI { - // This is the in bound Adapter - - @PostMapping - public int insertBook(@RequestBody Book book); - - @GetMapping - public Book searchBook(@PathVariable String name); - - @GetMapping - public List listAllBooks(); - -} From dfe5f660f1e86ce91a1601a96818bed468aa8987 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Tue, 11 May 2021 07:44:05 +0530 Subject: [PATCH 16/27] do not need --- .../HexagonalLibraryApplicationTest.java | 46 ------------------- 1 file changed, 46 deletions(-) delete mode 100644 hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java diff --git a/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java b/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java deleted file mode 100644 index c73ae11d1d..0000000000 --- a/hexagonal-example/src/test/java/com/baeldung/hexagonalPattern/HexagonalLibraryApplicationTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.hexagonalPattern; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.util.ArrayList; -import java.util.List; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.Mock; -import org.mockito.Mockito; -import org.mockito.junit.MockitoJUnitRunner; - -import com.baeldung.hexagonalPattern.core.domain.Book; -import com.baeldung.hexagonalPattern.core.impl.LibraryServiceImpl; - -@RunWith(MockitoJUnitRunner.class) -public class HexagonalLibraryApplicationTest { - - @Mock - private LibraryServiceImpl libService = org.mockito.Mockito.mock(LibraryServiceImpl.class);; - Book bk = new Book(); - Book book; - - @Test - public void when_InsertBook_then_returnInteger() { - Mockito.when(libService.insertBook(bk)).thenReturn(1); - int returnVal = libService.insertBook(bk); - assertEquals(1, returnVal); - } - - @Test - public void when_SearchBook_then_returnBookObject() { - Book returnBook = new Book(); - Mockito.lenient().when(libService.searchBook("Pride and Prejudice")).thenReturn(returnBook); - assertNotNull(returnBook); - } - - @Test - public void when_getAllBooks_then_returnListofBookObjects() { - List returnBookList = new ArrayList(); - returnBookList = libService.getAllBooks(); - assertNotNull(returnBookList); - } -} From 836a94985cb132d4105564bd02c49cb677c544ce Mon Sep 17 00:00:00 2001 From: rvsathe Date: Mon, 17 May 2021 21:01:00 +0530 Subject: [PATCH 17/27] shifting the BAEL-3962 to core-java-networking-3 module. --- .../core-java-networking-3/pom.xml | 64 +++++++++- .../DownloadEmailAttachments.java | 114 ++++++++++++++++++ .../DownloadEmailAttachmentsUnitTest.java | 25 ++++ 3 files changed, 200 insertions(+), 3 deletions(-) create mode 100644 core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java create mode 100644 core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java diff --git a/core-java-modules/core-java-networking-3/pom.xml b/core-java-modules/core-java-networking-3/pom.xml index 35e88b3b92..73c392f51a 100644 --- a/core-java-modules/core-java-networking-3/pom.xml +++ b/core-java-modules/core-java-networking-3/pom.xml @@ -36,16 +36,74 @@ ${assertj.version} test + + junit + junit + 4.11 + test + + + com.sun.mail + javax.mail + 1.6.2 + core-java-networking-3 - - + + + + org.apache.maven.plugins maven-compiler-plugin - + + + org.apache.maven.plugins + maven-compiler-plugin + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + diff --git a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java new file mode 100644 index 0000000000..4ca5a419ae --- /dev/null +++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java @@ -0,0 +1,114 @@ +package com.baeldung.downloadAttachments; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import javax.mail.Address; +import javax.mail.Folder; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Multipart; +import javax.mail.NoSuchProviderException; +import javax.mail.Part; +import javax.mail.Session; +import javax.mail.Store; +import javax.mail.internet.MimeBodyPart; + +public class DownloadEmailAttachments { + private String downloadDirectory; + + public void setSaveDirectory(String dir) { + this.downloadDirectory = dir; + } + + public void downloadEmailAttachments(String host, String port, String userName, String password) throws NoSuchProviderException, MessagingException, IOException { + Properties properties = setMailServerProperties(host, port); + Store store = setSessionStoreProperties(userName, password, properties); + Folder inbox = store.getFolder("INBOX"); + inbox.open(Folder.READ_ONLY); + Message[] arrayMessages = inbox.getMessages(); + for (int i = 0; i < arrayMessages.length; i++) { + Message message = arrayMessages[i]; + Address[] fromAddress = message.getFrom(); + String from = fromAddress[0].toString(); + String subject = message.getSubject(); + String sentDate = message.getSentDate() + .toString(); + List attachments = new ArrayList(); + if (message.getContentType() + .contains("multipart")) { + attachments = downloadEmailMessages(message); + } + + System.out.println("Message #" + (i + 1) + ":"); + System.out.println(" From: " + from); + System.out.println(" Subject: " + subject); + System.out.println(" Sent Date: " + sentDate); + System.out.println(" Attachments: " + attachments); + } + inbox.close(false); + store.close(); + } + + public List downloadEmailMessages(Message message) throws IOException, MessagingException { + List downloadedAttachments = new ArrayList(); + Multipart multiPart = (Multipart) message.getContent(); + int numberOfParts = multiPart.getCount(); + for (int partCount = 0; partCount < numberOfParts; partCount++) { + MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount); + if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) { + String file = part.getFileName(); + part.saveFile(downloadDirectory + File.separator + part.getFileName()); + downloadedAttachments.add(file); + } + } + + return downloadedAttachments; + } + + public Store setSessionStoreProperties(String userName, String password, Properties properties) throws NoSuchProviderException, MessagingException { + Session session = Session.getDefaultInstance(properties); + + Store store = session.getStore("pop3"); + store.connect(userName, password); + return store; + } + + public Properties setMailServerProperties(String host, String port) { + Properties properties = new Properties(); + + properties.put("mail.pop3.host", host); + properties.put("mail.pop3.port", port); + + properties.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); + properties.setProperty("mail.pop3.socketFactory.fallback", "false"); + properties.setProperty("mail.pop3.socketFactory.port", String.valueOf(port)); + return properties; + } + + public static void main(String[] args) { + String host = "pop.gmail.com"; + String port = "995"; + String userName = "your_email"; + String password = "your_password"; + + String saveDirectory = "valid_folder_path"; + + DownloadEmailAttachments receiver = new DownloadEmailAttachments(); + receiver.setSaveDirectory(saveDirectory); + try { + receiver.downloadEmailAttachments(host, port, userName, password); + } catch (NoSuchProviderException ex) { + System.out.println("No provider for pop3."); + ex.printStackTrace(); + } catch (MessagingException ex) { + System.out.println("Could not connect to the message store"); + ex.printStackTrace(); + } catch (IOException ex) { + ex.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java new file mode 100644 index 0000000000..7e0582fed9 --- /dev/null +++ b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java @@ -0,0 +1,25 @@ +package com.baeldung.downloadAttachments; + +import static org.junit.Assert.fail; +import org.junit.Test; + +public class DownloadEmailAttachmentsUnitTest { + @Test + public void when_Run_then_downloadAttachments() { + + String host = "pop.gmail.com"; + String port = "995"; + String userName = "your_email"; + String password = "your_password"; + + String saveDirectory = "valid_folder_path"; + + DownloadEmailAttachments receiver = new DownloadEmailAttachments(); + receiver.setSaveDirectory(saveDirectory); + try { + receiver.downloadEmailAttachments(host, port, userName, password); + } catch (Exception ex) { + fail("Exception: " + ex); + } + } +} From 927106de3e353f2703751aadbc8485d3188f9d67 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Wed, 19 May 2021 17:41:38 +0530 Subject: [PATCH 18/27] removing the extra plugins since they are not necessary. --- .../core-java-networking-3/pom.xml | 133 ++++++------------ .../DownloadEmailAttachments.java | 4 +- 2 files changed, 46 insertions(+), 91 deletions(-) diff --git a/core-java-modules/core-java-networking-3/pom.xml b/core-java-modules/core-java-networking-3/pom.xml index 73c392f51a..add5051d0c 100644 --- a/core-java-modules/core-java-networking-3/pom.xml +++ b/core-java-modules/core-java-networking-3/pom.xml @@ -1,41 +1,41 @@ - 4.0.0 - core-java-networking-3 - core-java-networking-3 - jar + 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 + core-java-networking-3 + core-java-networking-3 + jar - - com.baeldung.core-java-modules - core-java-modules - 0.0.1-SNAPSHOT - ../pom.xml - + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + ../pom.xml + - - - org.springframework - spring-core - ${spring.core.version} - - - org.eclipse.jetty - jetty-server - ${jetty.embeded.version} - - - org.apache.tomcat.embed - tomcat-embed-core - ${tomcat.embeded.version} - - - org.assertj - assertj-core - ${assertj.version} - test - + + + org.springframework + spring-core + ${spring.core.version} + + + org.eclipse.jetty + jetty-server + ${jetty.embeded.version} + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.embeded.version} + + + org.assertj + assertj-core + ${assertj.version} + test + junit junit @@ -47,70 +47,25 @@ javax.mail 1.6.2 - + - - core-java-networking-3 + + core-java-networking-3 - - - org.apache.maven.plugins - maven-compiler-plugin - - org.apache.maven.plugins maven-compiler-plugin - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - + - - 5.2.8.RELEASE - 9.4.31.v20200723 - 10.0.0-M7 - 3.11.1 - + + 5.2.8.RELEASE + 9.4.31.v20200723 + 10.0.0-M7 + 3.11.1 + \ No newline at end of file diff --git a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java index 4ca5a419ae..cd9cb443d8 100644 --- a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java +++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java @@ -40,7 +40,7 @@ public class DownloadEmailAttachments { List attachments = new ArrayList(); if (message.getContentType() .contains("multipart")) { - attachments = downloadEmailMessages(message); + attachments = downloadAttachments(message); } System.out.println("Message #" + (i + 1) + ":"); @@ -53,7 +53,7 @@ public class DownloadEmailAttachments { store.close(); } - public List downloadEmailMessages(Message message) throws IOException, MessagingException { + public List downloadAttachments(Message message) throws IOException, MessagingException { List downloadedAttachments = new ArrayList(); Multipart multiPart = (Multipart) message.getContent(); int numberOfParts = multiPart.getCount(); From 4135a964fd22fc7492a26538cd41b4f8d50f63b9 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Wed, 19 May 2021 17:54:36 +0530 Subject: [PATCH 19/27] Delete pom.xml not required. --- java-download-email/pom.xml | 82 ------------------------------------- 1 file changed, 82 deletions(-) delete mode 100644 java-download-email/pom.xml diff --git a/java-download-email/pom.xml b/java-download-email/pom.xml deleted file mode 100644 index 7885fd9a48..0000000000 --- a/java-download-email/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - - 4.0.0 - - DemoEmailAttachment - EmailAttachments - 0.0.1-SNAPSHOT - - EmailAttachments - - http://www.example.com - - - UTF-8 - 1.7 - 1.7 - - - - - junit - junit - 4.11 - test - - - com.sun.mail - javax.mail - 1.6.2 - - - - - - - - - maven-clean-plugin - 3.1.0 - - - - maven-resources-plugin - 3.0.2 - - - maven-compiler-plugin - 3.8.0 - - - maven-surefire-plugin - 2.22.1 - - - maven-jar-plugin - 3.0.2 - - - maven-install-plugin - 2.5.2 - - - maven-deploy-plugin - 2.8.2 - - - - maven-site-plugin - 3.7.1 - - - maven-project-info-reports-plugin - 3.0.0 - - - - - From caf88583070d00d496b3881b66c436a2ddeffdeb Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Wed, 19 May 2021 17:55:23 +0530 Subject: [PATCH 20/27] Delete DownloadEmailAttachments.java not required. --- .../DownloadEmailAttachments.java | 116 ------------------ 1 file changed, 116 deletions(-) delete mode 100644 java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java diff --git a/java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java deleted file mode 100644 index c320b69b75..0000000000 --- a/java-download-email/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java +++ /dev/null @@ -1,116 +0,0 @@ -package com.baeldung.downloadAttachments; - -import java.io.File; -import java.io.IOException; -import java.util.Properties; -import javax.mail.Address; -import javax.mail.Folder; -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.Multipart; -import javax.mail.NoSuchProviderException; -import javax.mail.Part; -import javax.mail.Session; -import javax.mail.Store; -import javax.mail.internet.MimeBodyPart; - -public class DownloadEmailAttachments { - private String downloadDirectory; - - public void setSaveDirectory(String dir) { - this.downloadDirectory = dir; - } - - public void downloadEmailAttachments(String host, String port, String userName, String password) throws NoSuchProviderException, MessagingException, IOException { - Properties properties = setMailServerProperties(host, port); - Store store = setSessionStoreProperties(userName, password, properties); - Folder inbox = store.getFolder("INBOX"); - inbox.open(Folder.READ_ONLY); - Message[] arrayMessages = inbox.getMessages(); - for (int i = 0; i < arrayMessages.length; i++) { - Message message = arrayMessages[i]; - Address[] fromAddress = message.getFrom(); - String from = fromAddress[0].toString(); - String subject = message.getSubject(); - String sentDate = message.getSentDate() - .toString(); - String contentType = message.getContentType(); - String messageContent = ""; - String attachments = ""; - if (contentType.contains("multipart")) { - Multipart multiPart = (Multipart) message.getContent(); - int numberOfParts = multiPart.getCount(); - for (int partCount = 0; partCount < numberOfParts; partCount++) { - MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount); - if (Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition())) { - String file = part.getFileName(); - attachments += file + ", "; - part.saveFile(downloadDirectory + File.separator + file); - } else { - messageContent = part.getContent() - .toString(); - } - } - if (attachments.length() > 1) { - attachments = attachments.substring(0, attachments.length() - 2); - } - } else if (contentType.contains("text/plain") || contentType.contains("text/html")) { - Object content = message.getContent(); - if (content != null) { - messageContent = content.toString(); - } - } - System.out.println("Message #" + (i + 1) + ":"); - System.out.println(" From: " + from); - System.out.println(" Subject: " + subject); - System.out.println(" Sent Date: " + sentDate); - System.out.println(" Message: " + messageContent); - System.out.println(" Attachments: " + attachments); - } - inbox.close(false); - store.close(); - } - - public Store setSessionStoreProperties(String userName, String password, Properties properties) throws NoSuchProviderException, MessagingException { - Session session = Session.getDefaultInstance(properties); - - Store store = session.getStore("pop3"); - store.connect(userName, password); - return store; - } - - public Properties setMailServerProperties(String host, String port) { - Properties properties = new Properties(); - - properties.put("mail.pop3.host", host); - properties.put("mail.pop3.port", port); - - properties.setProperty("mail.pop3.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); - properties.setProperty("mail.pop3.socketFactory.fallback", "false"); - properties.setProperty("mail.pop3.socketFactory.port", String.valueOf(port)); - return properties; - } - - public static void main(String[] args) { - String host = "pop.gmail.com"; - String port = "995"; - String userName = "your_email"; - String password = "your_password"; - - String saveDirectory = "valid_folder_path"; - - DownloadEmailAttachments receiver = new DownloadEmailAttachments(); - receiver.setSaveDirectory(saveDirectory); - try { - receiver.downloadEmailAttachments(host, port, userName, password); - } catch (NoSuchProviderException ex) { - System.out.println("No provider for pop3."); - ex.printStackTrace(); - } catch (MessagingException ex) { - System.out.println("Could not connect to the message store"); - ex.printStackTrace(); - } catch (IOException ex) { - ex.printStackTrace(); - } - } -} \ No newline at end of file From 4b71cf5ccbd026c49368e2e4619ec53739ae2b96 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Wed, 19 May 2021 17:56:05 +0530 Subject: [PATCH 21/27] Delete DownloadEmailAttachmentsTest.java not required. --- .../DownloadEmailAttachmentsTest.java | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java diff --git a/java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java b/java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java deleted file mode 100644 index b23ec87f05..0000000000 --- a/java-download-email/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsTest.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.downloadAttachments; - -import static org.junit.Assert.fail; -import org.junit.Test; - -public class DownloadEmailAttachmentsTest { - @Test - public void when_Run_then_downloadAttachments() { - - String host = "pop.gmail.com"; - String port = "995"; - String userName = "your_email"; - String password = "your_password"; - - String saveDirectory = "valid_folder_path"; - - DownloadEmailAttachments receiver = new DownloadEmailAttachments(); - receiver.setSaveDirectory(saveDirectory); - try { - receiver.downloadEmailAttachments(host, port, userName, password); - } catch (Exception ex) { - fail("Exception: " + ex); - } - } -} From 3e61f32493c0682caa2728172c67271206b9d859 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Fri, 21 May 2021 14:48:00 +0530 Subject: [PATCH 22/27] Update DownloadEmailAttachments.java changes as per review comments --- .../downloadAttachments/DownloadEmailAttachments.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java index cd9cb443d8..07fb21c1a2 100644 --- a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java +++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java @@ -35,11 +35,9 @@ public class DownloadEmailAttachments { Address[] fromAddress = message.getFrom(); String from = fromAddress[0].toString(); String subject = message.getSubject(); - String sentDate = message.getSentDate() - .toString(); + String sentDate = message.getSentDate().toString(); List attachments = new ArrayList(); - if (message.getContentType() - .contains("multipart")) { + if (message.getContentType().contains("multipart")) { attachments = downloadAttachments(message); } @@ -111,4 +109,4 @@ public class DownloadEmailAttachments { ex.printStackTrace(); } } -} \ No newline at end of file +} From 51d20e8bdb5bee4b78f6d18fdfdb8c3875c8a7f8 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Fri, 21 May 2021 15:15:48 +0530 Subject: [PATCH 23/27] Update DownloadEmailAttachments.java changing the package name to downloadattachments. --- .../baeldung/downloadAttachments/DownloadEmailAttachments.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java index 07fb21c1a2..4030f3b983 100644 --- a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java +++ b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java @@ -1,4 +1,4 @@ -package com.baeldung.downloadAttachments; +package com.baeldung.downloadattachments; import java.io.File; import java.io.IOException; From 4c75aea71e67d5616d1a6d386bbafe8bf9dadd71 Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Fri, 21 May 2021 15:16:55 +0530 Subject: [PATCH 24/27] Update DownloadEmailAttachmentsUnitTest.java changing the package name to downloadattachments. and file name as per review comments. --- .../downloadAttachments/DownloadEmailAttachmentsUnitTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java index 7e0582fed9..050790e6be 100644 --- a/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java +++ b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java @@ -1,9 +1,9 @@ -package com.baeldung.downloadAttachments; +package com.baeldung.downloadattachments; import static org.junit.Assert.fail; import org.junit.Test; -public class DownloadEmailAttachmentsUnitTest { +public class DownloadEmailAttachmentsLiveTest { @Test public void when_Run_then_downloadAttachments() { From 830f61fafbf7f8dcd18d3a7ca2dbf33859ce049f Mon Sep 17 00:00:00 2001 From: rvsathe <38076470+rvsathe@users.noreply.github.com> Date: Fri, 21 May 2021 15:48:14 +0530 Subject: [PATCH 25/27] Rename DownloadEmailAttachmentsUnitTest.java to DownloadEmailAttachmentsLiveTest.java changes as per review comments --- ...chmentsUnitTest.java => DownloadEmailAttachmentsLiveTest.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/{DownloadEmailAttachmentsUnitTest.java => DownloadEmailAttachmentsLiveTest.java} (100%) diff --git a/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsLiveTest.java similarity index 100% rename from core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsUnitTest.java rename to core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsLiveTest.java From c18a15288df194f94b757fccf1d1662dbecb6be6 Mon Sep 17 00:00:00 2001 From: rvsathe Date: Fri, 21 May 2021 17:27:38 +0530 Subject: [PATCH 26/27] Renamed packages according t code files --- .../DownloadEmailAttachments.java | 0 .../DownloadEmailAttachmentsLiveTest.java | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename core-java-modules/core-java-networking-3/src/main/java/com/baeldung/{downloadAttachments => downloadattachments}/DownloadEmailAttachments.java (100%) rename core-java-modules/core-java-networking-3/src/test/java/com/baeldung/{downloadAttachments => downloadattachments}/DownloadEmailAttachmentsLiveTest.java (100%) diff --git a/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java b/core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadattachments/DownloadEmailAttachments.java similarity index 100% rename from core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadAttachments/DownloadEmailAttachments.java rename to core-java-modules/core-java-networking-3/src/main/java/com/baeldung/downloadattachments/DownloadEmailAttachments.java diff --git a/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsLiveTest.java b/core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadattachments/DownloadEmailAttachmentsLiveTest.java similarity index 100% rename from core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadAttachments/DownloadEmailAttachmentsLiveTest.java rename to core-java-modules/core-java-networking-3/src/test/java/com/baeldung/downloadattachments/DownloadEmailAttachmentsLiveTest.java From 207bcad90ed87921552c69564119e7de1203602d Mon Sep 17 00:00:00 2001 From: rvsathe Date: Fri, 21 May 2021 17:43:32 +0530 Subject: [PATCH 27/27] changing the indent to 4. --- .../core-java-networking-3/pom.xml | 126 +++++++++--------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/core-java-modules/core-java-networking-3/pom.xml b/core-java-modules/core-java-networking-3/pom.xml index add5051d0c..0ad800e173 100644 --- a/core-java-modules/core-java-networking-3/pom.xml +++ b/core-java-modules/core-java-networking-3/pom.xml @@ -1,71 +1,71 @@ - 4.0.0 - core-java-networking-3 - core-java-networking-3 - jar + 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 + core-java-networking-3 + core-java-networking-3 + jar - - com.baeldung.core-java-modules - core-java-modules - 0.0.1-SNAPSHOT - ../pom.xml - + + com.baeldung.core-java-modules + core-java-modules + 0.0.1-SNAPSHOT + ../pom.xml + - - - org.springframework - spring-core - ${spring.core.version} - - - org.eclipse.jetty - jetty-server - ${jetty.embeded.version} - - - org.apache.tomcat.embed - tomcat-embed-core - ${tomcat.embeded.version} - - - org.assertj - assertj-core - ${assertj.version} - test - - - junit - junit - 4.11 - test - - - com.sun.mail - javax.mail - 1.6.2 - - + + + org.springframework + spring-core + ${spring.core.version} + + + org.eclipse.jetty + jetty-server + ${jetty.embeded.version} + + + org.apache.tomcat.embed + tomcat-embed-core + ${tomcat.embeded.version} + + + org.assertj + assertj-core + ${assertj.version} + test + + + junit + junit + 4.11 + test + + + com.sun.mail + javax.mail + 1.6.2 + + - - core-java-networking-3 - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - + + core-java-networking-3 + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + - - 5.2.8.RELEASE - 9.4.31.v20200723 - 10.0.0-M7 - 3.11.1 - + + 5.2.8.RELEASE + 9.4.31.v20200723 + 10.0.0-M7 + 3.11.1 + \ No newline at end of file