From fe9f89ad96f22d26f2e1a2a3c7f8513afdf2fb20 Mon Sep 17 00:00:00 2001 From: Anshul BANSAL Date: Sat, 22 Aug 2020 21:07:24 +0300 Subject: [PATCH 1/8] BAEL-45087 - DAO vs Repository Pattern --- .../repositoryvsdaopattern/Tweet.java | 37 +++++++++++ .../repositoryvsdaopattern/TweetDao.java | 9 +++ .../repositoryvsdaopattern/TweetDaoImpl.java | 17 +++++ .../baeldung/repositoryvsdaopattern/User.java | 63 +++++++++++++++++++ .../repositoryvsdaopattern/UserDao.java | 13 ++++ .../repositoryvsdaopattern/UserDaoImpl.java | 33 ++++++++++ .../UserRepository.java | 21 +++++++ .../UserRepositoryImpl.java | 50 +++++++++++++++ 8 files changed, 243 insertions(+) create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java new file mode 100644 index 0000000000..13576f32f6 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/Tweet.java @@ -0,0 +1,37 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.Date; + +public class Tweet { + + private String email; + + private String tweetText; + + private Date dateCreated; + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getTweetText() { + return tweetText; + } + + public void setTweetText(String tweetText) { + this.tweetText = tweetText; + } + + public Date getDateCreated() { + return dateCreated; + } + + public void setDateCreated(Date dateCreated) { + this.dateCreated = dateCreated; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java new file mode 100644 index 0000000000..144c04e0ad --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDao.java @@ -0,0 +1,9 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public interface TweetDao { + + List fetchTweets(String email); + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java new file mode 100644 index 0000000000..6e4e8a8985 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/TweetDaoImpl.java @@ -0,0 +1,17 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.ArrayList; +import java.util.List; + +public class TweetDaoImpl implements TweetDao { + + @Override + public List fetchTweets(String email) { + List tweets = new ArrayList(); + + //call Twitter API and prepare Tweet object + + return tweets; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java new file mode 100644 index 0000000000..86d3554f7e --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java @@ -0,0 +1,63 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public class User { + + private Long id; + private String userName; + private String firstName; + private String lastName; + private String email; + + private List tweets; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getFirstName() { + return firstName; + } + + public void setFirstName(String firstName) { + this.firstName = firstName; + } + + public String getLastName() { + return lastName; + } + + public void setLastName(String lastName) { + this.lastName = lastName; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public List getTweets() { + return tweets; + } + + public void setTweets(List tweets) { + this.tweets = tweets; + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java new file mode 100644 index 0000000000..47fe2e3262 --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDao.java @@ -0,0 +1,13 @@ +package com.baeldung.repositoryvsdaopattern; + +public interface UserDao { + + void create(User user); + + User read(Long id); + + void update(User user); + + void delete(String userName); + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java new file mode 100644 index 0000000000..24ca04263b --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserDaoImpl.java @@ -0,0 +1,33 @@ +package com.baeldung.repositoryvsdaopattern; + +import javax.persistence.EntityManager; + +public class UserDaoImpl implements UserDao { + + private final EntityManager entityManager; + + public UserDaoImpl(EntityManager entityManager) { + this.entityManager = entityManager; + } + + @Override + public void create(User user) { + entityManager.persist(user); + } + + @Override + public User read(Long id) { + return entityManager.find(User.class, id); + } + + @Override + public void update(User user) { + + } + + @Override + public void delete(String userName) { + + } + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java new file mode 100644 index 0000000000..1da384958d --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepository.java @@ -0,0 +1,21 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public interface UserRepository { + + User get(Long id); + + void add(User user); + + void update(User user); + + void remove(User user); + + User findByUserName(String userName); + + User findByEmail(String email); + + List fetchTweets(User user); + +} diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java new file mode 100644 index 0000000000..6d7334c1ab --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java @@ -0,0 +1,50 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public class UserRepositoryImpl implements UserRepository { + + private UserDaoImpl userDaoImpl; + private TweetDaoImpl tweetDaoImpl; + + @Override + public User get(Long id) { + User user = userDaoImpl.read(id); + + List tweets = tweetDaoImpl.fetchTweets(user.getEmail()); + user.setTweets(tweets); + + return user; + } + + @Override + public void add(User user) { + userDaoImpl.create(user); + } + + @Override + public void remove(User user) { + + } + + @Override + public void update(User user) { + + } + + @Override + public List fetchTweets(User user) { + return null; + } + + @Override + public User findByUserName(String userName) { + return null; + } + + @Override + public User findByEmail(String email) { + return null; + } + +} From b7813034ea4b1d9eaf218f2dfbfda67097c50970 Mon Sep 17 00:00:00 2001 From: fdpro Date: Tue, 8 Sep 2020 11:26:57 +0200 Subject: [PATCH 2/8] [JAVA-2540] Deactivate frontend-maven-plugin when using default-first or default-second profile --- .../spring-security-web-react/pom.xml | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/spring-security-modules/spring-security-web-react/pom.xml b/spring-security-modules/spring-security-web-react/pom.xml index d0ca6f8c8d..459793f496 100644 --- a/spring-security-modules/spring-security-web-react/pom.xml +++ b/spring-security-modules/spring-security-web-react/pom.xml @@ -163,6 +163,63 @@ + + + default-first + + + + + com.github.eirslett + frontend-maven-plugin + + + + install node and npm + none + + + npm install + none + + + npm run build + none + + + + + + + + default-second + + + + + com.github.eirslett + frontend-maven-plugin + + + + install node and npm + none + + + npm install + none + + + npm run build + none + + + + + + + + 4.3.6.RELEASE From bc36751276ff2f2d9224cd180887b9e53ca95a16 Mon Sep 17 00:00:00 2001 From: Anshul BANSAL Date: Sat, 12 Sep 2020 06:30:35 +0300 Subject: [PATCH 3/8] BAEL-4507 - UserSocialMedia class added --- .../baeldung/repositoryvsdaopattern/User.java | 12 ------------ .../UserRepositoryImpl.java | 5 +++-- .../repositoryvsdaopattern/UserSocialMedia.java | 17 +++++++++++++++++ 3 files changed, 20 insertions(+), 14 deletions(-) create mode 100644 patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java index 86d3554f7e..8cd4fd0a00 100644 --- a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/User.java @@ -1,7 +1,5 @@ package com.baeldung.repositoryvsdaopattern; -import java.util.List; - public class User { private Long id; @@ -10,8 +8,6 @@ public class User { private String lastName; private String email; - private List tweets; - public Long getId() { return id; } @@ -51,13 +47,5 @@ public class User { public void setEmail(String email) { this.email = email; } - - public List getTweets() { - return tweets; - } - - public void setTweets(List tweets) { - this.tweets = tweets; - } } diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java index 6d7334c1ab..806b44e9d5 100644 --- a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserRepositoryImpl.java @@ -9,7 +9,7 @@ public class UserRepositoryImpl implements UserRepository { @Override public User get(Long id) { - User user = userDaoImpl.read(id); + UserSocialMedia user = (UserSocialMedia) userDaoImpl.read(id); List tweets = tweetDaoImpl.fetchTweets(user.getEmail()); user.setTweets(tweets); @@ -34,7 +34,8 @@ public class UserRepositoryImpl implements UserRepository { @Override public List fetchTweets(User user) { - return null; + return tweetDaoImpl.fetchTweets(user.getEmail()); + } @Override diff --git a/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java new file mode 100644 index 0000000000..bf729620af --- /dev/null +++ b/patterns/design-patterns-architectural/src/main/java/com/baeldung/repositoryvsdaopattern/UserSocialMedia.java @@ -0,0 +1,17 @@ +package com.baeldung.repositoryvsdaopattern; + +import java.util.List; + +public class UserSocialMedia extends User { + + private List tweets; + + public List getTweets() { + return tweets; + } + + public void setTweets(List tweets) { + this.tweets = tweets; + } + +} From 1873207445bf0ea371055e1ca2f97d883badf6cc Mon Sep 17 00:00:00 2001 From: fdpro Date: Thu, 10 Sep 2020 11:47:44 +0200 Subject: [PATCH 4/8] [JAVA-2540] Migrated unit test to integration test as it bootsraps and calls a REST API --- ...eSpecUnitTest.java => HelloResourceSpecIntegrationTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename restx/src/test/java/restx/demo/rest/{HelloResourceSpecUnitTest.java => HelloResourceSpecIntegrationTest.java} (91%) diff --git a/restx/src/test/java/restx/demo/rest/HelloResourceSpecUnitTest.java b/restx/src/test/java/restx/demo/rest/HelloResourceSpecIntegrationTest.java similarity index 91% rename from restx/src/test/java/restx/demo/rest/HelloResourceSpecUnitTest.java rename to restx/src/test/java/restx/demo/rest/HelloResourceSpecIntegrationTest.java index f67e4565b3..6ff1a7aad4 100644 --- a/restx/src/test/java/restx/demo/rest/HelloResourceSpecUnitTest.java +++ b/restx/src/test/java/restx/demo/rest/HelloResourceSpecIntegrationTest.java @@ -7,7 +7,7 @@ import restx.tests.RestxSpecTestsRunner; @RunWith(RestxSpecTestsRunner.class) @FindSpecsIn("specs/hello") -public class HelloResourceSpecUnitTest { +public class HelloResourceSpecIntegrationTest { /** * Useless, thanks to both @RunWith(RestxSpecTestsRunner.class) & @FindSpecsIn() From fe9e6fc55867c516c07024fd56a134f1be085a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dupire?= Date: Thu, 10 Sep 2020 17:21:30 +0200 Subject: [PATCH 5/8] [JAVA-2435] Migrate spring-security-web-sockets to parent-sprint-5 (#10000) * [JAVA-2435] Inherited from parent-boot-5 * [JAVA-2435] Upgraded version of spring-security as well --- spring-security-modules/spring-security-web-sockets/pom.xml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-security-modules/spring-security-web-sockets/pom.xml b/spring-security-modules/spring-security-web-sockets/pom.xml index 3a3ec47af5..4aecf296b4 100644 --- a/spring-security-modules/spring-security-web-sockets/pom.xml +++ b/spring-security-modules/spring-security-web-sockets/pom.xml @@ -10,9 +10,9 @@ com.baeldung - parent-spring-4 + parent-spring-5 0.0.1-SNAPSHOT - ../../parent-spring-4 + ../../parent-spring-5 @@ -182,7 +182,6 @@ 5.2.10.Final - 4.2.3.RELEASE 1.11.3.RELEASE 1.2.3 1.5.10.RELEASE From b03fdd2c4b4be0cc5cfa5bbb6eb8d6c892c04924 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dupire?= Date: Thu, 10 Sep 2020 17:25:13 +0200 Subject: [PATCH 6/8] [JAVA-2434] Inherited from parent-spring-5 (#9994) * [JAVA-2434] Inherited from parent-spring-5 * [JAVA-2434] Upgraded spring-security dependencies as well --- .../spring-security-web-react/pom.xml | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/spring-security-modules/spring-security-web-react/pom.xml b/spring-security-modules/spring-security-web-react/pom.xml index 459793f496..663c7d76c3 100644 --- a/spring-security-modules/spring-security-web-react/pom.xml +++ b/spring-security-modules/spring-security-web-react/pom.xml @@ -9,9 +9,9 @@ com.baeldung - parent-spring-4 + parent-spring-5 0.0.1-SNAPSHOT - ../../parent-spring-4 + ../../parent-spring-5 @@ -21,17 +21,17 @@ org.springframework.security spring-security-web - ${org.springframework.security.version} + ${spring-security.version} org.springframework.security spring-security-config - ${org.springframework.security.version} + ${spring-security.version} org.springframework.security spring-security-taglibs - ${org.springframework.security.version} + ${spring-security.version} @@ -39,33 +39,33 @@ org.springframework spring-core - ${org.springframework.version} + ${spring.version} org.springframework spring-context - ${org.springframework.version} + ${spring.version} org.springframework spring-beans - ${org.springframework.version} + ${spring.version} org.springframework spring-aop - ${org.springframework.version} + ${spring.version} org.springframework spring-web - ${org.springframework.version} + ${spring.version} org.springframework spring-webmvc - ${org.springframework.version} + ${spring.version} @@ -221,10 +221,6 @@ - - 4.3.6.RELEASE - 4.2.1.RELEASE - 19.0 @@ -236,7 +232,5 @@ v8.11.3 6.1.0 - - \ No newline at end of file From 0acc6a25e1fca42328baf803b024ebe57e354f56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Dupire?= Date: Thu, 10 Sep 2020 17:27:24 +0200 Subject: [PATCH 7/8] [JAVA-2306] Fixed failing integration test (#9999) --- .../spring/jdbc/template/guide/config/SpringJdbcConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/guide/config/SpringJdbcConfig.java b/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/guide/config/SpringJdbcConfig.java index 0e81babd9a..7cffe5342a 100644 --- a/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/guide/config/SpringJdbcConfig.java +++ b/persistence-modules/spring-jdbc/src/main/java/com/baeldung/spring/jdbc/template/guide/config/SpringJdbcConfig.java @@ -10,7 +10,7 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; @Configuration -@ComponentScan("com.baeldung.spring.jdbc") +@ComponentScan("com.baeldung.spring.jdbc.template.guide") public class SpringJdbcConfig { @Bean From fdc36375ff380dac6d98451c185205eac3507b6b Mon Sep 17 00:00:00 2001 From: Maiklins Date: Thu, 10 Sep 2020 19:26:04 +0200 Subject: [PATCH 8/8] Java-2602 Check spring-websockets PR (#10002) Co-authored-by: mikr --- .../{resources/chat.html => index.html} | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) rename spring-websockets/src/main/webapp/{resources/chat.html => index.html} (85%) diff --git a/spring-websockets/src/main/webapp/resources/chat.html b/spring-websockets/src/main/webapp/index.html similarity index 85% rename from spring-websockets/src/main/webapp/resources/chat.html rename to spring-websockets/src/main/webapp/index.html index 17c8494dd8..2bf36d59f5 100644 --- a/spring-websockets/src/main/webapp/resources/chat.html +++ b/spring-websockets/src/main/webapp/index.html @@ -2,63 +2,63 @@ Chat WebSocket - - + +