From a4639b70e8ea30ff1b85e0c91175d668737050db Mon Sep 17 00:00:00 2001 From: achraftt Date: Sun, 13 Feb 2022 12:17:53 +0100 Subject: [PATCH 01/37] BAEL-5039: Add a new section on using a datepicker to submit date values --- .../thymeleaf/controller/DatesController.java | 15 +++++++ .../com/baeldung/thymeleaf/model/Student.java | 14 +++++++ .../WEB-INF/views/datePicker/displayDate.html | 12 ++++++ .../WEB-INF/views/datePicker/saveStudent.html | 42 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html create mode 100644 spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html diff --git a/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/DatesController.java b/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/DatesController.java index 20f5d02fed..61443a3631 100644 --- a/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/DatesController.java +++ b/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/controller/DatesController.java @@ -5,8 +5,10 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Date; +import com.baeldung.thymeleaf.model.Student; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -22,4 +24,17 @@ public class DatesController { return "dates.html"; } + @RequestMapping(value = "/saveStudent", method = RequestMethod.GET) + public String displaySaveStudent(Model model) { + model.addAttribute("student", new Student()); + return "datePicker/saveStudent.html"; + } + + @RequestMapping(value = "/saveStudent", method = RequestMethod.POST) + public String saveStudent(Model model, @ModelAttribute("student") Student student) { + model.addAttribute("student", student); + + return "datePicker/displayDate.html"; + } + } diff --git a/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Student.java b/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Student.java index 202c04358a..c08985fd61 100644 --- a/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Student.java +++ b/spring-web-modules/spring-thymeleaf/src/main/java/com/baeldung/thymeleaf/model/Student.java @@ -1,6 +1,9 @@ package com.baeldung.thymeleaf.model; +import org.springframework.format.annotation.DateTimeFormat; + import java.io.Serializable; +import java.util.Date; import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; @@ -24,6 +27,9 @@ public class Student implements Serializable { @NotNull(message = "Student gender is required.") private Character gender; + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date birthDate; + private Float percentage; public Integer getId() { @@ -50,6 +56,14 @@ public class Student implements Serializable { this.gender = gender; } + public Date getBirthDate() { + return birthDate; + } + + public void setBirthDate(Date birthDate) { + this.birthDate = birthDate; + } + public Float getPercentage() { return percentage; } diff --git a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html new file mode 100644 index 0000000000..d3409f98f3 --- /dev/null +++ b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html @@ -0,0 +1,12 @@ + + + + +Baeldung - using a datepicker to submit date + + +

Student birth date

+

+ + \ No newline at end of file diff --git a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html new file mode 100644 index 0000000000..2faaed173c --- /dev/null +++ b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html @@ -0,0 +1,42 @@ + + + + +Baeldung - using a datepicker to submit date + + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ +
+
+
+ + \ No newline at end of file From 185266113c7d623faa8bee79aeb8de4578719cc1 Mon Sep 17 00:00:00 2001 From: msavic Date: Sun, 13 Feb 2022 23:56:05 +0100 Subject: [PATCH 02/37] Caching Maven Dependencies with Docker --- docker/docker-caching/multi-module/Dockerfile | 21 ++++++++ .../multi-module/Dockerfile-Buildkit | 13 +++++ .../multi-module/application/pom.xml | 36 +++++++++++++ .../MavenCachingApplication.java | 15 ++++++ .../src/main/resources/application.properties | 1 + .../MavenCachingApplicationTests.java | 13 +++++ .../docker-caching/multi-module/core/pom.xml | 19 +++++++ .../com/baeldung/maven_caching/CoreClass.java | 8 +++ docker/docker-caching/multi-module/pom.xml | 38 +++++++++++++ .../docker-caching/single-module/Dockerfile | 15 ++++++ .../single-module/Dockerfile-Buildkit | 13 +++++ docker/docker-caching/single-module/pom.xml | 53 +++++++++++++++++++ .../maven_caching/MavenCachingMain.java | 11 ++++ 13 files changed, 256 insertions(+) create mode 100644 docker/docker-caching/multi-module/Dockerfile create mode 100644 docker/docker-caching/multi-module/Dockerfile-Buildkit create mode 100644 docker/docker-caching/multi-module/application/pom.xml create mode 100644 docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java create mode 100644 docker/docker-caching/multi-module/application/src/main/resources/application.properties create mode 100644 docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java create mode 100644 docker/docker-caching/multi-module/core/pom.xml create mode 100644 docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java create mode 100644 docker/docker-caching/multi-module/pom.xml create mode 100644 docker/docker-caching/single-module/Dockerfile create mode 100644 docker/docker-caching/single-module/Dockerfile-Buildkit create mode 100644 docker/docker-caching/single-module/pom.xml create mode 100644 docker/docker-caching/single-module/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java diff --git a/docker/docker-caching/multi-module/Dockerfile b/docker/docker-caching/multi-module/Dockerfile new file mode 100644 index 0000000000..1f0cc85f7c --- /dev/null +++ b/docker/docker-caching/multi-module/Dockerfile @@ -0,0 +1,21 @@ +FROM maven:alpine as build +ENV HOME=/usr/app +RUN mkdir -p $HOME +WORKDIR $HOME + +ADD pom.xml $HOME +ADD core/pom.xml $HOME/core/pom.xml +ADD application/pom.xml $HOME/application/pom.xml + +RUN mvn -pl core verify --fail-never +ADD core $HOME/core +RUN mvn -pl core install +RUN mvn -pl application verify --fail-never +ADD application $HOME/application +RUN mvn -pl core,application package + +FROM openjdk:8-jdk-alpine + +COPY --from=build /usr/app/application/target/application-0.0.1-SNAPSHOT.jar /app/runner.jar + +ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/multi-module/Dockerfile-Buildkit b/docker/docker-caching/multi-module/Dockerfile-Buildkit new file mode 100644 index 0000000000..f51657c9ce --- /dev/null +++ b/docker/docker-caching/multi-module/Dockerfile-Buildkit @@ -0,0 +1,13 @@ +FROM maven:alpine as build +ENV HOME=/usr/app +RUN mkdir -p $HOME +WORKDIR $HOME + +ADD . $HOME +RUN --mount=type=cache,target=/root/.m2 mvn -f $HOME/pom.xml clean package + +FROM openjdk:8-jdk-alpine + +COPY --from=build /usr/app/application/target/application-0.0.1-SNAPSHOT.jar /app/runner.jar + +ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/multi-module/application/pom.xml b/docker/docker-caching/multi-module/application/pom.xml new file mode 100644 index 0000000000..49611e7fbd --- /dev/null +++ b/docker/docker-caching/multi-module/application/pom.xml @@ -0,0 +1,36 @@ + + + + maven-caching + com.baeldung + 0.0.1-SNAPSHOT + + 4.0.0 + + application + + + com.baeldung + core + 0.0.1-SNAPSHOT + + + + + 8 + 8 + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + \ No newline at end of file diff --git a/docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java b/docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java new file mode 100644 index 0000000000..dec5453dc9 --- /dev/null +++ b/docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java @@ -0,0 +1,15 @@ +package com.baeldung.maven_caching; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class MavenCachingApplication { + + public static void main(String[] args) { + SpringApplication.run(MavenCachingApplication.class, args); + CoreClass cc = new CoreClass(); + System.out.println(cc.method()); + } + +} diff --git a/docker/docker-caching/multi-module/application/src/main/resources/application.properties b/docker/docker-caching/multi-module/application/src/main/resources/application.properties new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/docker/docker-caching/multi-module/application/src/main/resources/application.properties @@ -0,0 +1 @@ + diff --git a/docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java b/docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java new file mode 100644 index 0000000000..ec550fb990 --- /dev/null +++ b/docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java @@ -0,0 +1,13 @@ +package com.baeldung.maven_caching; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class MavenCachingApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/docker/docker-caching/multi-module/core/pom.xml b/docker/docker-caching/multi-module/core/pom.xml new file mode 100644 index 0000000000..5df8ea7dde --- /dev/null +++ b/docker/docker-caching/multi-module/core/pom.xml @@ -0,0 +1,19 @@ + + + + maven-caching + com.baeldung + 0.0.1-SNAPSHOT + + 4.0.0 + + core + + + 8 + 8 + + + \ No newline at end of file diff --git a/docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java b/docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java new file mode 100644 index 0000000000..a33624d4e7 --- /dev/null +++ b/docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java @@ -0,0 +1,8 @@ +package com.baeldung.maven_caching; + +public class CoreClass { + + public String method(){ + return "Hello from core module!!"; + } +} diff --git a/docker/docker-caching/multi-module/pom.xml b/docker/docker-caching/multi-module/pom.xml new file mode 100644 index 0000000000..0cc309e2ad --- /dev/null +++ b/docker/docker-caching/multi-module/pom.xml @@ -0,0 +1,38 @@ + + + 4.0.0 + pom + + application + core + + + org.springframework.boot + spring-boot-starter-parent + 2.6.3 + + + com.baeldung + maven-caching + 0.0.1-SNAPSHOT + maven-caching + maven-caching + + 1.8 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-test + test + + + + diff --git a/docker/docker-caching/single-module/Dockerfile b/docker/docker-caching/single-module/Dockerfile new file mode 100644 index 0000000000..309945440b --- /dev/null +++ b/docker/docker-caching/single-module/Dockerfile @@ -0,0 +1,15 @@ +FROM maven:alpine as build +ENV HOME=/usr/app +RUN mkdir -p $HOME +WORKDIR $HOME +ADD pom.xml $HOME +RUN mvn verify --fail-never + +ADD . $HOME +RUN mvn package + +FROM openjdk:8-jdk-alpine + +COPY --from=build /usr/app/target/maven-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar + +ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/single-module/Dockerfile-Buildkit b/docker/docker-caching/single-module/Dockerfile-Buildkit new file mode 100644 index 0000000000..d3d2aad90d --- /dev/null +++ b/docker/docker-caching/single-module/Dockerfile-Buildkit @@ -0,0 +1,13 @@ +FROM maven:alpine as build +ENV HOME=/usr/app +RUN mkdir -p $HOME +WORKDIR $HOME +ADD . $HOME + +RUN --mount=type=cache,target=/root/.m2 mvn -f $HOME/pom.xml clean package + +FROM openjdk:8-jdk-alpine + +COPY --from=build /usr/app/target/maven-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar + +ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/single-module/pom.xml b/docker/docker-caching/single-module/pom.xml new file mode 100644 index 0000000000..54337436c5 --- /dev/null +++ b/docker/docker-caching/single-module/pom.xml @@ -0,0 +1,53 @@ + + + 4.0.0 + + com.baeldung + single-maven-caching + 1.0-SNAPSHOT + + + 8 + 8 + + + + + com.google.guava + guava + 31.0.1-jre + + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + jar-with-dependencies + + + + true + com.baeldung.maven_caching.MavenCachingMain + + + + + + assemble-all + package + + single + + + + + + + \ No newline at end of file diff --git a/docker/docker-caching/single-module/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java b/docker/docker-caching/single-module/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java new file mode 100644 index 0000000000..81673fd9ac --- /dev/null +++ b/docker/docker-caching/single-module/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java @@ -0,0 +1,11 @@ +package com.baeldung.maven_caching; + +import com.google.common.io.Files; + +public class MavenCachingMain { + + public static void main(String[] args) { + System.out.println("Hello from maven_caching app!!!"); + System.out.println(Files.simplifyPath("/home/app/test")); + } +} From adca84eca2fb787d80589188088ae31ff537ea77 Mon Sep 17 00:00:00 2001 From: achraftt Date: Wed, 16 Feb 2022 14:22:45 +0100 Subject: [PATCH 03/37] BAEL-5039: edit identation --- .../WEB-INF/views/datePicker/displayDate.html | 10 +-- .../WEB-INF/views/datePicker/saveStudent.html | 66 +++++++++---------- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html index d3409f98f3..7ae84e026f 100644 --- a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html +++ b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/displayDate.html @@ -1,12 +1,12 @@ + xmlns:th="http://www.thymeleaf.org"> - -Baeldung - using a datepicker to submit date + + Baeldung - using a datepicker to submit date -

Student birth date

-

+

Student birth date

+

\ No newline at end of file diff --git a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html index 2faaed173c..d897369326 100644 --- a/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html +++ b/spring-web-modules/spring-thymeleaf/src/main/webapp/WEB-INF/views/datePicker/saveStudent.html @@ -1,42 +1,42 @@ + xmlns:th="http://www.thymeleaf.org"> - -Baeldung - using a datepicker to submit date + + Baeldung - using a datepicker to submit date
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- - -
-
-
- -
-
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+
+
+ +
+
\ No newline at end of file From a0219c9f5c5737374cd26a6b12defdc3f26a97aa Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Sun, 20 Feb 2022 22:51:08 +0100 Subject: [PATCH 04/37] Caching Maven Dependencies with Docker - improvements --- .../multi-module-caching/Dockerfile | 21 +++++++ .../Dockerfile-Buildkit | 2 +- .../core/pom.xml | 8 ++- .../com/baeldung/maven_caching/CoreClass.java | 6 ++ .../multi-module-caching/pom.xml | 29 ++++++++++ .../multi-module-caching/runner/pom.xml | 55 +++++++++++++++++++ .../MavenCachingApplication.java | 6 +- docker/docker-caching/multi-module/Dockerfile | 21 ------- .../multi-module/application/pom.xml | 36 ------------ .../src/main/resources/application.properties | 1 - .../MavenCachingApplicationTests.java | 13 ----- docker/docker-caching/multi-module/pom.xml | 38 ------------- .../Dockerfile | 2 +- .../Dockerfile-Buildkit | 2 +- .../pom.xml | 2 +- .../maven_caching/MavenCachingMain.java | 0 16 files changed, 123 insertions(+), 119 deletions(-) create mode 100644 docker/docker-caching/multi-module-caching/Dockerfile rename docker/docker-caching/{multi-module => multi-module-caching}/Dockerfile-Buildkit (58%) rename docker/docker-caching/{multi-module => multi-module-caching}/core/pom.xml (71%) rename docker/docker-caching/{multi-module => multi-module-caching}/core/src/main/java/com/baeldung/maven_caching/CoreClass.java (51%) create mode 100644 docker/docker-caching/multi-module-caching/pom.xml create mode 100644 docker/docker-caching/multi-module-caching/runner/pom.xml rename docker/docker-caching/{multi-module/application => multi-module-caching/runner}/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java (50%) delete mode 100644 docker/docker-caching/multi-module/Dockerfile delete mode 100644 docker/docker-caching/multi-module/application/pom.xml delete mode 100644 docker/docker-caching/multi-module/application/src/main/resources/application.properties delete mode 100644 docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java delete mode 100644 docker/docker-caching/multi-module/pom.xml rename docker/docker-caching/{single-module => single-module-caching}/Dockerfile (55%) rename docker/docker-caching/{single-module => single-module-caching}/Dockerfile-Buildkit (57%) rename docker/docker-caching/{single-module => single-module-caching}/pom.xml (96%) rename docker/docker-caching/{single-module => single-module-caching}/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java (100%) diff --git a/docker/docker-caching/multi-module-caching/Dockerfile b/docker/docker-caching/multi-module-caching/Dockerfile new file mode 100644 index 0000000000..96ebe2a76b --- /dev/null +++ b/docker/docker-caching/multi-module-caching/Dockerfile @@ -0,0 +1,21 @@ +FROM maven:alpine as build +ENV HOME=/usr/app +RUN mkdir -p $HOME +WORKDIR $HOME + +ADD pom.xml $HOME +ADD core/pom.xml $HOME/core/pom.xml +ADD runner/pom.xml $HOME/runner/pom.xml + +RUN mvn -pl core verify --fail-never +ADD core $HOME/core +RUN mvn -pl core install +RUN mvn -pl runner verify --fail-never +ADD runner $HOME/runner +RUN mvn -pl core,runner package + +FROM openjdk:8-jdk-alpine + +COPY --from=build /usr/app/runner/target/runner-0.0.1-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar + +ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/multi-module/Dockerfile-Buildkit b/docker/docker-caching/multi-module-caching/Dockerfile-Buildkit similarity index 58% rename from docker/docker-caching/multi-module/Dockerfile-Buildkit rename to docker/docker-caching/multi-module-caching/Dockerfile-Buildkit index f51657c9ce..e89ce38e4b 100644 --- a/docker/docker-caching/multi-module/Dockerfile-Buildkit +++ b/docker/docker-caching/multi-module-caching/Dockerfile-Buildkit @@ -8,6 +8,6 @@ RUN --mount=type=cache,target=/root/.m2 mvn -f $HOME/pom.xml clean package FROM openjdk:8-jdk-alpine -COPY --from=build /usr/app/application/target/application-0.0.1-SNAPSHOT.jar /app/runner.jar +COPY --from=build /usr/app/runner/target/runner-0.0.1-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/multi-module/core/pom.xml b/docker/docker-caching/multi-module-caching/core/pom.xml similarity index 71% rename from docker/docker-caching/multi-module/core/pom.xml rename to docker/docker-caching/multi-module-caching/core/pom.xml index 5df8ea7dde..0b79a64143 100644 --- a/docker/docker-caching/multi-module/core/pom.xml +++ b/docker/docker-caching/multi-module-caching/core/pom.xml @@ -3,7 +3,7 @@ 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"> - maven-caching + multi-module-caching com.baeldung 0.0.1-SNAPSHOT @@ -16,4 +16,10 @@ 8 + + + com.google.guava + guava + + \ No newline at end of file diff --git a/docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java b/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java similarity index 51% rename from docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java rename to docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java index a33624d4e7..7d57110d72 100644 --- a/docker/docker-caching/multi-module/core/src/main/java/com/baeldung/maven_caching/CoreClass.java +++ b/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java @@ -1,8 +1,14 @@ package com.baeldung.maven_caching; +import com.google.common.io.Files; + public class CoreClass { public String method(){ return "Hello from core module!!"; } + + public String dependencyMethod(){ + return Files.simplifyPath("/home/app/test"); + } } diff --git a/docker/docker-caching/multi-module-caching/pom.xml b/docker/docker-caching/multi-module-caching/pom.xml new file mode 100644 index 0000000000..42205a29de --- /dev/null +++ b/docker/docker-caching/multi-module-caching/pom.xml @@ -0,0 +1,29 @@ + + + 4.0.0 + pom + + runner + core + + com.baeldung + multi-module-caching + 0.0.1-SNAPSHOT + maven-caching + maven-caching + + 1.8 + + + + + + com.google.guava + guava + 31.0.1-jre + + + + + diff --git a/docker/docker-caching/multi-module-caching/runner/pom.xml b/docker/docker-caching/multi-module-caching/runner/pom.xml new file mode 100644 index 0000000000..d306baf05d --- /dev/null +++ b/docker/docker-caching/multi-module-caching/runner/pom.xml @@ -0,0 +1,55 @@ + + + + multi-module-caching + com.baeldung + 0.0.1-SNAPSHOT + + 4.0.0 + + runner + + + com.baeldung + core + 0.0.1-SNAPSHOT + + + + + 8 + 8 + + + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + jar-with-dependencies + + + + true + com.baeldung.maven_caching.MavenCachingApplication + + + + + + assemble-all + package + + single + + + + + + + \ No newline at end of file diff --git a/docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java b/docker/docker-caching/multi-module-caching/runner/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java similarity index 50% rename from docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java rename to docker/docker-caching/multi-module-caching/runner/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java index dec5453dc9..3673dd86c1 100644 --- a/docker/docker-caching/multi-module/application/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java +++ b/docker/docker-caching/multi-module-caching/runner/src/main/java/com/baeldung/maven_caching/MavenCachingApplication.java @@ -1,15 +1,11 @@ package com.baeldung.maven_caching; -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication public class MavenCachingApplication { public static void main(String[] args) { - SpringApplication.run(MavenCachingApplication.class, args); CoreClass cc = new CoreClass(); System.out.println(cc.method()); + System.out.println(cc.dependencyMethod()); } } diff --git a/docker/docker-caching/multi-module/Dockerfile b/docker/docker-caching/multi-module/Dockerfile deleted file mode 100644 index 1f0cc85f7c..0000000000 --- a/docker/docker-caching/multi-module/Dockerfile +++ /dev/null @@ -1,21 +0,0 @@ -FROM maven:alpine as build -ENV HOME=/usr/app -RUN mkdir -p $HOME -WORKDIR $HOME - -ADD pom.xml $HOME -ADD core/pom.xml $HOME/core/pom.xml -ADD application/pom.xml $HOME/application/pom.xml - -RUN mvn -pl core verify --fail-never -ADD core $HOME/core -RUN mvn -pl core install -RUN mvn -pl application verify --fail-never -ADD application $HOME/application -RUN mvn -pl core,application package - -FROM openjdk:8-jdk-alpine - -COPY --from=build /usr/app/application/target/application-0.0.1-SNAPSHOT.jar /app/runner.jar - -ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/multi-module/application/pom.xml b/docker/docker-caching/multi-module/application/pom.xml deleted file mode 100644 index 49611e7fbd..0000000000 --- a/docker/docker-caching/multi-module/application/pom.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - maven-caching - com.baeldung - 0.0.1-SNAPSHOT - - 4.0.0 - - application - - - com.baeldung - core - 0.0.1-SNAPSHOT - - - - - 8 - 8 - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - - - - \ No newline at end of file diff --git a/docker/docker-caching/multi-module/application/src/main/resources/application.properties b/docker/docker-caching/multi-module/application/src/main/resources/application.properties deleted file mode 100644 index 8b13789179..0000000000 --- a/docker/docker-caching/multi-module/application/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ - diff --git a/docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java b/docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java deleted file mode 100644 index ec550fb990..0000000000 --- a/docker/docker-caching/multi-module/application/src/test/java/com/baeldung/maven_caching/MavenCachingApplicationTests.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.maven_caching; - -import org.junit.jupiter.api.Test; -import org.springframework.boot.test.context.SpringBootTest; - -@SpringBootTest -class MavenCachingApplicationTests { - - @Test - void contextLoads() { - } - -} diff --git a/docker/docker-caching/multi-module/pom.xml b/docker/docker-caching/multi-module/pom.xml deleted file mode 100644 index 0cc309e2ad..0000000000 --- a/docker/docker-caching/multi-module/pom.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - 4.0.0 - pom - - application - core - - - org.springframework.boot - spring-boot-starter-parent - 2.6.3 - - - com.baeldung - maven-caching - 0.0.1-SNAPSHOT - maven-caching - maven-caching - - 1.8 - - - - - org.springframework.boot - spring-boot-starter-web - - - - org.springframework.boot - spring-boot-starter-test - test - - - - diff --git a/docker/docker-caching/single-module/Dockerfile b/docker/docker-caching/single-module-caching/Dockerfile similarity index 55% rename from docker/docker-caching/single-module/Dockerfile rename to docker/docker-caching/single-module-caching/Dockerfile index 309945440b..02157c0dd6 100644 --- a/docker/docker-caching/single-module/Dockerfile +++ b/docker/docker-caching/single-module-caching/Dockerfile @@ -10,6 +10,6 @@ RUN mvn package FROM openjdk:8-jdk-alpine -COPY --from=build /usr/app/target/maven-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar +COPY --from=build /usr/app/target/single-module-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/single-module/Dockerfile-Buildkit b/docker/docker-caching/single-module-caching/Dockerfile-Buildkit similarity index 57% rename from docker/docker-caching/single-module/Dockerfile-Buildkit rename to docker/docker-caching/single-module-caching/Dockerfile-Buildkit index d3d2aad90d..29384ce208 100644 --- a/docker/docker-caching/single-module/Dockerfile-Buildkit +++ b/docker/docker-caching/single-module-caching/Dockerfile-Buildkit @@ -8,6 +8,6 @@ RUN --mount=type=cache,target=/root/.m2 mvn -f $HOME/pom.xml clean package FROM openjdk:8-jdk-alpine -COPY --from=build /usr/app/target/maven-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar +COPY --from=build /usr/app/target/single-module-caching-1.0-SNAPSHOT-jar-with-dependencies.jar /app/runner.jar ENTRYPOINT java -jar /app/runner.jar \ No newline at end of file diff --git a/docker/docker-caching/single-module/pom.xml b/docker/docker-caching/single-module-caching/pom.xml similarity index 96% rename from docker/docker-caching/single-module/pom.xml rename to docker/docker-caching/single-module-caching/pom.xml index 54337436c5..b1abc55772 100644 --- a/docker/docker-caching/single-module/pom.xml +++ b/docker/docker-caching/single-module-caching/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.baeldung - single-maven-caching + single-module-caching 1.0-SNAPSHOT diff --git a/docker/docker-caching/single-module/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java b/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java similarity index 100% rename from docker/docker-caching/single-module/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java rename to docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java From 64ffe101dca69244c5fb85e7dca2ce71365cdf4d Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Sun, 20 Feb 2022 22:51:08 +0100 Subject: [PATCH 05/37] Caching Maven Dependencies with Docker - improvements --- docker/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker/pom.xml b/docker/pom.xml index f481f1b8b7..5c6267c6dd 100644 --- a/docker/pom.xml +++ b/docker/pom.xml @@ -26,6 +26,8 @@ docker-internal-dto docker-spring-boot docker-sample-app + docker-caching/single-module-caching + docker-caching/multi-module-caching From 6ece2c8805059b4b477c152baab854f99c28f787 Mon Sep 17 00:00:00 2001 From: Mladen Savic Date: Sun, 20 Feb 2022 22:51:08 +0100 Subject: [PATCH 06/37] Caching Maven Dependencies with Docker - improvements --- .../multi-module-caching/core/pom.xml | 16 ++++++++-------- .../docker-caching/multi-module-caching/pom.xml | 17 +++++++++-------- .../multi-module-caching/runner/pom.xml | 15 ++++++++------- .../single-module-caching/pom.xml | 10 +++++----- 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/docker/docker-caching/multi-module-caching/core/pom.xml b/docker/docker-caching/multi-module-caching/core/pom.xml index 0b79a64143..eeeb5a6e5b 100644 --- a/docker/docker-caching/multi-module-caching/core/pom.xml +++ b/docker/docker-caching/multi-module-caching/core/pom.xml @@ -2,19 +2,14 @@ + 4.0.0 + core + multi-module-caching com.baeldung 0.0.1-SNAPSHOT - 4.0.0 - - core - - - 8 - 8 - @@ -22,4 +17,9 @@ guava + + + 8 + 8 + \ No newline at end of file diff --git a/docker/docker-caching/multi-module-caching/pom.xml b/docker/docker-caching/multi-module-caching/pom.xml index 42205a29de..c5a7d9ec6f 100644 --- a/docker/docker-caching/multi-module-caching/pom.xml +++ b/docker/docker-caching/multi-module-caching/pom.xml @@ -2,19 +2,12 @@ 4.0.0 - pom - - runner - core - com.baeldung multi-module-caching 0.0.1-SNAPSHOT maven-caching maven-caching - - 1.8 - + pom @@ -26,4 +19,12 @@ + + 1.8 + + + + runner + core + diff --git a/docker/docker-caching/multi-module-caching/runner/pom.xml b/docker/docker-caching/multi-module-caching/runner/pom.xml index d306baf05d..e3654bff17 100644 --- a/docker/docker-caching/multi-module-caching/runner/pom.xml +++ b/docker/docker-caching/multi-module-caching/runner/pom.xml @@ -2,14 +2,15 @@ + 4.0.0 + runner + multi-module-caching com.baeldung 0.0.1-SNAPSHOT - 4.0.0 - runner com.baeldung @@ -18,11 +19,6 @@ - - 8 - 8 - - @@ -52,4 +48,9 @@ + + + 8 + 8 + \ No newline at end of file diff --git a/docker/docker-caching/single-module-caching/pom.xml b/docker/docker-caching/single-module-caching/pom.xml index b1abc55772..386b040138 100644 --- a/docker/docker-caching/single-module-caching/pom.xml +++ b/docker/docker-caching/single-module-caching/pom.xml @@ -8,11 +8,6 @@ single-module-caching 1.0-SNAPSHOT - - 8 - 8 - - com.google.guava @@ -50,4 +45,9 @@ + + + 8 + 8 + \ No newline at end of file From d00308836475c4669916b4506c7251496cf4142f Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Tue, 22 Feb 2022 12:01:06 +0530 Subject: [PATCH 07/37] JAVA-10081 :Create new module hibernate-mapping from spring-hibernate-5 module --- .../hibernate-many-to-many/.gitignore | 13 ++ .../hibernate-many-to-many/README.md | 7 + .../_2.fdt | Bin 0 -> 160 bytes .../_2.fdx | Bin 0 -> 84 bytes .../_2.fnm | Bin 0 -> 532 bytes .../_2.nvd | Bin 0 -> 65 bytes .../_2.nvm | Bin 0 -> 88 bytes .../_2.si | Bin 0 -> 514 bytes .../_2.tvd | Bin 0 -> 392 bytes .../_2.tvx | Bin 0 -> 79 bytes .../_2_Lucene50_0.doc | Bin 0 -> 190 bytes .../_2_Lucene50_0.pos | Bin 0 -> 162 bytes .../_2_Lucene50_0.tim | Bin 0 -> 914 bytes .../_2_Lucene50_0.tip | Bin 0 -> 195 bytes .../_3.cfe | Bin 0 -> 341 bytes .../_3.cfs | Bin 0 -> 2119 bytes .../_3.si | Bin 0 -> 371 bytes .../segments_5 | Bin 0 -> 198 bytes .../write.lock | 0 .../hibernate-many-to-many/pom.xml | 136 ++++++++++++++ .../hibernate/manytomany/model/Employee.java | 176 +++++++++--------- .../hibernate/manytomany/model/Project.java | 122 ++++++------ .../manytomany/util/HibernateUtil.java | 90 ++++----- .../manytomany/spring/PersistenceConfig.java | 140 +++++++------- .../persistence/dao/common/AbstractDao.java | 14 ++ .../dao/common/AbstractHibernateDao.java | 59 ++++++ .../persistence/dao/common/IOperations.java | 20 ++ .../manytomany/dao/IEmployeeDao.java | 16 +- .../manytomany/dao/IProjectDao.java | 16 +- .../manytomany/dao/impl/EmployeeDao.java | 32 ++-- .../manytomany/dao/impl/ProjectDao.java | 34 ++-- .../baeldung/spring/PersistenceConfig.java | 75 ++++++++ .../src/main/resources/import.sql | 31 +++ .../src/main/resources/logback.xml | 19 ++ .../src/main/resources/manytomany.cfg.xml | 30 +-- .../main/resources/persistence-h2.properties | 21 +++ .../java/com/baeldung/SpringContextTest.java | 19 ++ ...notationJavaConfigMainIntegrationTest.java | 98 +++++----- ...nyToManyAnnotationMainIntegrationTest.java | 160 ++++++++-------- .../src/test/resources/.gitignore | 13 ++ .../hibernate/criteria/model/Item.hbm.xml | 22 +++ .../src/test/resources/import.sql | 21 +++ .../src/test/resources/manytomany.cfg.xml | 0 .../spring-hibernate-5/README.md | 1 - .../spring-hibernate-5/pom.xml | 20 ++ .../src/test/resources/import.sql | 1 + 46 files changed, 948 insertions(+), 458 deletions(-) create mode 100644 persistence-modules/hibernate-many-to-many/.gitignore create mode 100644 persistence-modules/hibernate-many-to-many/README.md create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdt create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdx create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fnm create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvd create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvm create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.si create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvd create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvx create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.doc create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.pos create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tim create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tip create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfe create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfs create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.si create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/segments_5 create mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/write.lock create mode 100644 persistence-modules/hibernate-many-to-many/pom.xml rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java (96%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java (95%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java (97%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java (97%) create mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java create mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java create mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java (96%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java (96%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java (96%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java (96%) create mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java create mode 100644 persistence-modules/hibernate-many-to-many/src/main/resources/import.sql create mode 100644 persistence-modules/hibernate-many-to-many/src/main/resources/logback.xml rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/main/resources/manytomany.cfg.xml (98%) create mode 100644 persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties create mode 100644 persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java (97%) rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java (96%) create mode 100644 persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore create mode 100644 persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml create mode 100644 persistence-modules/hibernate-many-to-many/src/test/resources/import.sql rename persistence-modules/{spring-hibernate-5 => hibernate-many-to-many}/src/test/resources/manytomany.cfg.xml (100%) diff --git a/persistence-modules/hibernate-many-to-many/.gitignore b/persistence-modules/hibernate-many-to-many/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/README.md b/persistence-modules/hibernate-many-to-many/README.md new file mode 100644 index 0000000000..19b865d4e1 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/README.md @@ -0,0 +1,7 @@ +## Hibernate 5 with Spring + +This module contains articles about Hibernate 5 with Spring. + +### Relevant articles + +- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many) \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdt b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdt new file mode 100644 index 0000000000000000000000000000000000000000..d71a08150212e0d18327d1491c3687976b1c0d38 GIT binary patch literal 160 zcmcD&o+B>fQ<|KbmuhMdT#{dun&Ot3nv+uOmRMZkl30?+z`($mbzSAP`{iOo;d#DB z{fW~w7#bQFnHYE&m>Bf`D==s!=jZArB?2{-=B4XpWG1B+d6=BK3Q y=miwzr<5j_a4;I`Gf2xDfe2#|VFDsd^%=wiK$2#Rj0ZF(zW`bZ2Af23UjYC|kS^)~ literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdx b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdx new file mode 100644 index 0000000000000000000000000000000000000000..72359255c620cb440b643215ce0e4a85f205da77 GIT binary patch literal 84 zcmcD&o+B>nQ<|KbmuhMdT#{dun&Ot3nv+uOmRMZknU|7U!N9=4m~~y{wfp5_L*aS8 hM*WG?G#Ho|fuamnK+Mp`ctB(F3!o}62&>U62LPU67+U}U literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fnm b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fnm new file mode 100644 index 0000000000000000000000000000000000000000..b0143e1ac5e967810feee7771557bca5f71a4922 GIT binary patch literal 532 zcmcD&o+B>gQ<|KbmuhO@mYJH9;+dD0U(CS3z?gMi<+c0eVngA1zDE6t(=-@Z1>!R@ zlTwTF5=&C!lXDV_iy4@h8U8~7lWah05!i%){Nj?#y!2wX{G!~%61_Aq#R0Pfm$Ks0 zw6x3$MgykI6h;~t%Uw{EpHiA!;+L44%EU;0XLF~d7AF^F7L;V>=P}d3e74-w-29?S W7A8ijhxh@F$uEEr4hGV{B@6-GbkQ<|KbmuhP4mtT}y?2=fL$N&Uc*HvD-UoJKjp66@SpEyl}p`^5=qP+Zo P#^e_uX%J`#I_?Dk?LHOl literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvm b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvm new file mode 100644 index 0000000000000000000000000000000000000000..19f60a39bcf9a121ca3bc1590ba6df45481bf44a GIT binary patch literal 88 zcmcD&o+B>mQ<|KbmuhP4mtT}y?3-GWn37nM$N&Uc*HvD-UoJKjp66@SpEyl}fe9oE b0_Dt%5C((xe<0vLpfULcRDfZE({vpGz#bVo literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.si b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.si new file mode 100644 index 0000000000000000000000000000000000000000..3d537083b422c76bfcef3c42fb25ad1eeb45bf4f GIT binary patch literal 514 zcmZWm-AcnS7+u9~xJ_kF@X}p)F_49(cGKM`sGA6z3LSV^LX*u()08Bwdy8ENUivJ) zgBN=R!3XeC(?5_cA^AAx`_AEzTrB;A<|uMWK)QxaW|Rc-Hkh(fsiZwGkG^j{1#G^L z%>{aEE3TyfJLTW{1{2jsFTm_Yw4hOYMlk|0QJC-DbL9G@b;WqdIFcR<>Uoeh~}|{1}jVe#N8(yQQWik zQ)?at(xar1ultt;i?~bl)UlS{L*z=vHCR=Cd9F=p0Ank05)#pH8}_U&JhRM`Qv+J{ zvSWfE#=0uPOMr}VQl?mDXx?y4r+8<_03j2ZhNfddR`BW=X6}kmC0JuZ?Xa-6Rc?ZZ k9`UglGER{Mlwnf69M}`bei#g{KiaQf$xkNh=X|#K1BMr#*8l(j literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvd b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvd new file mode 100644 index 0000000000000000000000000000000000000000..b46c8d109cc2a907cd84fbbf6e87ad51cff7929d GIT binary patch literal 392 zcmW-dze`(D6vxlgC=Ftbkz&VE+Y%kb7xR(~f;J6xskBJ7;&$@h$$eMukH@|D5#1c@ zY@rZ05n3p562ZMwXQ6|CK$p@kP90qA)dSxH-w)?}hwt*0n4W%<$D}A)cuz)dQtY&` zZFC3#!OqpQzpFoOICZ>MJ;Z(mhW4MpC=5S6J3Rp?TztHUHa12|C4al(ec7uGFuV`N zwtdxl{be0L)M|6li$@3D#^4}aXWR8M+x#~3{HS=hKLx>c1%=gFCMeF0A>~LVU5v?S znR1r$L}+IvNp1G5MB}nlE2>6yT!fHycnKzVAHu{-D2z5B46Dsq7;C_JiiUB;x<2JC z{0js+vW_b<#BzbA1vkY!%e3)~^|&EH*1D7{AFu^KP$fq5gc(A&1lJEdWhiiWuVWi1 zZLV0H5@vs(@86~Fa6$8MJKp0e(LK9Ztw#&2BXY@6^4MsryRHdSk84eMcW;8=d*$dQ<|KbmuhMdl3J7-mYQ6WUsUXwmy%k+z`($mbzSAP`{iOo;d#DB{fW~w c7?>D=q6{WL%lQ<|KbmuhMdkY8MqnU`K1UX)pqTI7lQ<|KbmuhMdkY8MqnU`K1UX)pqS_I@V072GumDlcM>D0O1m)+6Xon>a0yL6Ju zPB5UIt(}E`f&YVGdMiQjZ}81-E~Sw9*!Mke-tWy$&h(9yN7^KB4lKX{*up(gi6?}x z*JpSCJpJLeS3f@=zLy_2d(Y|wN*E1Z4#)(+SyRNB1?i()WjRx+P*rY95IW@bkya%{+IS}l zD2zQ8g_$Z19Sd2lrR}*wTHi$UTwPVhhN?R=Ri|!pY zU}+~qDjJ_4PtwPPQ1s#)4eVlYj=Dxd(kyhtg(^aYXnj$PsFP(_UTSb9ySE;6O@d^d4#s+OQVVr!snE98D%uaoJ%K^ar7cF zA>#Ha<=ewOJ{*nN&XA9H2Yfsl(7m=nB9mIqk6AW7hdb7Fq2!f9CDu4|ud%Q3 z)|O}=w*Qa=sf%)2=veIo2S29o{)`q GU*tdZxy^3? literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tip b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tip new file mode 100644 index 0000000000000000000000000000000000000000..9803f1b398829ace933101fbc393ea47807267f3 GIT binary patch literal 195 zcmcD&o+B>ol#`#F9a5B<8j@O+TkM&al3KyQz`&GsUFEg=&diPJQ=d`gp3 z^HNO>;tlM9+L+yfLx9Ry85o(FA2Bg7FfyQtvaZ7>%C`xdDE~WbqC%6vqUOHImHmuB VyFg&+0gcHoAWQ~^%eLE20RSolE8PG9 literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfe b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfe new file mode 100644 index 0000000000000000000000000000000000000000..8fb074f30e754beeb8a030f31d07de2babe63b62 GIT binary patch literal 341 zcmcD&o+B>qQ<|KbmuhO@oS$2eUz(TVnpaYknOe*M1X zMK3L-0we_ldJu{sm_;wIECtGGgwodh@i2qq4fG1~!R7(w_CVz$QRGwdlOf`aqEPuf z6#0_OT&R3Agl1A?(JO&j%De=sX$r_CP?aneP{9bGoAY3T6QJ5fKprW9aM)nl8$o75 heaEf})$WhxkOGJ}J5)2n;R70zUqIC|B=Stl1OR>yJ!${| literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfs b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfs new file mode 100644 index 0000000000000000000000000000000000000000..e26078b9e7cfbaca6e06ec3cf3156f48d0b92d08 GIT binary patch literal 2119 zcmcIl%TE(Q7@wKl?Nj9~Z^TD}V5}4bjIXK?ltc&#L?Vgcc6Uk_yF1P9Ho&d%ZHikvL|pRoxVQ^K z83{+s+sl-S$2ZRGxRR1B3lRZvSZ<_#keUvHD~?{6F0vg-IFEoEWVdZrCXvvlaVybO zd<3xJbWT_UvQ7y;{ItU=wG>lJ+Zr>3Bf$6RRA=Ul2s+O7`|vvMJrf^(q(=FfsB`Js zdh6tGi|wZ)o5chXa%rs*9YE3nP;9|rzY@LhlP6H+Cg2g^emCA_KJlIwzKdsR=fI@nK?+`vA14I OvhREg-uJeq`PhGT-i literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.si b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.si new file mode 100644 index 0000000000000000000000000000000000000000..f2d6b6a030c291e9fdddf28b924e5caad9a02f57 GIT binary patch literal 371 zcmcD&o+B>oQ<|KbmuhMdoSL4SnpfhPmzK}Kz`&SwUFEg=&diPN-zVhpTE zn30i-DZiL2JTosPzr0w%(11HDu`E%qEEUKv67nxfOwLJFaLz9($S+DP$;{8=fl3z@ z13B!5hI$5ihKBqQ!Cas=u(%*pT-#FDCnQ+c(9(o22kbnU0#;K!AY{)k)=Ml(&R|W< zO))bO0UJ_OnpcvUn+j8iX%bs;erZv1Dr;I!X>kS@&;+QREQSVp2Am+h#U+Wk1-yo4 zCZ>iKCPv2Q#-`@XtntQr#hGkCGC8dnLZvdw!^5m3zbG}uEi*MIrPwXMC^xZ0FE>9W cmCMOBI3zwez}3~|fX3t(pr8YRcS#F10cJaIr~m)} literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/segments_5 b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/segments_5 new file mode 100644 index 0000000000000000000000000000000000000000..66a4c385a5adac5ff16e505da6de875fcd295c3d GIT binary patch literal 198 zcmcD&o+HjtoSL4SnpaZHz`($kbzSAP`{iOo;d#DB{fX1G8BJMPS%DHDAOOTHK+FUb zVv09nL{qE5;ZvHNnwM&7@*fI7nqX`g4H9EuiZ@2rtwp?Uh65UtUx3X45?V&3b^sz| BR7L;* literal 0 HcmV?d00001 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/write.lock b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/write.lock new file mode 100644 index 0000000000..e69de29bb2 diff --git a/persistence-modules/hibernate-many-to-many/pom.xml b/persistence-modules/hibernate-many-to-many/pom.xml new file mode 100644 index 0000000000..6f1abb6a7a --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/pom.xml @@ -0,0 +1,136 @@ + + + 4.0.0 + hibernate-many-to-many + 0.1-SNAPSHOT + hibernate-many-to-many + + + com.baeldung + persistence-modules + 1.0.0-SNAPSHOT + + + + + + org.springframework + spring-context + ${org.springframework.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-aspects + ${org.springframework.version} + + + + org.springframework + spring-orm + ${org.springframework.version} + + + org.springframework.data + spring-data-jpa + ${org.springframework.data.version} + + + org.hibernate + hibernate-core + ${hibernate.version} + + + javax.transaction + jta + ${jta.version} + + + org.hibernate + hibernate-search-orm + ${hibernatesearch.version} + + + org.apache.tomcat + tomcat-dbcp + ${tomcat-dbcp.version} + + + + + com.google.guava + guava + ${guava.version} + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + test + + + org.springframework + spring-test + ${org.springframework.version} + test + + + org.springframework.security + spring-security-test + ${org.springframework.security.version} + test + + + org.hsqldb + hsqldb + ${hsqldb.version} + + + com.h2database + h2 + ${h2.version} + + + jakarta.xml.bind + jakarta.xml.bind-api + 2.3.2 + + + com.sun.xml.bind + jaxb-core + 2.3.0.1 + + + javax.xml.bind + jaxb-api + 2.3.1 + + + com.sun.xml.bind + jaxb-impl + 2.3.1 + + + + + + 5.0.2.RELEASE + 1.10.6.RELEASE + 4.2.1.RELEASE + + 5.2.10.Final + 5.8.2.Final + 9.0.0.M26 + 1.1 + 2.3.4 + + + \ No newline at end of file diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java similarity index 96% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java index 8157945e2c..bfe1b5ad29 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java @@ -1,88 +1,88 @@ -package com.baeldung.hibernate.manytomany.model; - -import java.io.Serializable; -import java.util.HashSet; -import java.util.Set; - -import javax.persistence.CascadeType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.JoinColumn; -import javax.persistence.JoinTable; -import javax.persistence.ManyToMany; -import javax.persistence.Table; - -@Entity -@Table(name = "Employee") -public class Employee implements Serializable { - @Id - @Column(name = "employee_id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long employeeId; - - @Column(name = "first_name") - private String firstName; - - @Column(name = "last_name") - private String lastName; - - @ManyToMany(cascade = { CascadeType.ALL }) - @JoinTable( - name = "Employee_Project", - joinColumns = { @JoinColumn(name = "employee_id") }, - inverseJoinColumns = { @JoinColumn(name = "project_id") } - ) - Set projects = new HashSet(); - - - public Employee() { - super(); - } - - public Employee(String firstName, String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } - - public Employee(String firstName, String lastName, Set projects) { - this.firstName = firstName; - this.lastName = lastName; - this.projects = projects; - } - - - public Long getEmployeeId() { - return employeeId; - } - - public void setEmployeeId(Long employeeId) { - this.employeeId = employeeId; - } - - 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 Set getProjects() { - return projects; - } - - public void setProjects(Set projects) { - this.projects = projects; - } -} +package com.baeldung.hibernate.manytomany.model; + +import java.io.Serializable; +import java.util.HashSet; +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.Table; + +@Entity +@Table(name = "Employee") +public class Employee implements Serializable { + @Id + @Column(name = "employee_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long employeeId; + + @Column(name = "first_name") + private String firstName; + + @Column(name = "last_name") + private String lastName; + + @ManyToMany(cascade = { CascadeType.ALL }) + @JoinTable( + name = "Employee_Project", + joinColumns = { @JoinColumn(name = "employee_id") }, + inverseJoinColumns = { @JoinColumn(name = "project_id") } + ) + Set projects = new HashSet(); + + + public Employee() { + super(); + } + + public Employee(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + public Employee(String firstName, String lastName, Set projects) { + this.firstName = firstName; + this.lastName = lastName; + this.projects = projects; + } + + + public Long getEmployeeId() { + return employeeId; + } + + public void setEmployeeId(Long employeeId) { + this.employeeId = employeeId; + } + + 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 Set getProjects() { + return projects; + } + + public void setProjects(Set projects) { + this.projects = projects; + } +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java similarity index 95% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java index d6c049f33e..c291d7d7af 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java @@ -1,61 +1,61 @@ -package com.baeldung.hibernate.manytomany.model; - -import java.io.Serializable; -import java.util.HashSet; -import java.util.Set; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.ManyToMany; -import javax.persistence.Table; - -@Entity -@Table(name = "Project") -public class Project implements Serializable { - - @Id - @Column(name = "project_id") - @GeneratedValue - private Long projectId; - - @Column(name = "title") - private String title; - - @ManyToMany(mappedBy = "projects") - private Set employees = new HashSet(); - - public Project() { - super(); - } - - public Project(String title) { - this.title = title; - } - - public Long getProjectId() { - return projectId; - } - - public void setProjectId(Long projectId) { - this.projectId = projectId; - } - - public String getTitle() { - return title; - } - - public void setTitle(String title) { - this.title = title; - } - - public Set getEmployees() { - return employees; - } - - public void setEmployees(Set employees) { - this.employees = employees; - } - - -} +package com.baeldung.hibernate.manytomany.model; + +import java.io.Serializable; +import java.util.HashSet; +import java.util.Set; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.ManyToMany; +import javax.persistence.Table; + +@Entity +@Table(name = "Project") +public class Project implements Serializable { + + @Id + @Column(name = "project_id") + @GeneratedValue + private Long projectId; + + @Column(name = "title") + private String title; + + @ManyToMany(mappedBy = "projects") + private Set employees = new HashSet(); + + public Project() { + super(); + } + + public Project(String title) { + this.title = title; + } + + public Long getProjectId() { + return projectId; + } + + public void setProjectId(Long projectId) { + this.projectId = projectId; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Set getEmployees() { + return employees; + } + + public void setEmployees(Set employees) { + this.employees = employees; + } + + +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java similarity index 97% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java index 29e8d7515a..ff035c0c37 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java @@ -1,45 +1,45 @@ -package com.baeldung.hibernate.manytomany.util; - -import org.hibernate.SessionFactory; -import org.hibernate.boot.registry.StandardServiceRegistryBuilder; -import org.hibernate.cfg.Configuration; -import org.hibernate.service.ServiceRegistry; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.hibernate.manytomany.model.Project; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class HibernateUtil { - - private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); - private static SessionFactory sessionFactory; - - private static SessionFactory buildSessionFactory() { - try { - // Create the SessionFactory from hibernate-annotation.cfg.xml - Configuration configuration = new Configuration(); - configuration.addAnnotatedClass(Employee.class); - configuration.addAnnotatedClass(Project.class); - configuration.configure("manytomany.cfg.xml"); - LOGGER.debug("Hibernate Annotation Configuration loaded"); - - ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()) - .build(); - LOGGER.debug("Hibernate Annotation serviceRegistry created"); - - SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); - - return sessionFactory; - } catch (Throwable ex) { - LOGGER.error("Initial SessionFactory creation failed.", ex); - throw new ExceptionInInitializerError(ex); - } - } - - public static SessionFactory getSessionFactory() { - if (sessionFactory == null) { - sessionFactory = buildSessionFactory(); - } - return sessionFactory; - } -} +package com.baeldung.hibernate.manytomany.util; + +import org.hibernate.SessionFactory; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Configuration; +import org.hibernate.service.ServiceRegistry; +import com.baeldung.hibernate.manytomany.model.Employee; +import com.baeldung.hibernate.manytomany.model.Project; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class HibernateUtil { + + private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); + private static SessionFactory sessionFactory; + + private static SessionFactory buildSessionFactory() { + try { + // Create the SessionFactory from hibernate-annotation.cfg.xml + Configuration configuration = new Configuration(); + configuration.addAnnotatedClass(Employee.class); + configuration.addAnnotatedClass(Project.class); + configuration.configure("manytomany.cfg.xml"); + LOGGER.debug("Hibernate Annotation Configuration loaded"); + + ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()) + .build(); + LOGGER.debug("Hibernate Annotation serviceRegistry created"); + + SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); + + return sessionFactory; + } catch (Throwable ex) { + LOGGER.error("Initial SessionFactory creation failed.", ex); + throw new ExceptionInInitializerError(ex); + } + } + + public static SessionFactory getSessionFactory() { + if (sessionFactory == null) { + sessionFactory = buildSessionFactory(); + } + return sessionFactory; + } +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java similarity index 97% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java index b8e7e1b2fd..f7179b07e5 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java @@ -1,70 +1,70 @@ -package com.baeldung.manytomany.spring; - -import java.util.Properties; -import javax.sql.DataSource; -import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; -import org.springframework.orm.hibernate5.HibernateTransactionManager; -import org.springframework.orm.hibernate5.LocalSessionFactoryBean; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - - - -@Configuration -@EnableTransactionManagement -@PropertySource({ "classpath:persistence-h2.properties" }) -@ComponentScan({ "com.baeldung.hibernate.manytomany" }) -public class PersistenceConfig { - - @Autowired - private Environment env; - - @Bean - public LocalSessionFactoryBean sessionFactory() { - final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); - sessionFactory.setDataSource(restDataSource()); - sessionFactory.setPackagesToScan(new String[] { "com.baeldung.hibernate.manytomany" }); - sessionFactory.setHibernateProperties(hibernateProperties()); - - return sessionFactory; - } - - @Bean - public DataSource restDataSource() { - final BasicDataSource dataSource = new BasicDataSource(); - dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); - dataSource.setUrl(env.getProperty("jdbc.url")); - dataSource.setUsername(env.getProperty("jdbc.user")); - dataSource.setPassword(env.getProperty("jdbc.pass")); - - return dataSource; - } - - @Bean - public PlatformTransactionManager hibernateTransactionManager() { - final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); - transactionManager.setSessionFactory(sessionFactory().getObject()); - return transactionManager; - } - - @Bean - public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { - return new PersistenceExceptionTranslationPostProcessor(); - } - - private final Properties hibernateProperties() { - final Properties hibernateProperties = new Properties(); - hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); - hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); - hibernateProperties.setProperty("hibernate.show_sql", "false"); - - return hibernateProperties; - } -} +package com.baeldung.manytomany.spring; + +import java.util.Properties; +import javax.sql.DataSource; +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + + + +@Configuration +@EnableTransactionManagement +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.hibernate.manytomany" }) +public class PersistenceConfig { + + @Autowired + private Environment env; + + @Bean + public LocalSessionFactoryBean sessionFactory() { + final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); + sessionFactory.setDataSource(restDataSource()); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.hibernate.manytomany" }); + sessionFactory.setHibernateProperties(hibernateProperties()); + + return sessionFactory; + } + + @Bean + public DataSource restDataSource() { + final BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName")); + dataSource.setUrl(env.getProperty("jdbc.url")); + dataSource.setUsername(env.getProperty("jdbc.user")); + dataSource.setPassword(env.getProperty("jdbc.pass")); + + return dataSource; + } + + @Bean + public PlatformTransactionManager hibernateTransactionManager() { + final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); + transactionManager.setSessionFactory(sessionFactory().getObject()); + return transactionManager; + } + + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + private final Properties hibernateProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + hibernateProperties.setProperty("hibernate.show_sql", "false"); + + return hibernateProperties; + } +} diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java new file mode 100644 index 0000000000..5a6c76a93a --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java @@ -0,0 +1,14 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; + +import com.google.common.base.Preconditions; + +public abstract class AbstractDao implements IOperations { + + protected Class clazz; + + protected final void setClazz(final Class clazzToSet) { + clazz = Preconditions.checkNotNull(clazzToSet); + } +} diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java new file mode 100644 index 0000000000..f34866d883 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java @@ -0,0 +1,59 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.springframework.beans.factory.annotation.Autowired; + +import com.google.common.base.Preconditions; + +@SuppressWarnings("unchecked") +public abstract class AbstractHibernateDao extends AbstractDao implements IOperations { + + @Autowired + protected SessionFactory sessionFactory; + + // API + + @Override + public T findOne(final long id) { + return (T) getCurrentSession().get(clazz, id); + } + + @Override + public List findAll() { + return getCurrentSession().createQuery("from " + clazz.getName()).getResultList(); + } + + @Override + public void create(final T entity) { + Preconditions.checkNotNull(entity); + getCurrentSession().saveOrUpdate(entity); + } + + @Override + public T update(final T entity) { + Preconditions.checkNotNull(entity); + return (T) getCurrentSession().merge(entity); + } + + @Override + public void delete(final T entity) { + Preconditions.checkNotNull(entity); + getCurrentSession().delete(entity); + } + + @Override + public void deleteById(final long entityId) { + final T entity = findOne(entityId); + Preconditions.checkState(entity != null); + delete(entity); + } + + protected Session getCurrentSession() { + return sessionFactory.getCurrentSession(); + } + +} \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java new file mode 100644 index 0000000000..4ef99221ab --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java @@ -0,0 +1,20 @@ +package com.baeldung.persistence.dao.common; + +import java.io.Serializable; +import java.util.List; + +public interface IOperations { + + T findOne(final long id); + + List findAll(); + + void create(final T entity); + + T update(final T entity); + + void delete(final T entity); + + void deleteById(final long entityId); + +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java similarity index 96% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java index d619807b64..5ba018dc52 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java @@ -1,8 +1,8 @@ -package com.baeldung.persistence.manytomany.dao; - -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IEmployeeDao extends IOperations{ - -} +package com.baeldung.persistence.manytomany.dao; + +import com.baeldung.hibernate.manytomany.model.Employee; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IEmployeeDao extends IOperations{ + +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java similarity index 96% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java index 4a55714f8d..48fbb8bf6b 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java @@ -1,8 +1,8 @@ -package com.baeldung.persistence.manytomany.dao; - -import com.baeldung.hibernate.manytomany.model.Project; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IProjectDao extends IOperations{ - -} +package com.baeldung.persistence.manytomany.dao; + +import com.baeldung.hibernate.manytomany.model.Project; +import com.baeldung.persistence.dao.common.IOperations; + +public interface IProjectDao extends IOperations{ + +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java similarity index 96% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java index b062c00ff9..25fee8c379 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java @@ -1,16 +1,16 @@ -package com.baeldung.persistence.manytomany.dao.impl; - -import org.springframework.stereotype.Repository; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.manytomany.dao.IEmployeeDao; - -@Repository -public class EmployeeDao extends AbstractHibernateDao implements IEmployeeDao { - - public EmployeeDao() { - super(); - - setClazz(Employee.class); - } -} +package com.baeldung.persistence.manytomany.dao.impl; + +import org.springframework.stereotype.Repository; +import com.baeldung.hibernate.manytomany.model.Employee; +import com.baeldung.persistence.dao.common.AbstractHibernateDao; +import com.baeldung.persistence.manytomany.dao.IEmployeeDao; + +@Repository +public class EmployeeDao extends AbstractHibernateDao implements IEmployeeDao { + + public EmployeeDao() { + super(); + + setClazz(Employee.class); + } +} diff --git a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java similarity index 96% rename from persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java rename to persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java index 772026fbc1..8fc29a5de3 100644 --- a/persistence-modules/spring-hibernate-5/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java @@ -1,17 +1,17 @@ -package com.baeldung.persistence.manytomany.dao.impl; - -import org.springframework.stereotype.Repository; -import com.baeldung.hibernate.manytomany.model.Project; -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.manytomany.dao.IProjectDao; - - -@Repository -public class ProjectDao extends AbstractHibernateDao implements IProjectDao { - - public ProjectDao() { - super(); - - setClazz(Project.class); - } -} +package com.baeldung.persistence.manytomany.dao.impl; + +import org.springframework.stereotype.Repository; +import com.baeldung.hibernate.manytomany.model.Project; +import com.baeldung.persistence.dao.common.AbstractHibernateDao; +import com.baeldung.persistence.manytomany.dao.IProjectDao; + + +@Repository +public class ProjectDao extends AbstractHibernateDao implements IProjectDao { + + public ProjectDao() { + super(); + + setClazz(Project.class); + } +} diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java new file mode 100644 index 0000000000..e1ea3e2024 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java @@ -0,0 +1,75 @@ +package com.baeldung.spring; + +import com.google.common.base.Preconditions; +import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; +import org.springframework.core.env.Environment; +import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; +import org.springframework.orm.hibernate5.HibernateTransactionManager; +import org.springframework.orm.hibernate5.LocalSessionFactoryBean; +import org.springframework.transaction.PlatformTransactionManager; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import javax.sql.DataSource; +import java.util.Properties; + +@Configuration +@EnableTransactionManagement +@PropertySource({ "classpath:persistence-h2.properties" }) +@ComponentScan({ "com.baeldung.persistence" }) +public class PersistenceConfig { + + @Autowired + private Environment env; + + @Bean + public LocalSessionFactoryBean sessionFactory() { + final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); + sessionFactory.setDataSource(dataSource()); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); + sessionFactory.setHibernateProperties(hibernateProperties()); + + return sessionFactory; + } + + @Bean + public DataSource dataSource() { + final BasicDataSource dataSource = new BasicDataSource(); + dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); + dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); + dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); + dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); + + return dataSource; + } + + @Bean + public PlatformTransactionManager hibernateTransactionManager() { + final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); + transactionManager.setSessionFactory(sessionFactory().getObject()); + return transactionManager; + } + + @Bean + public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { + return new PersistenceExceptionTranslationPostProcessor(); + } + + private final Properties hibernateProperties() { + final Properties hibernateProperties = new Properties(); + hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); + hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); + + hibernateProperties.setProperty("hibernate.show_sql", "false"); + + // Envers properties + hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", env.getProperty("envers.audit_table_suffix")); + + return hibernateProperties; + } + +} \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/import.sql b/persistence-modules/hibernate-many-to-many/src/main/resources/import.sql new file mode 100644 index 0000000000..ae008f29bc --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/resources/import.sql @@ -0,0 +1,31 @@ +insert into item (item_id, item_name, item_desc, item_price) +values(1,'item One', 'test 1', 35.12); + +insert into item (item_id, item_name, item_desc, item_price) +values(2,'Pogo stick', 'Pogo stick', 466.12); +insert into item (item_id, item_name, item_desc, item_price) +values(3,'Raft', 'Raft', 345.12); + +insert into item (item_id, item_name, item_desc, item_price) +values(4,'Skate Board', 'Skating', 135.71); + +insert into item (item_id, item_name, item_desc, item_price) +values(5,'Umbrella', 'Umbrella for Rain', 619.25); + +insert into item (item_id, item_name, item_desc, item_price) +values(6,'Glue', 'Glue for home', 432.73); + +insert into item (item_id, item_name, item_desc, item_price) +values(7,'Paint', 'Paint for Room', 1311.40); + +insert into item (item_id, item_name, item_desc, item_price) +values(8,'Red paint', 'Red paint for room', 1135.71); + +insert into item (item_id, item_name, item_desc, item_price) +values(9,'Household Chairs', 'Chairs for house', 25.71); + +insert into item (item_id, item_name, item_desc, item_price) +values(10,'Office Chairs', 'Chairs for office', 395.98); + +insert into item (item_id, item_name, item_desc, item_price) +values(11,'Outdoor Chairs', 'Chairs for outdoor activities', 1234.36); diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/logback.xml b/persistence-modules/hibernate-many-to-many/src/main/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/spring-hibernate-5/src/main/resources/manytomany.cfg.xml b/persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml similarity index 98% rename from persistence-modules/spring-hibernate-5/src/main/resources/manytomany.cfg.xml rename to persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml index 315e2e3118..d7c8f24fb0 100644 --- a/persistence-modules/spring-hibernate-5/src/main/resources/manytomany.cfg.xml +++ b/persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml @@ -1,15 +1,15 @@ - - - - - com.mysql.jdbc.Driver - tutorialmy5ql - jdbc:mysql://localhost:3306/spring_hibernate_many_to_many - tutorialuser - org.hibernate.dialect.MySQLDialect - thread - false - - + + + + + com.mysql.jdbc.Driver + tutorialmy5ql + jdbc:mysql://localhost:3306/spring_hibernate_many_to_many + tutorialuser + org.hibernate.dialect.MySQLDialect + thread + false + + diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties b/persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties new file mode 100644 index 0000000000..e3544d354a --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties @@ -0,0 +1,21 @@ +# jdbc.X +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +jdbc.eventGeneratedId=sa +jdbc.user=sa +jdbc.pass= + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=create-drop +hibernate.cache.use_second_level_cache=true +hibernate.cache.use_query_cache=true +hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory + +# hibernate.search.X +hibernate.search.default.directory_provider = filesystem +hibernate.search.default.indexBase = /data/index/default + +# envers.X +envers.audit_table_suffix=_audit_log diff --git a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java new file mode 100644 index 0000000000..24c038aeb6 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java @@ -0,0 +1,19 @@ +package com.baeldung; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; + + +import com.baeldung.spring.PersistenceConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) +public class SpringContextTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java b/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java similarity index 97% rename from persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java rename to persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java index 614de6d3ad..797d3384a0 100644 --- a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java +++ b/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java @@ -1,49 +1,49 @@ -package com.baeldung.hibernate.manytomany; - -import java.util.HashSet; -import java.util.Set; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.hibernate.manytomany.model.Project; -import com.baeldung.manytomany.spring.PersistenceConfig; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) -public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest { - - @Autowired - private SessionFactory sessionFactory; - - private Session session; - - @Before - public final void before() { - session = sessionFactory.openSession(); - session.beginTransaction(); - } - - @After - public final void after() { - session.getTransaction().commit(); - session.close(); - } - - @Test - public final void whenEntitiesAreCreated_thenNoExceptions() { - Set projects = new HashSet(); - projects.add(new Project("IT Project")); - projects.add(new Project("Networking Project")); - session.persist(new Employee("Peter", "Oven", projects)); - session.persist(new Employee("Allan", "Norman", projects)); - } - -} +package com.baeldung.hibernate.manytomany; + +import java.util.HashSet; +import java.util.Set; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.AnnotationConfigContextLoader; +import com.baeldung.hibernate.manytomany.model.Employee; +import com.baeldung.hibernate.manytomany.model.Project; +import com.baeldung.manytomany.spring.PersistenceConfig; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) +public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest { + + @Autowired + private SessionFactory sessionFactory; + + private Session session; + + @Before + public final void before() { + session = sessionFactory.openSession(); + session.beginTransaction(); + } + + @After + public final void after() { + session.getTransaction().commit(); + session.close(); + } + + @Test + public final void whenEntitiesAreCreated_thenNoExceptions() { + Set projects = new HashSet(); + projects.add(new Project("IT Project")); + projects.add(new Project("Networking Project")); + session.persist(new Employee("Peter", "Oven", projects)); + session.persist(new Employee("Allan", "Norman", projects)); + } + +} diff --git a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java b/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java similarity index 96% rename from persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java rename to persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java index 0073e181cc..d09b2888df 100644 --- a/persistence-modules/spring-hibernate-5/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java +++ b/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java @@ -1,80 +1,80 @@ -package com.baeldung.hibernate.manytomany; - -import static org.junit.Assert.assertNotNull; -import static junit.framework.TestCase.assertEquals; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import org.hibernate.Session; -import org.hibernate.SessionFactory; -import org.junit.After; -import org.junit.AfterClass; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; - -import com.baeldung.hibernate.manytomany.util.HibernateUtil; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.hibernate.manytomany.model.Project; - -/** - * Configured in: manytomany.cfg.xml - */ -public class HibernateManyToManyAnnotationMainIntegrationTest { - private static SessionFactory sessionFactory; - - private Session session; - - @BeforeClass - public static void beforeTests() { - sessionFactory = HibernateUtil.getSessionFactory(); - } - - @Before - public void setUp() { - session = sessionFactory.openSession(); - session.beginTransaction(); - } - - @Test - public void givenData_whenInsert_thenCreatesMtoMrelationship() { - String[] employeeData = { "Peter Oven", "Allan Norman" }; - String[] projectData = { "IT Project", "Networking Project" }; - Set projects = new HashSet(); - - for (String proj : projectData) { - projects.add(new Project(proj)); - } - - for (String emp : employeeData) { - Employee employee = new Employee(emp.split(" ")[0], emp.split(" ")[1]); - assertEquals(0, employee.getProjects().size()); - employee.setProjects(projects); - session.persist(employee); - assertNotNull(employee); - } - } - - @Test - public void givenSession_whenRead_thenReturnsMtoMdata() { - @SuppressWarnings("unchecked") - List employeeList = session.createQuery("FROM Employee").list(); - assertNotNull(employeeList); - for(Employee employee : employeeList) { - assertNotNull(employee.getProjects()); - } - } - - @After - public void tearDown() { - session.getTransaction() - .commit(); - session.close(); - } - - @AfterClass - public static void afterTests() { - sessionFactory.close(); - } - -} +package com.baeldung.hibernate.manytomany; + +import static org.junit.Assert.assertNotNull; +import static junit.framework.TestCase.assertEquals; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import com.baeldung.hibernate.manytomany.util.HibernateUtil; +import com.baeldung.hibernate.manytomany.model.Employee; +import com.baeldung.hibernate.manytomany.model.Project; + +/** + * Configured in: manytomany.cfg.xml + */ +public class HibernateManyToManyAnnotationMainIntegrationTest { + private static SessionFactory sessionFactory; + + private Session session; + + @BeforeClass + public static void beforeTests() { + sessionFactory = HibernateUtil.getSessionFactory(); + } + + @Before + public void setUp() { + session = sessionFactory.openSession(); + session.beginTransaction(); + } + + @Test + public void givenData_whenInsert_thenCreatesMtoMrelationship() { + String[] employeeData = { "Peter Oven", "Allan Norman" }; + String[] projectData = { "IT Project", "Networking Project" }; + Set projects = new HashSet(); + + for (String proj : projectData) { + projects.add(new Project(proj)); + } + + for (String emp : employeeData) { + Employee employee = new Employee(emp.split(" ")[0], emp.split(" ")[1]); + assertEquals(0, employee.getProjects().size()); + employee.setProjects(projects); + session.persist(employee); + assertNotNull(employee); + } + } + + @Test + public void givenSession_whenRead_thenReturnsMtoMdata() { + @SuppressWarnings("unchecked") + List employeeList = session.createQuery("FROM Employee").list(); + assertNotNull(employeeList); + for(Employee employee : employeeList) { + assertNotNull(employee.getProjects()); + } + } + + @After + public void tearDown() { + session.getTransaction() + .commit(); + session.close(); + } + + @AfterClass + public static void afterTests() { + sessionFactory.close(); + } + +} diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore b/persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml b/persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml new file mode 100644 index 0000000000..9e0109aae2 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/import.sql b/persistence-modules/hibernate-many-to-many/src/test/resources/import.sql new file mode 100644 index 0000000000..087d62d331 --- /dev/null +++ b/persistence-modules/hibernate-many-to-many/src/test/resources/import.sql @@ -0,0 +1,21 @@ +insert into item (item_id, item_name, item_desc, item_price) values(1,'item One', 'test 1', 35.12); + +insert into item (item_id, item_name, item_desc, item_price) values(2,'Pogo stick', 'Pogo stick', 466.12); + +insert into item (item_id, item_name, item_desc, item_price) values(3,'Raft', 'Raft', 345.12); + +insert into item (item_id, item_name, item_desc, item_price) values(4,'Skate Board', 'Skating', 135.71); + +insert into item (item_id, item_name, item_desc, item_price) values(5,'Umbrella', 'Umbrella for Rain', 619.25); + +insert into item (item_id, item_name, item_desc, item_price) values(6,'Glue', 'Glue for home', 432.73); + +insert into item (item_id, item_name, item_desc, item_price) values(7,'Paint', 'Paint for Room', 1311.40); + +insert into item (item_id, item_name, item_desc, item_price) values(8,'Red paint', 'Red paint for room', 1135.71); + +insert into item (item_id, item_name, item_desc, item_price) values(9,'Household Chairs', 'Chairs for house', 25.71); + +insert into item (item_id, item_name, item_desc, item_price) values(10,'Office Chairs', 'Chairs for office', 395.98); + +insert into item (item_id, item_name, item_desc, item_price) values(11,'Outdoor Chairs', 'Chairs for outdoor activities', 1234.36); diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/manytomany.cfg.xml b/persistence-modules/hibernate-many-to-many/src/test/resources/manytomany.cfg.xml similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/resources/manytomany.cfg.xml rename to persistence-modules/hibernate-many-to-many/src/test/resources/manytomany.cfg.xml diff --git a/persistence-modules/spring-hibernate-5/README.md b/persistence-modules/spring-hibernate-5/README.md index eff59a0362..9770fe95af 100644 --- a/persistence-modules/spring-hibernate-5/README.md +++ b/persistence-modules/spring-hibernate-5/README.md @@ -4,7 +4,6 @@ This module contains articles about Hibernate 5 with Spring. ### Relevant articles -- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many) - [Programmatic Transactions in the Spring TestContext Framework](https://www.baeldung.com/spring-test-programmatic-transactions) - [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries) - [Introduction to Hibernate Search](https://www.baeldung.com/hibernate-search) diff --git a/persistence-modules/spring-hibernate-5/pom.xml b/persistence-modules/spring-hibernate-5/pom.xml index d0fa23504c..bb8c4e8228 100644 --- a/persistence-modules/spring-hibernate-5/pom.xml +++ b/persistence-modules/spring-hibernate-5/pom.xml @@ -108,6 +108,26 @@ h2 ${h2.version} + + jakarta.xml.bind + jakarta.xml.bind-api + 2.3.2 + + + com.sun.xml.bind + jaxb-core + 2.3.0.1 + + + javax.xml.bind + jaxb-api + 2.3.1 + + + com.sun.xml.bind + jaxb-impl + 2.3.1 + diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/import.sql b/persistence-modules/spring-hibernate-5/src/test/resources/import.sql index 087d62d331..52c800f6b4 100644 --- a/persistence-modules/spring-hibernate-5/src/test/resources/import.sql +++ b/persistence-modules/spring-hibernate-5/src/test/resources/import.sql @@ -1,3 +1,4 @@ + insert into item (item_id, item_name, item_desc, item_price) values(1,'item One', 'test 1', 35.12); insert into item (item_id, item_name, item_desc, item_price) values(2,'Pogo stick', 'Pogo stick', 466.12); From 9d191600435a8812a8ed50bcbe1cfb595dd0f148 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Tue, 22 Feb 2022 21:53:39 +0530 Subject: [PATCH 08/37] JAVA-9824: Identify boot modules not using parent-boot-2 as parent and upgrade log4j for them --- jta/pom.xml | 13 +++++++++++++ maven-modules/maven-generate-war/pom.xml | 1 + patterns/enterprise-patterns/pom.xml | 8 ++++++++ persistence-modules/spring-data-dynamodb/pom.xml | 8 ++++++++ quarkus-vs-springboot/spring-project/pom.xml | 1 + spring-5-data-reactive/pom.xml | 13 +++++++++++++ spring-activiti/pom.xml | 13 +++++++++++++ spring-boot-modules/spring-boot-2/pom.xml | 2 +- .../spring-boot-logging-log4j2/pom.xml | 1 + spring-boot-modules/spring-boot-mvc-birt/pom.xml | 1 + spring-boot-modules/spring-boot-react/pom.xml | 13 +++++++++++++ .../spring-boot-swagger-keycloak/pom.xml | 8 ++++++++ spring-boot-modules/spring-boot-testing/pom.xml | 13 +++++++++++++ spring-cloud/spring-cloud-contract/pom.xml | 8 ++++++++ .../spring-cloud-eureka-self-preservation/pom.xml | 13 +++++++++++++ spring-cloud/spring-cloud-eureka/pom.xml | 13 +++++++++++++ spring-cloud/spring-cloud-load-balancer/pom.xml | 13 +++++++++++++ .../twitterhdfs/pom.xml | 1 + .../eureka-client/pom.xml | 11 +++++++++++ .../eureka-server/pom.xml | 11 +++++++++++ .../zuul-server/pom.xml | 11 +++++++++++ .../spring-zuul-rate-limiting/pom.xml | 13 +++++++++++++ spring-di-2/pom.xml | 8 ++++++++ spring-di-3/pom.xml | 8 ++++++++ spring-native/pom.xml | 1 + spring-roo/pom.xml | 1 + .../spring-5-security-oauth/pom.xml | 14 ++++++++++++++ .../spring-security-legacy-oidc/pom.xml | 13 +++++++++++++ .../custom-validations-opeanpi-codegen/pom.xml | 1 + spring-web-modules/spring-boot-jsp/pom.xml | 8 ++++++++ 30 files changed, 242 insertions(+), 1 deletion(-) diff --git a/jta/pom.xml b/jta/pom.xml index e9f9364646..e62c480c81 100644 --- a/jta/pom.xml +++ b/jta/pom.xml @@ -15,6 +15,18 @@ 0.0.1-SNAPSHOT ../parent-boot-2 + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + @@ -37,6 +49,7 @@ 2.4.7 + 2.17.1 \ No newline at end of file diff --git a/maven-modules/maven-generate-war/pom.xml b/maven-modules/maven-generate-war/pom.xml index 56256f58ea..b388cfdadd 100644 --- a/maven-modules/maven-generate-war/pom.xml +++ b/maven-modules/maven-generate-war/pom.xml @@ -63,6 +63,7 @@ 11 + 2.17.1 \ No newline at end of file diff --git a/patterns/enterprise-patterns/pom.xml b/patterns/enterprise-patterns/pom.xml index 10c07d6d05..999b359170 100644 --- a/patterns/enterprise-patterns/pom.xml +++ b/patterns/enterprise-patterns/pom.xml @@ -48,6 +48,13 @@ pom import + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + @@ -63,6 +70,7 @@ 3.7.4 2.2.2.RELEASE + 2.17.1 \ No newline at end of file diff --git a/persistence-modules/spring-data-dynamodb/pom.xml b/persistence-modules/spring-data-dynamodb/pom.xml index 148215b68a..0e990c69f3 100644 --- a/persistence-modules/spring-data-dynamodb/pom.xml +++ b/persistence-modules/spring-data-dynamodb/pom.xml @@ -24,6 +24,13 @@ pom import + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + @@ -184,6 +191,7 @@ https://s3-us-west-2.amazonaws.com/dynamodb-local/release 3.1.1 2.4.7 + 2.17.1 \ No newline at end of file diff --git a/quarkus-vs-springboot/spring-project/pom.xml b/quarkus-vs-springboot/spring-project/pom.xml index bf524cd550..7f0fa4c8c6 100644 --- a/quarkus-vs-springboot/spring-project/pom.xml +++ b/quarkus-vs-springboot/spring-project/pom.xml @@ -187,6 +187,7 @@ 11 0.11.0-RC1 + 2.17.1 \ No newline at end of file diff --git a/spring-5-data-reactive/pom.xml b/spring-5-data-reactive/pom.xml index c145992737..023eda856b 100644 --- a/spring-5-data-reactive/pom.xml +++ b/spring-5-data-reactive/pom.xml @@ -13,6 +13,18 @@ 0.0.1-SNAPSHOT ../parent-boot-2 + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + @@ -138,6 +150,7 @@ 3.3.1.RELEASE 2.2.6.RELEASE + 2.17.1 \ No newline at end of file diff --git a/spring-activiti/pom.xml b/spring-activiti/pom.xml index c685207cc4..2ede13a152 100644 --- a/spring-activiti/pom.xml +++ b/spring-activiti/pom.xml @@ -16,6 +16,18 @@ 0.0.1-SNAPSHOT ../parent-boot-1 + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + @@ -59,6 +71,7 @@ 6.0.0 + 2.17.1 \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-2/pom.xml b/spring-boot-modules/spring-boot-2/pom.xml index 08dc517fa0..0da07eaf00 100644 --- a/spring-boot-modules/spring-boot-2/pom.xml +++ b/spring-boot-modules/spring-boot-2/pom.xml @@ -62,7 +62,7 @@ - 2.14.1 + 2.17.1 5.3.15 11 11 diff --git a/spring-boot-modules/spring-boot-logging-log4j2/pom.xml b/spring-boot-modules/spring-boot-logging-log4j2/pom.xml index 8cf052deb3..036df19887 100644 --- a/spring-boot-modules/spring-boot-logging-log4j2/pom.xml +++ b/spring-boot-modules/spring-boot-logging-log4j2/pom.xml @@ -102,6 +102,7 @@ 4.13.2 5.8.1 + 2.17.1 \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-mvc-birt/pom.xml b/spring-boot-modules/spring-boot-mvc-birt/pom.xml index 16b07000f8..8f1c770bbe 100644 --- a/spring-boot-modules/spring-boot-mvc-birt/pom.xml +++ b/spring-boot-modules/spring-boot-mvc-birt/pom.xml @@ -70,6 +70,7 @@ 1.8 4.8.0 1.2.17 + 2.17.1 \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-react/pom.xml b/spring-boot-modules/spring-boot-react/pom.xml index d515aed6ce..dc0c6914c9 100644 --- a/spring-boot-modules/spring-boot-react/pom.xml +++ b/spring-boot-modules/spring-boot-react/pom.xml @@ -11,6 +11,18 @@ 1.0.0-SNAPSHOT + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + + org.springframework.boot @@ -128,6 +140,7 @@ v1.12.1 2.4.4 1.0.2 + 2.17.1 \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-swagger-keycloak/pom.xml b/spring-boot-modules/spring-boot-swagger-keycloak/pom.xml index 82e1951b8e..a7f3e01014 100644 --- a/spring-boot-modules/spring-boot-swagger-keycloak/pom.xml +++ b/spring-boot-modules/spring-boot-swagger-keycloak/pom.xml @@ -24,6 +24,13 @@ pom import + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + @@ -62,6 +69,7 @@ 2.4.5 3.0.0 15.0.2 + 2.17.1 diff --git a/spring-boot-modules/spring-boot-testing/pom.xml b/spring-boot-modules/spring-boot-testing/pom.xml index 658eb7728e..fcfc2364ba 100644 --- a/spring-boot-modules/spring-boot-testing/pom.xml +++ b/spring-boot-modules/spring-boot-testing/pom.xml @@ -14,6 +14,18 @@ 1.0.0-SNAPSHOT + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + + org.springframework.boot @@ -131,6 +143,7 @@ 1.6 0.7.2 2.5.0 + 2.17.1 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-contract/pom.xml b/spring-cloud/spring-cloud-contract/pom.xml index 8546e76586..6e8b130ed1 100644 --- a/spring-cloud/spring-cloud-contract/pom.xml +++ b/spring-cloud/spring-cloud-contract/pom.xml @@ -21,6 +21,13 @@ + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.boot spring-boot-starter-web @@ -55,6 +62,7 @@ 2.1.1.RELEASE 2.1.4.RELEASE + 2.17.1 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-eureka-self-preservation/pom.xml b/spring-cloud/spring-cloud-eureka-self-preservation/pom.xml index 0b7da2ce4a..e22ad6b7c9 100644 --- a/spring-cloud/spring-cloud-eureka-self-preservation/pom.xml +++ b/spring-cloud/spring-cloud-eureka-self-preservation/pom.xml @@ -14,6 +14,18 @@ spring-cloud 1.0.0-SNAPSHOT + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + spring-cloud-eureka-server @@ -32,6 +44,7 @@ 2.1.3.RELEASE Greenwich.SR3 + 2.17.1 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-eureka/pom.xml b/spring-cloud/spring-cloud-eureka/pom.xml index e5327d4530..795eab7d6e 100644 --- a/spring-cloud/spring-cloud-eureka/pom.xml +++ b/spring-cloud/spring-cloud-eureka/pom.xml @@ -14,6 +14,18 @@ spring-cloud 1.0.0-SNAPSHOT + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + spring-cloud-eureka-server @@ -34,6 +46,7 @@ 2.1.2.RELEASE Greenwich.RELEASE + 2.17.1 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-load-balancer/pom.xml b/spring-cloud/spring-cloud-load-balancer/pom.xml index 9c650565ed..65cf83de09 100644 --- a/spring-cloud/spring-cloud-load-balancer/pom.xml +++ b/spring-cloud/spring-cloud-load-balancer/pom.xml @@ -19,6 +19,18 @@ spring-cloud-loadbalancer-server spring-cloud-loadbalancer-client + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + @@ -32,6 +44,7 @@ 2.6.1 2021.0.0 + 2.17.1 diff --git a/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml b/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml index 1c8fa4e694..73d6e62d37 100644 --- a/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml +++ b/spring-cloud/spring-cloud-stream-starters/twitterhdfs/pom.xml @@ -78,6 +78,7 @@ 4.13.2 5.8.1 + 2.17.1 \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml index 3514924198..b2cb66744b 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-client/pom.xml @@ -17,6 +17,13 @@ + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.cloud spring-cloud-starter-parent @@ -45,5 +52,9 @@ test + + + 2.17.1 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml index dcd912df07..466291650c 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/eureka-server/pom.xml @@ -17,6 +17,13 @@ + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.cloud spring-cloud-starter-parent @@ -45,5 +52,9 @@ test + + + 2.17.1 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml index bb38ec1351..27afc3eb69 100644 --- a/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml +++ b/spring-cloud/spring-cloud-zuul-eureka-integration/zuul-server/pom.xml @@ -14,6 +14,13 @@ + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.cloud spring-cloud-starter-parent @@ -53,5 +60,9 @@ test + + + 2.17.1 + \ No newline at end of file diff --git a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml index 2969b5eed9..4727859ea2 100644 --- a/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml +++ b/spring-cloud/spring-cloud-zuul/spring-zuul-rate-limiting/pom.xml @@ -13,6 +13,18 @@ spring-cloud-zuul 0.0.1-SNAPSHOT + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + @@ -44,6 +56,7 @@ 2.2.0.RELEASE 2.4.7 2020.0.4 + 2.17.1 \ No newline at end of file diff --git a/spring-di-2/pom.xml b/spring-di-2/pom.xml index d3be846424..1207506d17 100644 --- a/spring-di-2/pom.xml +++ b/spring-di-2/pom.xml @@ -16,6 +16,13 @@ + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.boot spring-boot-dependencies @@ -80,6 +87,7 @@ 2.6.1 1.11 1 + 2.17.1 \ No newline at end of file diff --git a/spring-di-3/pom.xml b/spring-di-3/pom.xml index 0d4bbd01af..c6a2687606 100644 --- a/spring-di-3/pom.xml +++ b/spring-di-3/pom.xml @@ -16,6 +16,13 @@ + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.boot spring-boot-dependencies @@ -40,6 +47,7 @@ 2.6.1 + 2.17.1 \ No newline at end of file diff --git a/spring-native/pom.xml b/spring-native/pom.xml index 4455e050f2..f54d7b5308 100644 --- a/spring-native/pom.xml +++ b/spring-native/pom.xml @@ -75,6 +75,7 @@ 1.8 1.8 1.8 + 2.17.1 \ No newline at end of file diff --git a/spring-roo/pom.xml b/spring-roo/pom.xml index b55a334256..ea42095d92 100644 --- a/spring-roo/pom.xml +++ b/spring-roo/pom.xml @@ -625,6 +625,7 @@ 1.0.3 2.0.0.RELEASE 1.2.0 + 2.17.1 \ No newline at end of file diff --git a/spring-security-modules/spring-5-security-oauth/pom.xml b/spring-security-modules/spring-5-security-oauth/pom.xml index aa4958ae47..706cdb3082 100644 --- a/spring-security-modules/spring-5-security-oauth/pom.xml +++ b/spring-security-modules/spring-5-security-oauth/pom.xml @@ -15,6 +15,19 @@ 0.0.1-SNAPSHOT ../../parent-boot-2 + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + + @@ -72,6 +85,7 @@ is available --> 2.5.2 com.baeldung.oauth2.SpringOAuthApplication + 2.17.1 \ No newline at end of file diff --git a/spring-security-modules/spring-security-legacy-oidc/pom.xml b/spring-security-modules/spring-security-legacy-oidc/pom.xml index ca54a6765d..9dd898f9dd 100644 --- a/spring-security-modules/spring-security-legacy-oidc/pom.xml +++ b/spring-security-modules/spring-security-legacy-oidc/pom.xml @@ -14,6 +14,18 @@ 0.0.1-SNAPSHOT ../../parent-boot-2 + + + + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + + + @@ -50,6 +62,7 @@ 1.0.9.RELEASE 0.3.0 2.4.7 + 2.17.1 \ No newline at end of file diff --git a/spring-swagger-codegen/custom-validations-opeanpi-codegen/pom.xml b/spring-swagger-codegen/custom-validations-opeanpi-codegen/pom.xml index 336cb0da74..9add9ae494 100644 --- a/spring-swagger-codegen/custom-validations-opeanpi-codegen/pom.xml +++ b/spring-swagger-codegen/custom-validations-opeanpi-codegen/pom.xml @@ -100,6 +100,7 @@ 11 3.0.0 + 2.17.1 \ No newline at end of file diff --git a/spring-web-modules/spring-boot-jsp/pom.xml b/spring-web-modules/spring-boot-jsp/pom.xml index b9b4a97e6b..d2a363bafa 100644 --- a/spring-web-modules/spring-boot-jsp/pom.xml +++ b/spring-web-modules/spring-boot-jsp/pom.xml @@ -23,6 +23,13 @@ pom import + + org.apache.logging.log4j + log4j-bom + ${log4j2.version} + import + pom + org.springframework.boot spring-boot-dependencies @@ -92,6 +99,7 @@ 1.2 2.4.4 + 2.17.1 \ No newline at end of file From fe0f83b4a23fd8d6bd554ca9ead4de39043e0397 Mon Sep 17 00:00:00 2001 From: Jonathan Cook Date: Tue, 22 Feb 2022 21:16:38 +0100 Subject: [PATCH 09/37] BAEL-5408 - Update Camel version in spring-boot-camel module (#11851) * BAEL-4706 - Spring Boot with Spring Batch * BAEL-3948 - Fix test(s) in spring-batch which leaves repository.sqlite changed * BAEL-4736 - Convert JSONArray to List of Object using camel-jackson * BAEL-4756 - Mockito MockSettings * BAEL-4756 - Mockito MockSettings - fix spelling * BAEL-2674 - Upgrade the Okhttp article * BAEL-4204 - Adding Interceptors in OkHTTP * BAEL-4836 - Mocking Static Methods with Mockito * BAEL-4205 - A Guide to Events in OkHTTP * BAEL-5408 - Update Camel version in spring-boot-camel module Co-authored-by: Jonathan Cook --- pom.xml | 6 ++++-- spring-boot-modules/pom.xml | 1 - spring-boot-modules/spring-boot-camel/pom.xml | 11 ++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index f5378f9961..99217774e9 100644 --- a/pom.xml +++ b/pom.xml @@ -1343,7 +1343,8 @@ persistence-modules/spring-data-cassandra-2 quarkus-vs-springboot quarkus-jandex - spring-boot-modules/spring-boot-cassandre + spring-boot-modules/spring-boot-cassandre + spring-boot-modules/spring-boot-camel testing-modules/testing-assertions @@ -1400,7 +1401,8 @@ persistence-modules/spring-data-cassandra-2 quarkus-vs-springboot quarkus-jandex - spring-boot-modules/spring-boot-cassandre + spring-boot-modules/spring-boot-cassandre + spring-boot-modules/spring-boot-camel testing-modules/testing-assertions diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml index c1a96a0604..fabd54aa92 100644 --- a/spring-boot-modules/pom.xml +++ b/spring-boot-modules/pom.xml @@ -36,7 +36,6 @@ spring-boot-deployment spring-boot-di spring-boot-disable-logging - spring-boot-camel spring-boot-ci-cd spring-boot-custom-starter diff --git a/spring-boot-modules/spring-boot-camel/pom.xml b/spring-boot-modules/spring-boot-camel/pom.xml index 5d5e2ce6bd..5bda1b2351 100644 --- a/spring-boot-modules/spring-boot-camel/pom.xml +++ b/spring-boot-modules/spring-boot-camel/pom.xml @@ -16,22 +16,22 @@ - org.apache.camel + org.apache.camel.springboot camel-servlet-starter ${camel.version} - org.apache.camel + org.apache.camel.springboot camel-jackson-starter ${camel.version} - org.apache.camel + org.apache.camel.springboot camel-swagger-java-starter ${camel.version} - org.apache.camel + org.apache.camel.springboot camel-spring-boot-starter ${camel.version} @@ -64,7 +64,8 @@ - 3.0.0-M4 + 11 + 3.15.0 \ No newline at end of file From 23c72d2063f8f1495b3f9770fc4d5cdd20a25adc Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 04:19:38 +0800 Subject: [PATCH 10/37] Create README.md --- spring-5-autowiring-beans/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 spring-5-autowiring-beans/README.md diff --git a/spring-5-autowiring-beans/README.md b/spring-5-autowiring-beans/README.md new file mode 100644 index 0000000000..dc8751325e --- /dev/null +++ b/spring-5-autowiring-beans/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Spring @Autowired Field Null – Common Causes and Solutions](https://www.baeldung.com/spring-autowired-field-null) From 32813cbc3e8d61a542e36d02168f0c182b534d87 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:01:47 +0800 Subject: [PATCH 11/37] Update README.md --- core-java-modules/core-java-security-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-security-3/README.md b/core-java-modules/core-java-security-3/README.md index 31969cd270..9d82e829e2 100644 --- a/core-java-modules/core-java-security-3/README.md +++ b/core-java-modules/core-java-security-3/README.md @@ -10,4 +10,5 @@ This module contains articles about core Java Security - [HMAC in Java](https://www.baeldung.com/java-hmac) - [Generating a Secure AES Key in Java](https://www.baeldung.com/java-secure-aes-key) - [Computing an X509 Certificate’s Thumbprint in Java](https://www.baeldung.com/java-x509-certificate-thumbprint) +- [Error: “trustAnchors parameter must be non-empty”](https://www.baeldung.com/java-trustanchors-parameter-must-be-non-empty) - More articles: [[<-- prev]](/core-java-modules/core-java-security-2) From 07cd27a9b29b2601383170a542089f16b5555737 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:03:19 +0800 Subject: [PATCH 12/37] Create README.md --- gradle/gradle-source-vs-target-compatibility/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 gradle/gradle-source-vs-target-compatibility/README.md diff --git a/gradle/gradle-source-vs-target-compatibility/README.md b/gradle/gradle-source-vs-target-compatibility/README.md new file mode 100644 index 0000000000..cc3157fde3 --- /dev/null +++ b/gradle/gradle-source-vs-target-compatibility/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [Gradle: sourceCompatiblity vs targetCompatibility](https://www.baeldung.com/gradle-sourcecompatiblity-vs-targetcompatibility) From 3b0151e731fd53fd26f80a6dbb68de7ba2142693 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:09:35 +0800 Subject: [PATCH 13/37] Update README.md --- spring-cloud/spring-cloud-openfeign/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-cloud/spring-cloud-openfeign/README.md b/spring-cloud/spring-cloud-openfeign/README.md index 5d3dc060c7..44f4d15b16 100644 --- a/spring-cloud/spring-cloud-openfeign/README.md +++ b/spring-cloud/spring-cloud-openfeign/README.md @@ -4,3 +4,4 @@ - [Differences Between Netflix Feign and OpenFeign](https://www.baeldung.com/netflix-feign-vs-openfeign) - [File Upload With Open Feign](https://www.baeldung.com/java-feign-file-upload) - [Feign Logging Configuration](https://www.baeldung.com/java-feign-logging) +- [Provide an OAuth2 Token to a Feign Client](https://www.baeldung.com/spring-cloud-feign-oauth-token) From 2ef9f3c02672464c8aa7e9126691da4f567dea6f Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:16:19 +0800 Subject: [PATCH 14/37] Update README.md --- spring-di-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-di-3/README.md b/spring-di-3/README.md index 9ab7789f37..4246069616 100644 --- a/spring-di-3/README.md +++ b/spring-di-3/README.md @@ -5,4 +5,5 @@ This module contains articles about dependency injection with Spring ### Relevant Articles - [@Lookup Annotation in Spring](https://www.baeldung.com/spring-lookup) +- [Spring @Autowired Field Null – Common Causes and Solutions](https://www.baeldung.com/spring-autowired-field-null) - More articles: [[<-- prev]](../spring-di-2) From ca061932b3496b239fe19f7822da0162d7910c3c Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:18:05 +0800 Subject: [PATCH 15/37] Update README.md --- spring-boot-modules/spring-boot-swagger/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-swagger/README.md b/spring-boot-modules/spring-boot-swagger/README.md index 174bfe626d..a09df23a80 100644 --- a/spring-boot-modules/spring-boot-swagger/README.md +++ b/spring-boot-modules/spring-boot-swagger/README.md @@ -5,3 +5,4 @@ - [Generate PDF from Swagger API Documentation](https://www.baeldung.com/swagger-generate-pdf) - [Remove Basic Error Controller In SpringFox Swagger-UI](https://www.baeldung.com/spring-swagger-remove-error-controller) - [Setting Example and Description with Swagger](https://www.baeldung.com/swagger-set-example-description) +- [Document Enum in Swagger](https://www.baeldung.com/swagger-enum) From b113c42902efcca7f8a1bc748d97d830ee99858e Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:19:46 +0800 Subject: [PATCH 16/37] Update README.md --- java-native/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-native/README.md b/java-native/README.md index 4f85342a38..2aa02c03d5 100644 --- a/java-native/README.md +++ b/java-native/README.md @@ -7,3 +7,4 @@ This module contains articles about the Java Native Interface (JNI). - [Guide to JNI (Java Native Interface)](https://www.baeldung.com/jni) - [Using JNA to Access Native Dynamic Libraries](https://www.baeldung.com/java-jna-dynamic-libraries) - [Check if a Java Program Is Running in 64-Bit or 32-Bit JVM](https://www.baeldung.com/java-detect-jvm-64-or-32-bit) +- [How to use JNI’s RegisterNatives() method?](https://www.baeldung.com/jni-registernatives) From 9fd7fb2c0f955d8f58e383931f071a2928eeb15d Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:45:17 +0800 Subject: [PATCH 17/37] Update README.md --- persistence-modules/hibernate-queries/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/hibernate-queries/README.md b/persistence-modules/hibernate-queries/README.md index 61d94e32de..58ca74cd24 100644 --- a/persistence-modules/hibernate-queries/README.md +++ b/persistence-modules/hibernate-queries/README.md @@ -7,4 +7,5 @@ This module contains articles about use of Queries in Hibernate. - [Criteria Queries Using JPA Metamodel](https://www.baeldung.com/hibernate-criteria-queries-metamodel) - [Get All Data from a Table with Hibernate](https://www.baeldung.com/hibernate-select-all) - [Hibernate Named Query](https://www.baeldung.com/hibernate-named-query) -- [Hibernate Query Plan Cache](https://www.baeldung.com/hibernate-query-plan-cache) \ No newline at end of file +- [Hibernate Query Plan Cache](https://www.baeldung.com/hibernate-query-plan-cache) +- [Hibernate’s addScalar() Method](https://www.baeldung.com/hibernate-addscalar) From 5c33e8c30ca8afc72f004041d25d37227b52d5d7 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:46:49 +0800 Subject: [PATCH 18/37] Update README.md --- spring-boot-modules/spring-boot-security/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/spring-boot-modules/spring-boot-security/README.md b/spring-boot-modules/spring-boot-security/README.md index b9966709cb..d848f798ba 100644 --- a/spring-boot-modules/spring-boot-security/README.md +++ b/spring-boot-modules/spring-boot-security/README.md @@ -10,6 +10,7 @@ This module contains articles about Spring Boot Security - [Guide to @CurrentSecurityContext in Spring Security](https://www.baeldung.com/spring-currentsecuritycontext) - [Disable Security for a Profile in Spring Boot](https://www.baeldung.com/spring-security-disable-profile) - [Spring @EnableWebSecurity vs. @EnableGlobalMethodSecurity](https://www.baeldung.com/spring-enablewebsecurity-vs-enableglobalmethodsecurity) +- [Spring Security – Configuring Different URLs](https://www.baeldung.com/spring-security-configuring-urls) ### Spring Boot Security Auto-Configuration From cf98dad5db819aee692d575a44eb95e1d70ad5b2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:51:34 +0800 Subject: [PATCH 19/37] Update README.md --- core-java-modules/core-java-collections-4/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-collections-4/README.md b/core-java-modules/core-java-collections-4/README.md index 0e14f407c4..cbca44d372 100644 --- a/core-java-modules/core-java-collections-4/README.md +++ b/core-java-modules/core-java-collections-4/README.md @@ -7,3 +7,4 @@ - [ArrayList vs. LinkedList vs. HashMap in Java](https://www.baeldung.com/java-arraylist-vs-linkedlist-vs-hashmap) - [Java Deque vs. Stack](https://www.baeldung.com/java-deque-vs-stack) - [Collection.toArray(new T[0]) or .toArray(new T[size])](https://www.baeldung.com/java-collection-toarray-methods) +- [Create an Empty Map in Java](https://www.baeldung.com/java-create-empty-map) From 9011fdc4f5be943d447878765c7ff3e47e69e190 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:52:51 +0800 Subject: [PATCH 20/37] Update README.md --- core-java-modules/core-java-8-2/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/core-java-modules/core-java-8-2/README.md b/core-java-modules/core-java-8-2/README.md index 7f2245ccc0..12a060ccfe 100644 --- a/core-java-modules/core-java-8-2/README.md +++ b/core-java-modules/core-java-8-2/README.md @@ -8,4 +8,5 @@ This module contains articles about Java 8 core features - [Java 8 Stream skip() vs limit()](https://www.baeldung.com/java-stream-skip-vs-limit) - [Guide to Java BiFunction Interface](https://www.baeldung.com/java-bifunction-interface) - [Interface With Default Methods vs Abstract Class](https://www.baeldung.com/java-interface-default-method-vs-abstract-class) +- [Convert Between Byte Array and UUID in Java](https://www.baeldung.com/java-byte-array-to-uuid) - [[<-- Prev]](/core-java-modules/core-java-8) From 7e6df12a3fa70c15950163949cef1b019986d1c8 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:54:30 +0800 Subject: [PATCH 21/37] Update README.md --- docker/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docker/README.md b/docker/README.md index 0de3694215..0adf1c9b51 100644 --- a/docker/README.md +++ b/docker/README.md @@ -6,3 +6,4 @@ - [How To Configure Java Heap Size Inside a Docker Container](https://www.baeldung.com/ops/docker-jvm-heap-size) - [Dockerfile Strategies for Git](https://www.baeldung.com/ops/dockerfile-git-strategies) - [How to Get Docker-Compose to Always Use the Latest Image](https://www.baeldung.com/ops/docker-compose-latest-image) +- [How to Include Files Outside of Docker’s Build Context](https://www.baeldung.com/ops/docker-include-files-outside-build-context) From 9c5f0cdaf0c875f455a3489fc868e9e111d49980 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:56:08 +0800 Subject: [PATCH 22/37] Update README.md --- spring-boot-modules/spring-boot-libraries-comparison/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-libraries-comparison/README.md b/spring-boot-modules/spring-boot-libraries-comparison/README.md index 3efdac2a4c..d373f91b3b 100644 --- a/spring-boot-modules/spring-boot-libraries-comparison/README.md +++ b/spring-boot-modules/spring-boot-libraries-comparison/README.md @@ -4,4 +4,4 @@ This module contains articles about various Spring Boot libraries Comparison ### Relevant Articles: -- [GraphQL vs REST](https://www.baeldung.com/graphql-vs-rest/) \ No newline at end of file +- [GraphQL vs REST](https://www.baeldung.com/graphql-vs-rest) From e2abcfc461dcf97e65b11fce40ba8c4dac2404ae Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Wed, 23 Feb 2022 19:58:10 +0800 Subject: [PATCH 23/37] Update README.md --- java-collections-maps-3/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/java-collections-maps-3/README.md b/java-collections-maps-3/README.md index 75842c85a4..e2e0a56489 100644 --- a/java-collections-maps-3/README.md +++ b/java-collections-maps-3/README.md @@ -7,3 +7,4 @@ - [Update the Value Associated With a Key in a HashMap](https://www.baeldung.com/java-hashmap-update-value-by-key) - [Java Map – keySet() vs. entrySet() vs. values() Methods](https://www.baeldung.com/java-map-entries-methods) - [Java IdentityHashMap Class and Its Use Cases](https://www.baeldung.com/java-identityhashmap) +- [How to Invert a Map in Java](https://www.baeldung.com/java-invert-map) From bb7b461a495e8dae1ca592510d4d1670d1a4a1bd Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Wed, 23 Feb 2022 19:54:43 +0530 Subject: [PATCH 24/37] JAVA-10081: Removed unused files and updated pom.xml --- .../hibernate-many-to-many/README.md | 7 -- .../_2.fdt | Bin 160 -> 0 bytes .../_2.fdx | Bin 84 -> 0 bytes .../_2.fnm | Bin 532 -> 0 bytes .../_2.nvd | Bin 65 -> 0 bytes .../_2.nvm | Bin 88 -> 0 bytes .../_2.si | Bin 514 -> 0 bytes .../_2.tvd | Bin 392 -> 0 bytes .../_2.tvx | Bin 79 -> 0 bytes .../_2_Lucene50_0.doc | Bin 190 -> 0 bytes .../_2_Lucene50_0.pos | Bin 162 -> 0 bytes .../_2_Lucene50_0.tim | Bin 914 -> 0 bytes .../_2_Lucene50_0.tip | Bin 195 -> 0 bytes .../_3.cfe | Bin 341 -> 0 bytes .../_3.cfs | Bin 2119 -> 0 bytes .../_3.si | Bin 371 -> 0 bytes .../segments_5 | Bin 198 -> 0 bytes .../write.lock | 0 .../manytomany/dao/IEmployeeDao.java | 8 -- .../manytomany/dao/IProjectDao.java | 8 -- .../baeldung/spring/PersistenceConfig.java | 75 ------------------ .../src/main/resources/import.sql | 31 -------- .../src/main/resources/manytomany.cfg.xml | 15 ---- .../main/resources/persistence-h2.properties | 21 ----- .../src/test/resources/.gitignore | 13 --- .../hibernate/criteria/model/Item.hbm.xml | 22 ----- .../src/test/resources/import.sql | 21 ----- .../.gitignore | 0 .../hibernate-mapping-2/README.md | 7 ++ .../pom.xml | 66 ++------------- .../manytomany}/PersistenceConfig.java | 8 +- .../baeldung/manytomany/dao/IEmployeeDao.java | 8 ++ .../baeldung/manytomany/dao/IProjectDao.java | 8 ++ .../manytomany}/dao/common/AbstractDao.java | 2 +- .../dao/common/AbstractHibernateDao.java | 2 +- .../manytomany}/dao/common/IOperations.java | 2 +- .../manytomany/dao/impl/EmployeeDao.java | 9 ++- .../manytomany/dao/impl/ProjectDao.java | 9 ++- .../baeldung}/manytomany/model/Employee.java | 2 +- .../baeldung}/manytomany/model/Project.java | 3 +- .../manytomany/util/HibernateUtil.java | 7 +- .../src/main/resources/logback.xml | 0 .../main/resources/persistence-h2.properties | 11 +++ .../java/com/baeldung/SpringContextTest.java | 3 +- ...notationJavaConfigMainIntegrationTest.java | 7 +- ...nyToManyAnnotationMainIntegrationTest.java | 10 ++- .../src/test/resources/manytomany.cfg.xml | 2 +- 47 files changed, 79 insertions(+), 308 deletions(-) delete mode 100644 persistence-modules/hibernate-many-to-many/README.md delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdt delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdx delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fnm delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvd delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvm delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.si delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvd delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvx delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.doc delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.pos delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tim delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tip delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfe delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfs delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.si delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/segments_5 delete mode 100644 persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/write.lock delete mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java delete mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java delete mode 100644 persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java delete mode 100644 persistence-modules/hibernate-many-to-many/src/main/resources/import.sql delete mode 100644 persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml delete mode 100644 persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties delete mode 100644 persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore delete mode 100644 persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml delete mode 100644 persistence-modules/hibernate-many-to-many/src/test/resources/import.sql rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/.gitignore (100%) create mode 100644 persistence-modules/hibernate-mapping-2/README.md rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/pom.xml (54%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring => hibernate-mapping-2/src/main/java/com/baeldung/manytomany}/PersistenceConfig.java (95%) create mode 100644 persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IEmployeeDao.java create mode 100644 persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IProjectDao.java rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/persistence => hibernate-mapping-2/src/main/java/com/baeldung/manytomany}/dao/common/AbstractDao.java (87%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/persistence => hibernate-mapping-2/src/main/java/com/baeldung/manytomany}/dao/common/AbstractHibernateDao.java (96%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/persistence => hibernate-mapping-2/src/main/java/com/baeldung/manytomany}/dao/common/IOperations.java (87%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/persistence => hibernate-mapping-2/src/main/java/com/baeldung}/manytomany/dao/impl/EmployeeDao.java (50%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/persistence => hibernate-mapping-2/src/main/java/com/baeldung}/manytomany/dao/impl/ProjectDao.java (50%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/hibernate => hibernate-mapping-2/src/main/java/com/baeldung}/manytomany/model/Employee.java (97%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/hibernate => hibernate-mapping-2/src/main/java/com/baeldung}/manytomany/model/Project.java (96%) rename persistence-modules/{hibernate-many-to-many/src/main/java/com/baeldung/hibernate => hibernate-mapping-2/src/main/java/com/baeldung}/manytomany/util/HibernateUtil.java (90%) rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/src/main/resources/logback.xml (100%) create mode 100644 persistence-modules/hibernate-mapping-2/src/main/resources/persistence-h2.properties rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/src/test/java/com/baeldung/SpringContextTest.java (91%) rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java (89%) rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java (92%) rename persistence-modules/{hibernate-many-to-many => hibernate-mapping-2}/src/test/resources/manytomany.cfg.xml (97%) diff --git a/persistence-modules/hibernate-many-to-many/README.md b/persistence-modules/hibernate-many-to-many/README.md deleted file mode 100644 index 19b865d4e1..0000000000 --- a/persistence-modules/hibernate-many-to-many/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## Hibernate 5 with Spring - -This module contains articles about Hibernate 5 with Spring. - -### Relevant articles - -- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many) \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdt b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdt deleted file mode 100644 index d71a08150212e0d18327d1491c3687976b1c0d38..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160 zcmcD&o+B>fQ<|KbmuhMdT#{dun&Ot3nv+uOmRMZkl30?+z`($mbzSAP`{iOo;d#DB z{fW~w7#bQFnHYE&m>Bf`D==s!=jZArB?2{-=B4XpWG1B+d6=BK3Q y=miwzr<5j_a4;I`Gf2xDfe2#|VFDsd^%=wiK$2#Rj0ZF(zW`bZ2Af23UjYC|kS^)~ diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdx b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fdx deleted file mode 100644 index 72359255c620cb440b643215ce0e4a85f205da77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 84 zcmcD&o+B>nQ<|KbmuhMdT#{dun&Ot3nv+uOmRMZknU|7U!N9=4m~~y{wfp5_L*aS8 hM*WG?G#Ho|fuamnK+Mp`ctB(F3!o}62&>U62LPU67+U}U diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fnm b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.fnm deleted file mode 100644 index b0143e1ac5e967810feee7771557bca5f71a4922..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 532 zcmcD&o+B>gQ<|KbmuhO@mYJH9;+dD0U(CS3z?gMi<+c0eVngA1zDE6t(=-@Z1>!R@ zlTwTF5=&C!lXDV_iy4@h8U8~7lWah05!i%){Nj?#y!2wX{G!~%61_Aq#R0Pfm$Ks0 zw6x3$MgykI6h;~t%Uw{EpHiA!;+L44%EU;0XLF~d7AF^F7L;V>=P}d3e74-w-29?S W7A8ijhxh@F$uEEr4hGV{B@6-GbkQ<|KbmuhP4mtT}y?2=fL$N&Uc*HvD-UoJKjp66@SpEyl}p`^5=qP+Zo P#^e_uX%J`#I_?Dk?LHOl diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvm b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.nvm deleted file mode 100644 index 19f60a39bcf9a121ca3bc1590ba6df45481bf44a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmcD&o+B>mQ<|KbmuhP4mtT}y?3-GWn37nM$N&Uc*HvD-UoJKjp66@SpEyl}fe9oE b0_Dt%5C((xe<0vLpfULcRDfZE({vpGz#bVo diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.si b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.si deleted file mode 100644 index 3d537083b422c76bfcef3c42fb25ad1eeb45bf4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmZWm-AcnS7+u9~xJ_kF@X}p)F_49(cGKM`sGA6z3LSV^LX*u()08Bwdy8ENUivJ) zgBN=R!3XeC(?5_cA^AAx`_AEzTrB;A<|uMWK)QxaW|Rc-Hkh(fsiZwGkG^j{1#G^L z%>{aEE3TyfJLTW{1{2jsFTm_Yw4hOYMlk|0QJC-DbL9G@b;WqdIFcR<>Uoeh~}|{1}jVe#N8(yQQWik zQ)?at(xar1ultt;i?~bl)UlS{L*z=vHCR=Cd9F=p0Ank05)#pH8}_U&JhRM`Qv+J{ zvSWfE#=0uPOMr}VQl?mDXx?y4r+8<_03j2ZhNfddR`BW=X6}kmC0JuZ?Xa-6Rc?ZZ k9`UglGER{Mlwnf69M}`bei#g{KiaQf$xkNh=X|#K1BMr#*8l(j diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvd b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2.tvd deleted file mode 100644 index b46c8d109cc2a907cd84fbbf6e87ad51cff7929d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 392 zcmW-dze`(D6vxlgC=Ftbkz&VE+Y%kb7xR(~f;J6xskBJ7;&$@h$$eMukH@|D5#1c@ zY@rZ05n3p562ZMwXQ6|CK$p@kP90qA)dSxH-w)?}hwt*0n4W%<$D}A)cuz)dQtY&` zZFC3#!OqpQzpFoOICZ>MJ;Z(mhW4MpC=5S6J3Rp?TztHUHa12|C4al(ec7uGFuV`N zwtdxl{be0L)M|6li$@3D#^4}aXWR8M+x#~3{HS=hKLx>c1%=gFCMeF0A>~LVU5v?S znR1r$L}+IvNp1G5MB}nlE2>6yT!fHycnKzVAHu{-D2z5B46Dsq7;C_JiiUB;x<2JC z{0js+vW_b<#BzbA1vkY!%e3)~^|&EH*1D7{AFu^KP$fq5gc(A&1lJEdWhiiWuVWi1 zZLV0H5@vs(@86~Fa6$8MJKp0e(LK9Ztw#&2BXY@6^4MsryRHdSk84eMcW;8=d*$dQ<|KbmuhMdl3J7-mYQ6WUsUXwmy%k+z`($mbzSAP`{iOo;d#DB{fW~w c7?>D=q6{WL%lQ<|KbmuhMdkY8MqnU`K1UX)pqTI7lQ<|KbmuhMdkY8MqnU`K1UX)pqS_I@V072GumDlcM>D0O1m)+6Xon>a0yL6Ju zPB5UIt(}E`f&YVGdMiQjZ}81-E~Sw9*!Mke-tWy$&h(9yN7^KB4lKX{*up(gi6?}x z*JpSCJpJLeS3f@=zLy_2d(Y|wN*E1Z4#)(+SyRNB1?i()WjRx+P*rY95IW@bkya%{+IS}l zD2zQ8g_$Z19Sd2lrR}*wTHi$UTwPVhhN?R=Ri|!pY zU}+~qDjJ_4PtwPPQ1s#)4eVlYj=Dxd(kyhtg(^aYXnj$PsFP(_UTSb9ySE;6O@d^d4#s+OQVVr!snE98D%uaoJ%K^ar7cF zA>#Ha<=ewOJ{*nN&XA9H2Yfsl(7m=nB9mIqk6AW7hdb7Fq2!f9CDu4|ud%Q3 z)|O}=w*Qa=sf%)2=veIo2S29o{)`q GU*tdZxy^3? diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tip b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_2_Lucene50_0.tip deleted file mode 100644 index 9803f1b398829ace933101fbc393ea47807267f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmcD&o+B>ol#`#F9a5B<8j@O+TkM&al3KyQz`&GsUFEg=&diPJQ=d`gp3 z^HNO>;tlM9+L+yfLx9Ry85o(FA2Bg7FfyQtvaZ7>%C`xdDE~WbqC%6vqUOHImHmuB VyFg&+0gcHoAWQ~^%eLE20RSolE8PG9 diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfe b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfe deleted file mode 100644 index 8fb074f30e754beeb8a030f31d07de2babe63b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmcD&o+B>qQ<|KbmuhO@oS$2eUz(TVnpaYknOe*M1X zMK3L-0we_ldJu{sm_;wIECtGGgwodh@i2qq4fG1~!R7(w_CVz$QRGwdlOf`aqEPuf z6#0_OT&R3Agl1A?(JO&j%De=sX$r_CP?aneP{9bGoAY3T6QJ5fKprW9aM)nl8$o75 heaEf})$WhxkOGJ}J5)2n;R70zUqIC|B=Stl1OR>yJ!${| diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfs b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.cfs deleted file mode 100644 index e26078b9e7cfbaca6e06ec3cf3156f48d0b92d08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2119 zcmcIl%TE(Q7@wKl?Nj9~Z^TD}V5}4bjIXK?ltc&#L?Vgcc6Uk_yF1P9Ho&d%ZHikvL|pRoxVQ^K z83{+s+sl-S$2ZRGxRR1B3lRZvSZ<_#keUvHD~?{6F0vg-IFEoEWVdZrCXvvlaVybO zd<3xJbWT_UvQ7y;{ItU=wG>lJ+Zr>3Bf$6RRA=Ul2s+O7`|vvMJrf^(q(=FfsB`Js zdh6tGi|wZ)o5chXa%rs*9YE3nP;9|rzY@LhlP6H+Cg2g^emCA_KJlIwzKdsR=fI@nK?+`vA14I OvhREg-uJeq`PhGT-i diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.si b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/_3.si deleted file mode 100644 index f2d6b6a030c291e9fdddf28b924e5caad9a02f57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmcD&o+B>oQ<|KbmuhMdoSL4SnpfhPmzK}Kz`&SwUFEg=&diPN-zVhpTE zn30i-DZiL2JTosPzr0w%(11HDu`E%qEEUKv67nxfOwLJFaLz9($S+DP$;{8=fl3z@ z13B!5hI$5ihKBqQ!Cas=u(%*pT-#FDCnQ+c(9(o22kbnU0#;K!AY{)k)=Ml(&R|W< zO))bO0UJ_OnpcvUn+j8iX%bs;erZv1Dr;I!X>kS@&;+QREQSVp2Am+h#U+Wk1-yo4 zCZ>iKCPv2Q#-`@XtntQr#hGkCGC8dnLZvdw!^5m3zbG}uEi*MIrPwXMC^xZ0FE>9W cmCMOBI3zwez}3~|fX3t(pr8YRcS#F10cJaIr~m)} diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/segments_5 b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/segments_5 deleted file mode 100644 index 66a4c385a5adac5ff16e505da6de875fcd295c3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmcD&o+HjtoSL4SnpaZHz`($kbzSAP`{iOo;d#DB{fX1G8BJMPS%DHDAOOTHK+FUb zVv09nL{qE5;ZvHNnwM&7@*fI7nqX`g4H9EuiZ@2rtwp?Uh65UtUx3X45?V&3b^sz| BR7L;* diff --git a/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/write.lock b/persistence-modules/hibernate-many-to-many/com.baeldung.hibernatesearch.model.Product/write.lock deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java deleted file mode 100644 index 5ba018dc52..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IEmployeeDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.manytomany.dao; - -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IEmployeeDao extends IOperations{ - -} diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java deleted file mode 100644 index 48fbb8bf6b..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/IProjectDao.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.persistence.manytomany.dao; - -import com.baeldung.hibernate.manytomany.model.Project; -import com.baeldung.persistence.dao.common.IOperations; - -public interface IProjectDao extends IOperations{ - -} diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java b/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java deleted file mode 100644 index e1ea3e2024..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/spring/PersistenceConfig.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.baeldung.spring; - -import com.google.common.base.Preconditions; -import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.PropertySource; -import org.springframework.core.env.Environment; -import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor; -import org.springframework.orm.hibernate5.HibernateTransactionManager; -import org.springframework.orm.hibernate5.LocalSessionFactoryBean; -import org.springframework.transaction.PlatformTransactionManager; -import org.springframework.transaction.annotation.EnableTransactionManagement; - -import javax.sql.DataSource; -import java.util.Properties; - -@Configuration -@EnableTransactionManagement -@PropertySource({ "classpath:persistence-h2.properties" }) -@ComponentScan({ "com.baeldung.persistence" }) -public class PersistenceConfig { - - @Autowired - private Environment env; - - @Bean - public LocalSessionFactoryBean sessionFactory() { - final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); - sessionFactory.setDataSource(dataSource()); - sessionFactory.setPackagesToScan(new String[] { "com.baeldung.persistence.model" }); - sessionFactory.setHibernateProperties(hibernateProperties()); - - return sessionFactory; - } - - @Bean - public DataSource dataSource() { - final BasicDataSource dataSource = new BasicDataSource(); - dataSource.setDriverClassName(Preconditions.checkNotNull(env.getProperty("jdbc.driverClassName"))); - dataSource.setUrl(Preconditions.checkNotNull(env.getProperty("jdbc.url"))); - dataSource.setUsername(Preconditions.checkNotNull(env.getProperty("jdbc.user"))); - dataSource.setPassword(Preconditions.checkNotNull(env.getProperty("jdbc.pass"))); - - return dataSource; - } - - @Bean - public PlatformTransactionManager hibernateTransactionManager() { - final HibernateTransactionManager transactionManager = new HibernateTransactionManager(); - transactionManager.setSessionFactory(sessionFactory().getObject()); - return transactionManager; - } - - @Bean - public PersistenceExceptionTranslationPostProcessor exceptionTranslation() { - return new PersistenceExceptionTranslationPostProcessor(); - } - - private final Properties hibernateProperties() { - final Properties hibernateProperties = new Properties(); - hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto")); - hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect")); - - hibernateProperties.setProperty("hibernate.show_sql", "false"); - - // Envers properties - hibernateProperties.setProperty("org.hibernate.envers.audit_table_suffix", env.getProperty("envers.audit_table_suffix")); - - return hibernateProperties; - } - -} \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/import.sql b/persistence-modules/hibernate-many-to-many/src/main/resources/import.sql deleted file mode 100644 index ae008f29bc..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/main/resources/import.sql +++ /dev/null @@ -1,31 +0,0 @@ -insert into item (item_id, item_name, item_desc, item_price) -values(1,'item One', 'test 1', 35.12); - -insert into item (item_id, item_name, item_desc, item_price) -values(2,'Pogo stick', 'Pogo stick', 466.12); -insert into item (item_id, item_name, item_desc, item_price) -values(3,'Raft', 'Raft', 345.12); - -insert into item (item_id, item_name, item_desc, item_price) -values(4,'Skate Board', 'Skating', 135.71); - -insert into item (item_id, item_name, item_desc, item_price) -values(5,'Umbrella', 'Umbrella for Rain', 619.25); - -insert into item (item_id, item_name, item_desc, item_price) -values(6,'Glue', 'Glue for home', 432.73); - -insert into item (item_id, item_name, item_desc, item_price) -values(7,'Paint', 'Paint for Room', 1311.40); - -insert into item (item_id, item_name, item_desc, item_price) -values(8,'Red paint', 'Red paint for room', 1135.71); - -insert into item (item_id, item_name, item_desc, item_price) -values(9,'Household Chairs', 'Chairs for house', 25.71); - -insert into item (item_id, item_name, item_desc, item_price) -values(10,'Office Chairs', 'Chairs for office', 395.98); - -insert into item (item_id, item_name, item_desc, item_price) -values(11,'Outdoor Chairs', 'Chairs for outdoor activities', 1234.36); diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml b/persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml deleted file mode 100644 index d7c8f24fb0..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/main/resources/manytomany.cfg.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - com.mysql.jdbc.Driver - tutorialmy5ql - jdbc:mysql://localhost:3306/spring_hibernate_many_to_many - tutorialuser - org.hibernate.dialect.MySQLDialect - thread - false - - diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties b/persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties deleted file mode 100644 index e3544d354a..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/main/resources/persistence-h2.properties +++ /dev/null @@ -1,21 +0,0 @@ -# jdbc.X -jdbc.driverClassName=org.h2.Driver -jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 -jdbc.eventGeneratedId=sa -jdbc.user=sa -jdbc.pass= - -# hibernate.X -hibernate.dialect=org.hibernate.dialect.H2Dialect -hibernate.show_sql=false -hibernate.hbm2ddl.auto=create-drop -hibernate.cache.use_second_level_cache=true -hibernate.cache.use_query_cache=true -hibernate.cache.region.factory_class=org.hibernate.cache.ehcache.EhCacheRegionFactory - -# hibernate.search.X -hibernate.search.default.directory_provider = filesystem -hibernate.search.default.indexBase = /data/index/default - -# envers.X -envers.audit_table_suffix=_audit_log diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore b/persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/test/resources/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -*.class - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* - -# Packaged files # -*.jar -*.war -*.ear \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml b/persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml deleted file mode 100644 index 9e0109aae2..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/test/resources/com/baeldung/hibernate/criteria/model/Item.hbm.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/import.sql b/persistence-modules/hibernate-many-to-many/src/test/resources/import.sql deleted file mode 100644 index 087d62d331..0000000000 --- a/persistence-modules/hibernate-many-to-many/src/test/resources/import.sql +++ /dev/null @@ -1,21 +0,0 @@ -insert into item (item_id, item_name, item_desc, item_price) values(1,'item One', 'test 1', 35.12); - -insert into item (item_id, item_name, item_desc, item_price) values(2,'Pogo stick', 'Pogo stick', 466.12); - -insert into item (item_id, item_name, item_desc, item_price) values(3,'Raft', 'Raft', 345.12); - -insert into item (item_id, item_name, item_desc, item_price) values(4,'Skate Board', 'Skating', 135.71); - -insert into item (item_id, item_name, item_desc, item_price) values(5,'Umbrella', 'Umbrella for Rain', 619.25); - -insert into item (item_id, item_name, item_desc, item_price) values(6,'Glue', 'Glue for home', 432.73); - -insert into item (item_id, item_name, item_desc, item_price) values(7,'Paint', 'Paint for Room', 1311.40); - -insert into item (item_id, item_name, item_desc, item_price) values(8,'Red paint', 'Red paint for room', 1135.71); - -insert into item (item_id, item_name, item_desc, item_price) values(9,'Household Chairs', 'Chairs for house', 25.71); - -insert into item (item_id, item_name, item_desc, item_price) values(10,'Office Chairs', 'Chairs for office', 395.98); - -insert into item (item_id, item_name, item_desc, item_price) values(11,'Outdoor Chairs', 'Chairs for outdoor activities', 1234.36); diff --git a/persistence-modules/hibernate-many-to-many/.gitignore b/persistence-modules/hibernate-mapping-2/.gitignore similarity index 100% rename from persistence-modules/hibernate-many-to-many/.gitignore rename to persistence-modules/hibernate-mapping-2/.gitignore diff --git a/persistence-modules/hibernate-mapping-2/README.md b/persistence-modules/hibernate-mapping-2/README.md new file mode 100644 index 0000000000..7a811e17cf --- /dev/null +++ b/persistence-modules/hibernate-mapping-2/README.md @@ -0,0 +1,7 @@ +## Hibernate Mapping + +This module contains articles about Hibernate Mappings. + +### Relevant articles + +- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many) \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/pom.xml b/persistence-modules/hibernate-mapping-2/pom.xml similarity index 54% rename from persistence-modules/hibernate-many-to-many/pom.xml rename to persistence-modules/hibernate-mapping-2/pom.xml index 6f1abb6a7a..10c07c95eb 100644 --- a/persistence-modules/hibernate-many-to-many/pom.xml +++ b/persistence-modules/hibernate-mapping-2/pom.xml @@ -3,9 +3,9 @@ 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 - hibernate-many-to-many + hibernate-mapping-2y 0.1-SNAPSHOT - hibernate-many-to-many + hibernate-mapping-2 com.baeldung @@ -19,24 +19,8 @@ org.springframework spring-context ${org.springframework.version} - - - commons-logging - commons-logging - - - - - org.springframework - spring-aspects - ${org.springframework.version} - - org.springframework - spring-orm - ${org.springframework.version} - org.springframework.data spring-data-jpa @@ -47,16 +31,6 @@ hibernate-core ${hibernate.version} - - javax.transaction - jta - ${jta.version} - - - org.hibernate - hibernate-search-orm - ${hibernatesearch.version} - org.apache.tomcat tomcat-dbcp @@ -70,53 +44,31 @@ ${guava.version} - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - test - org.springframework spring-test ${org.springframework.version} test - - org.springframework.security - spring-security-test - ${org.springframework.security.version} - test - - - org.hsqldb - hsqldb - ${hsqldb.version} - com.h2database h2 ${h2.version} - - - jakarta.xml.bind - jakarta.xml.bind-api - 2.3.2 - + com.sun.xml.bind jaxb-core - 2.3.0.1 + ${com.sun.xml.version} javax.xml.bind jaxb-api - 2.3.1 + ${javax.xml.bind.version} com.sun.xml.bind jaxb-impl - 2.3.1 + ${com.sun.xml.version} @@ -124,13 +76,11 @@ 5.0.2.RELEASE 1.10.6.RELEASE - 4.2.1.RELEASE 5.2.10.Final - 5.8.2.Final 9.0.0.M26 - 1.1 - 2.3.4 + 2.3.0.1 + 2.3.1 \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/PersistenceConfig.java similarity index 95% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/PersistenceConfig.java index f7179b07e5..0d7b8bdbcf 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/manytomany/spring/PersistenceConfig.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/PersistenceConfig.java @@ -1,7 +1,9 @@ -package com.baeldung.manytomany.spring; +package com.baeldung.manytomany; import java.util.Properties; + import javax.sql.DataSource; + import org.apache.tomcat.dbcp.dbcp2.BasicDataSource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; @@ -20,7 +22,7 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; @Configuration @EnableTransactionManagement @PropertySource({ "classpath:persistence-h2.properties" }) -@ComponentScan({ "com.baeldung.hibernate.manytomany" }) +@ComponentScan({ "com.baeldung.manytomany" }) public class PersistenceConfig { @Autowired @@ -30,7 +32,7 @@ public class PersistenceConfig { public LocalSessionFactoryBean sessionFactory() { final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean(); sessionFactory.setDataSource(restDataSource()); - sessionFactory.setPackagesToScan(new String[] { "com.baeldung.hibernate.manytomany" }); + sessionFactory.setPackagesToScan(new String[] { "com.baeldung.manytomany" }); sessionFactory.setHibernateProperties(hibernateProperties()); return sessionFactory; diff --git a/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IEmployeeDao.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IEmployeeDao.java new file mode 100644 index 0000000000..68bf5d5bad --- /dev/null +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IEmployeeDao.java @@ -0,0 +1,8 @@ +package com.baeldung.manytomany.dao; + +import com.baeldung.manytomany.dao.common.IOperations; +import com.baeldung.manytomany.model.Employee; + +public interface IEmployeeDao extends IOperations{ + +} diff --git a/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IProjectDao.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IProjectDao.java new file mode 100644 index 0000000000..d2645db44a --- /dev/null +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/IProjectDao.java @@ -0,0 +1,8 @@ +package com.baeldung.manytomany.dao; + +import com.baeldung.manytomany.dao.common.IOperations; +import com.baeldung.manytomany.model.Project; + +public interface IProjectDao extends IOperations{ + +} diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/AbstractDao.java similarity index 87% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/AbstractDao.java index 5a6c76a93a..b37b48e645 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractDao.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/AbstractDao.java @@ -1,4 +1,4 @@ -package com.baeldung.persistence.dao.common; +package com.baeldung.manytomany.dao.common; import java.io.Serializable; diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/AbstractHibernateDao.java similarity index 96% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/AbstractHibernateDao.java index f34866d883..9c8a8faa2e 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/AbstractHibernateDao.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/AbstractHibernateDao.java @@ -1,4 +1,4 @@ -package com.baeldung.persistence.dao.common; +package com.baeldung.manytomany.dao.common; import java.io.Serializable; import java.util.List; diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/IOperations.java similarity index 87% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/IOperations.java index 4ef99221ab..8a85b52fc9 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/dao/common/IOperations.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/common/IOperations.java @@ -1,4 +1,4 @@ -package com.baeldung.persistence.dao.common; +package com.baeldung.manytomany.dao.common; import java.io.Serializable; import java.util.List; diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/impl/EmployeeDao.java similarity index 50% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/impl/EmployeeDao.java index 25fee8c379..b24013c567 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/EmployeeDao.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/impl/EmployeeDao.java @@ -1,9 +1,10 @@ -package com.baeldung.persistence.manytomany.dao.impl; +package com.baeldung.manytomany.dao.impl; import org.springframework.stereotype.Repository; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.manytomany.dao.IEmployeeDao; + +import com.baeldung.manytomany.dao.IEmployeeDao; +import com.baeldung.manytomany.dao.common.AbstractHibernateDao; +import com.baeldung.manytomany.model.Employee; @Repository public class EmployeeDao extends AbstractHibernateDao implements IEmployeeDao { diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/impl/ProjectDao.java similarity index 50% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/impl/ProjectDao.java index 8fc29a5de3..a70212f519 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/persistence/manytomany/dao/impl/ProjectDao.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/dao/impl/ProjectDao.java @@ -1,9 +1,10 @@ -package com.baeldung.persistence.manytomany.dao.impl; +package com.baeldung.manytomany.dao.impl; import org.springframework.stereotype.Repository; -import com.baeldung.hibernate.manytomany.model.Project; -import com.baeldung.persistence.dao.common.AbstractHibernateDao; -import com.baeldung.persistence.manytomany.dao.IProjectDao; + +import com.baeldung.manytomany.dao.IProjectDao; +import com.baeldung.manytomany.dao.common.AbstractHibernateDao; +import com.baeldung.manytomany.model.Project; @Repository diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java similarity index 97% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java index bfe1b5ad29..39671c21bc 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Employee.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.hibernate.manytomany.model; +package com.baeldung.manytomany.model; import java.io.Serializable; import java.util.HashSet; diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java similarity index 96% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java index c291d7d7af..b5dc3cb856 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/model/Project.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/model/Project.java @@ -1,8 +1,9 @@ -package com.baeldung.hibernate.manytomany.model; +package com.baeldung.manytomany.model; import java.io.Serializable; import java.util.HashSet; import java.util.Set; + import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/util/HibernateUtil.java similarity index 90% rename from persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java rename to persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/util/HibernateUtil.java index ff035c0c37..d429564564 100644 --- a/persistence-modules/hibernate-many-to-many/src/main/java/com/baeldung/hibernate/manytomany/util/HibernateUtil.java +++ b/persistence-modules/hibernate-mapping-2/src/main/java/com/baeldung/manytomany/util/HibernateUtil.java @@ -1,14 +1,15 @@ -package com.baeldung.hibernate.manytomany.util; +package com.baeldung.manytomany.util; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.hibernate.manytomany.model.Project; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.baeldung.manytomany.model.Employee; +import com.baeldung.manytomany.model.Project; + public class HibernateUtil { private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class); diff --git a/persistence-modules/hibernate-many-to-many/src/main/resources/logback.xml b/persistence-modules/hibernate-mapping-2/src/main/resources/logback.xml similarity index 100% rename from persistence-modules/hibernate-many-to-many/src/main/resources/logback.xml rename to persistence-modules/hibernate-mapping-2/src/main/resources/logback.xml diff --git a/persistence-modules/hibernate-mapping-2/src/main/resources/persistence-h2.properties b/persistence-modules/hibernate-mapping-2/src/main/resources/persistence-h2.properties new file mode 100644 index 0000000000..9c8cf6e02b --- /dev/null +++ b/persistence-modules/hibernate-mapping-2/src/main/resources/persistence-h2.properties @@ -0,0 +1,11 @@ +# jdbc.X +jdbc.driverClassName=org.h2.Driver +jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1 +jdbc.eventGeneratedId=sa +jdbc.user=sa +jdbc.pass= + +# hibernate.X +hibernate.dialect=org.hibernate.dialect.H2Dialect +hibernate.show_sql=false +hibernate.hbm2ddl.auto=create-drop \ No newline at end of file diff --git a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java b/persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/SpringContextTest.java similarity index 91% rename from persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java rename to persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/SpringContextTest.java index 24c038aeb6..f1a6f675ce 100644 --- a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/SpringContextTest.java +++ b/persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/SpringContextTest.java @@ -6,8 +6,7 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; - -import com.baeldung.spring.PersistenceConfig; +import com.baeldung.manytomany.PersistenceConfig; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) diff --git a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java b/persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java similarity index 89% rename from persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java rename to persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java index 797d3384a0..19d1a5ff50 100644 --- a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java +++ b/persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationJavaConfigMainIntegrationTest.java @@ -2,6 +2,7 @@ package com.baeldung.hibernate.manytomany; import java.util.HashSet; import java.util.Set; + import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.After; @@ -12,9 +13,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.support.AnnotationConfigContextLoader; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.hibernate.manytomany.model.Project; -import com.baeldung.manytomany.spring.PersistenceConfig; +import com.baeldung.manytomany.PersistenceConfig; +import com.baeldung.manytomany.model.Employee; +import com.baeldung.manytomany.model.Project; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class) diff --git a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java b/persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java similarity index 92% rename from persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java rename to persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java index d09b2888df..bfa158d43f 100644 --- a/persistence-modules/hibernate-many-to-many/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java +++ b/persistence-modules/hibernate-mapping-2/src/test/java/com/baeldung/hibernate/manytomany/HibernateManyToManyAnnotationMainIntegrationTest.java @@ -1,10 +1,12 @@ package com.baeldung.hibernate.manytomany; -import static org.junit.Assert.assertNotNull; import static junit.framework.TestCase.assertEquals; +import static org.junit.Assert.assertNotNull; + import java.util.HashSet; import java.util.List; import java.util.Set; + import org.hibernate.Session; import org.hibernate.SessionFactory; import org.junit.After; @@ -13,9 +15,9 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import com.baeldung.hibernate.manytomany.util.HibernateUtil; -import com.baeldung.hibernate.manytomany.model.Employee; -import com.baeldung.hibernate.manytomany.model.Project; +import com.baeldung.manytomany.model.Employee; +import com.baeldung.manytomany.model.Project; +import com.baeldung.manytomany.util.HibernateUtil; /** * Configured in: manytomany.cfg.xml diff --git a/persistence-modules/hibernate-many-to-many/src/test/resources/manytomany.cfg.xml b/persistence-modules/hibernate-mapping-2/src/test/resources/manytomany.cfg.xml similarity index 97% rename from persistence-modules/hibernate-many-to-many/src/test/resources/manytomany.cfg.xml rename to persistence-modules/hibernate-mapping-2/src/test/resources/manytomany.cfg.xml index 2ca23d57d3..3ddff9a993 100644 --- a/persistence-modules/hibernate-many-to-many/src/test/resources/manytomany.cfg.xml +++ b/persistence-modules/hibernate-mapping-2/src/test/resources/manytomany.cfg.xml @@ -13,4 +13,4 @@ false create-drop - + \ No newline at end of file From 87c9fde8d71247c349dc0345947f2c5d857af3ed Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Wed, 23 Feb 2022 17:04:52 +0000 Subject: [PATCH 25/37] [JAVA-9909] Fix code for DFS article --- .../baeldung/algorithms/dfs/BinaryTree.java | 78 ++++++------------- .../algorithms/dfs/BinaryTreeUnitTest.java | 14 +--- 2 files changed, 28 insertions(+), 64 deletions(-) diff --git a/algorithms-searching/src/main/java/com/baeldung/algorithms/dfs/BinaryTree.java b/algorithms-searching/src/main/java/com/baeldung/algorithms/dfs/BinaryTree.java index a6019ea9f9..a3cb2b396e 100644 --- a/algorithms-searching/src/main/java/com/baeldung/algorithms/dfs/BinaryTree.java +++ b/algorithms-searching/src/main/java/com/baeldung/algorithms/dfs/BinaryTree.java @@ -1,7 +1,5 @@ package com.baeldung.algorithms.dfs; -import java.util.LinkedList; -import java.util.Queue; import java.util.Stack; public class BinaryTree { @@ -124,69 +122,43 @@ public class BinaryTree { } } - public void traverseLevelOrder() { - if (root == null) { - return; - } - Queue nodes = new LinkedList<>(); - nodes.add(root); - - while (!nodes.isEmpty()) { - - Node node = nodes.remove(); - - System.out.print(" " + node.value); - - if (node.left != null) { - nodes.add(node.left); - } - - if (node.left != null) { - nodes.add(node.right); - } - } - } - - public void traverseInOrderWithoutRecursion() { - Stack stack = new Stack(); + Stack stack = new Stack<>(); Node current = root; - stack.push(root); - while(! stack.isEmpty()) { - while(current.left != null) { - current = current.left; - stack.push(current); - } - current = stack.pop(); - visit(current.value); - if(current.right != null) { - current = current.right; + + while (current != null || !stack.isEmpty()) { + while (current != null) { stack.push(current); + current = current.left; } + + Node top = stack.pop(); + visit(top.value); + current = top.right; } } - + public void traversePreOrderWithoutRecursion() { - Stack stack = new Stack(); - Node current = root; + Stack stack = new Stack<>(); + Node current; stack.push(root); while(! stack.isEmpty()) { current = stack.pop(); visit(current.value); - + if(current.right != null) stack.push(current.right); - + if(current.left != null) stack.push(current.left); - } + } } - + public void traversePostOrderWithoutRecursion() { - Stack stack = new Stack(); + Stack stack = new Stack<>(); Node prev = root; - Node current = root; + Node current; stack.push(root); while (!stack.isEmpty()) { @@ -206,14 +178,14 @@ public class BinaryTree { stack.push(current.left); } } - } - } - - private void visit(int value) { - System.out.print(" " + value); + } } - - class Node { + + private void visit(int value) { + System.out.print(" " + value); + } + + static class Node { int value; Node left; Node right; diff --git a/algorithms-searching/src/test/java/com/baeldung/algorithms/dfs/BinaryTreeUnitTest.java b/algorithms-searching/src/test/java/com/baeldung/algorithms/dfs/BinaryTreeUnitTest.java index 076da14f81..f98b4377ed 100644 --- a/algorithms-searching/src/test/java/com/baeldung/algorithms/dfs/BinaryTreeUnitTest.java +++ b/algorithms-searching/src/test/java/com/baeldung/algorithms/dfs/BinaryTreeUnitTest.java @@ -1,11 +1,11 @@ package com.baeldung.algorithms.dfs; +import org.junit.Test; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import org.junit.Test; - public class BinaryTreeUnitTest { @Test @@ -13,7 +13,7 @@ public class BinaryTreeUnitTest { BinaryTree bt = createBinaryTree(); - assertTrue(!bt.isEmpty()); + assertFalse(bt.isEmpty()); } @Test @@ -111,14 +111,6 @@ public class BinaryTreeUnitTest { bt.traversePostOrderWithoutRecursion(); } - @Test - public void givenABinaryTree_WhenTraversingLevelOrder_ThenPrintValues() { - - BinaryTree bt = createBinaryTree(); - - bt.traverseLevelOrder(); - } - private BinaryTree createBinaryTree() { BinaryTree bt = new BinaryTree(); From 6ca42b7a4ecbbffc2b8a890f70995cbbe8dc4a6f Mon Sep 17 00:00:00 2001 From: lsieun <331505785@qq.com> Date: Fri, 25 Feb 2022 05:13:13 +0800 Subject: [PATCH 26/37] BAEL-4151: Guide to ByteBuffer (#11859) * Convert Byte Array to its Numeric Representation * Remove Redundant Getter Method * BAEL-4286 How to get the value of a bit at a certain position from a byte * BAEL-4286(update): remove redundant test methods * BAEL-4151: Guide to ByteBuffer --- .../bytebuffer/ByteBufferUnitTest.java | 339 ++++++++++++++++++ 1 file changed, 339 insertions(+) create mode 100644 core-java-modules/core-java-nio-2/src/test/java/com/baeldung/bytebuffer/ByteBufferUnitTest.java diff --git a/core-java-modules/core-java-nio-2/src/test/java/com/baeldung/bytebuffer/ByteBufferUnitTest.java b/core-java-modules/core-java-nio-2/src/test/java/com/baeldung/bytebuffer/ByteBufferUnitTest.java new file mode 100644 index 0000000000..5d108ba14a --- /dev/null +++ b/core-java-modules/core-java-nio-2/src/test/java/com/baeldung/bytebuffer/ByteBufferUnitTest.java @@ -0,0 +1,339 @@ +package com.baeldung.bytebuffer; + +import org.junit.Test; + +import java.lang.reflect.Field; +import java.nio.*; +import java.nio.charset.StandardCharsets; + +import static org.junit.Assert.*; + +public class ByteBufferUnitTest { + @Test + public void givenBufferCreation_whenUsingAllocate_thenSuccess() { + ByteBuffer buffer = ByteBuffer.allocate(10); + assertNotNull(buffer); + } + + @Test + public void givenBufferCreation_whenUsingAllocateDirect_thenSuccess() { + ByteBuffer buffer = ByteBuffer.allocateDirect(10); + assertNotNull(buffer); + } + + @Test + public void givenBufferCreation_whenUsingWrap_thenSuccess() { + byte[] bytes = new byte[10]; + ByteBuffer buffer = ByteBuffer.wrap(bytes); + assertNotNull(buffer); + } + + @Test + public void givenBufferIndex_whenUsingAllocate_thenInitialIndices() { + // create instance using allocate + ByteBuffer buffer = ByteBuffer.allocate(10); + + // get index + int position = buffer.position(); + int limit = buffer.limit(); + int capacity = buffer.capacity(); + + // assert + assertEquals(0, position); + assertEquals(10, limit); + assertEquals(10, capacity); + } + + @Test + public void givenBufferIndex_whenChangingPositionAndLimit_thenSuccess() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + + // change index + buffer.position(2); + buffer.limit(5); + + // assert + assertIndex(buffer, -1, 2, 5, 10); + } + + @Test + public void givenBufferIndex_whenUsingWrap_thenInitialIndices() { + // create instance + byte[] bytes = new byte[10]; + ByteBuffer buffer = ByteBuffer.wrap(bytes); + + // assert + assertIndex(buffer, -1, 0, 10, 10); + } + + @Test + public void givenBufferIndex_whenUsingWrapWithOffsetAndLength_thenInitialIndices() { + // create instance + byte[] bytes = new byte[10]; + ByteBuffer buffer = ByteBuffer.wrap(bytes, 2, 6); + + // assert + assertIndex(buffer, -1, 2, 8, 10); + } + + @Test + public void givenBufferIndex_whenUsingMarkAndReset_thenOK() { + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + buffer.position(2); + assertIndex(buffer, -1, 2, 10, 10); + + buffer.mark(); + assertIndex(buffer, 2, 2, 10, 10); + + buffer.position(5); + assertIndex(buffer, 2, 5, 10, 10); + + buffer.reset(); + assertIndex(buffer, 2, 2, 10, 10); + } + + @Test + public void givenBufferIndex_whenUsingClear_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // clear + buffer.clear(); + assertIndex(buffer, -1, 0, 10, 10); + } + + @Test + public void givenBufferIndex_whenUsingFlip_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // flip + buffer.flip(); + assertIndex(buffer, -1, 0, 5, 10); + } + + @Test + public void givenBufferIndex_whenUsingRewind_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // rewind + buffer.rewind(); + assertIndex(buffer, -1, 0, 8, 10); + } + + @Test + public void givenBufferIndex_whenUsingCompact_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // compact + buffer.compact(); + assertIndex(buffer, -1, 3, 10, 10); + } + + @Test + public void givenBufferIndex_whenUsingRemain_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + + // change index + buffer.position(2); + buffer.limit(8); + + // remain + boolean flag = buffer.hasRemaining(); + int remaining = buffer.remaining(); + + // assert + assertTrue(flag); + assertEquals(6, remaining); + } + + @Test(expected = BufferUnderflowException.class) + public void givenNotEnoughRemaining_WhenCallingGetInt_thenBufferUnderflowException() { + ByteBuffer buffer = ByteBuffer.allocate(2); + buffer.getInt(); + } + + @Test(expected = BufferOverflowException.class) + public void givenNotEnoughRemaining_WhenCallingPutInt_thenBufferOverflowException() { + ByteBuffer buffer = ByteBuffer.allocate(2); + buffer.putInt(10); + } + + @Test + public void givenBufferView_whenUsingDuplicate_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // view + ByteBuffer view = buffer.duplicate(); + assertIndex(view, 2, 5, 8, 10); + } + + @Test + public void givenBufferView_whenUsingSlice_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // view + ByteBuffer view = buffer.slice(); + assertIndex(view, -1, 0, 3, 3); + } + + @Test + public void givenBufferView_whenUsingAsReaOnlyBuffer_thenOK() { + // create instance + ByteBuffer buffer = ByteBuffer.allocate(10); + assertIndex(buffer, -1, 0, 10, 10); + + // change index + buffer.position(2); + buffer.mark(); + buffer.position(5); + buffer.limit(8); + assertIndex(buffer, 2, 5, 8, 10); + + // view + ByteBuffer view = buffer.asReadOnlyBuffer(); + assertIndex(view, 2, 5, 8, 10); + } + + @Test + public void givenBufferView_whenUsingAsIntBuffer_thenOK() { + // create instance + byte[] bytes = new byte[]{ + (byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE, // CAFEBABE ---> cafebabe + (byte) 0xF0, (byte) 0x07, (byte) 0xBA, (byte) 0x11, // F007BA11 ---> football + (byte) 0x0F, (byte) 0xF1, (byte) 0xCE // 0FF1CE ---> office + }; + ByteBuffer buffer = ByteBuffer.wrap(bytes); + assertIndex(buffer, -1, 0, 11, 11); + + // view + IntBuffer intBuffer = buffer.asIntBuffer(); + int capacity = intBuffer.capacity(); + assertEquals(2, capacity); + assertIndex(intBuffer, -1, 0, 2, 2); + } + + @Test + public void givenByteOrder_whenUsingBigEndian_thenOK() { + // create instance + byte[] bytes = new byte[]{(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE}; + ByteBuffer buffer = ByteBuffer.wrap(bytes); + + // change byte order + buffer.order(ByteOrder.BIG_ENDIAN); + int val = buffer.getInt(); + + // assert + assertEquals(0xCAFEBABE, val); + } + + @Test + public void givenByteOrder_whenUsingLittleEndian_thenOK() { + // create instance + byte[] bytes = new byte[]{(byte) 0xCA, (byte) 0xFE, (byte) 0xBA, (byte) 0xBE}; + ByteBuffer buffer = ByteBuffer.wrap(bytes); + + // change byte order + buffer.order(ByteOrder.LITTLE_ENDIAN); + int val = buffer.getInt(); + + // assert + assertEquals(0xBEBAFECA, val); + } + + @Test + public void givenComparing_whenUsingEqualsAndCompareTo_thenOK() { + // create instance + byte[] bytes1 = "World".getBytes(StandardCharsets.UTF_8); + byte[] bytes2 = "HelloWorld".getBytes(StandardCharsets.UTF_8); + ByteBuffer buffer1 = ByteBuffer.wrap(bytes1); + ByteBuffer buffer2 = ByteBuffer.wrap(bytes2); + + // change index + buffer2.position(5); + + // equals and compareTo + boolean equal = buffer1.equals(buffer2); + int result = buffer1.compareTo(buffer2); + + // assert + assertTrue(equal); + assertEquals(0, result); + } + + private void assertIndex(Buffer buffer, int mark, int position, int limit, int capacity) { + assertEquals(mark, getMark(buffer)); + assertEquals(position, buffer.position()); + assertEquals(limit, buffer.limit()); + assertEquals(capacity, buffer.capacity()); + } + + private int getMark(Buffer buffer) { + try { + Class clazz = Buffer.class; + Field f = clazz.getDeclaredField("mark"); + f.setAccessible(true); + Object result = f.get(buffer); + return (int) result; + } catch (NoSuchFieldException | IllegalAccessException e) { + e.printStackTrace(); + } + return -1; + } +} From 1d80576a7c6d795e552af488b42e31662ce7c79c Mon Sep 17 00:00:00 2001 From: vunamtien Date: Fri, 25 Feb 2022 04:15:22 +0700 Subject: [PATCH 27/37] BAEL-5379-create-simple-rock-paper-scissors-game (#11855) * BAEL-5379-create-simple-rock-paper-scissors-game * BAEL-5379-create-simple-rock-paper-scissors-game * BAEL-5379-create-simple-rock-paper-scissors-game Co-authored-by: tienvn4 --- .../baeldung/game/RockPaperScissorsGame.java | 35 +++++++++++-------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/game/RockPaperScissorsGame.java b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/game/RockPaperScissorsGame.java index fc9299f12d..17f0f02698 100644 --- a/core-java-modules/core-java-8-2/src/main/java/com/baeldung/game/RockPaperScissorsGame.java +++ b/core-java-modules/core-java-8-2/src/main/java/com/baeldung/game/RockPaperScissorsGame.java @@ -1,17 +1,24 @@ package com.baeldung.game; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; -import java.util.Scanner; +import java.util.*; class RockPaperScissorsGame { - private static Map movesMap = new HashMap() {{ - put(0, "rock"); - put(1, "paper"); - put(2, "scissors"); - }}; + enum Move { + ROCK("rock"), + PAPER("paper"), + SCISSORS("scissors"); + + private String value; + + Move(String value) { + this.value = value; + } + + public String getValue() { + return value; + } + } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); @@ -31,7 +38,7 @@ class RockPaperScissorsGame { break; } - if (!movesMap.containsValue(playerMove)) { + if (Arrays.stream(Move.values()).noneMatch(x -> x.getValue().equals(playerMove))) { System.out.println("Your move isn't valid!"); continue; } @@ -51,15 +58,15 @@ class RockPaperScissorsGame { } private static boolean isPlayerWin(String playerMove, String computerMove) { - return playerMove.equals("rock") && computerMove.equals("scissors") - || (playerMove.equals("scissors") && computerMove.equals("paper")) - || (playerMove.equals("paper") && computerMove.equals("rock")); + return playerMove.equals(Move.ROCK.value) && computerMove.equals(Move.SCISSORS.value) + || (playerMove.equals(Move.SCISSORS.value) && computerMove.equals(Move.PAPER.value)) + || (playerMove.equals(Move.PAPER.value) && computerMove.equals(Move.ROCK.value)); } private static String getComputerMove() { Random random = new Random(); int randomNumber = random.nextInt(3); - String computerMove = movesMap.get(randomNumber); + String computerMove = Move.values()[randomNumber].getValue(); System.out.println("Computer move: " + computerMove); return computerMove; } From cb65018f66cd2a7405f89797d139b9ce63381963 Mon Sep 17 00:00:00 2001 From: lucaCambi77 Date: Fri, 25 Feb 2022 02:17:58 +0100 Subject: [PATCH 28/37] [ BAEL-5337 ] - Enable Logging for Spring Security (#11803) * feat: logging application * fix: apply formatter --- .../baeldung/logging/LoggingController.java | 16 ++++++++++++ .../com/baeldung/logging/SecurityConfig.java | 26 +++++++++++++++++++ .../logging/SecurityLoggingApplication.java | 14 ++++++++++ .../resources/application-logging.properties | 4 +++ 4 files changed, 60 insertions(+) create mode 100644 spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/LoggingController.java create mode 100644 spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityConfig.java create mode 100644 spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityLoggingApplication.java create mode 100644 spring-security-modules/spring-security-web-boot-3/src/main/resources/application-logging.properties diff --git a/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/LoggingController.java b/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/LoggingController.java new file mode 100644 index 0000000000..c2d47fe6d6 --- /dev/null +++ b/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/LoggingController.java @@ -0,0 +1,16 @@ +package com.baeldung.logging; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class LoggingController { + + @GetMapping("/logging") + public ResponseEntity logging() { + return new ResponseEntity<>("logging/baeldung", HttpStatus.OK); + } + +} diff --git a/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityConfig.java b/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityConfig.java new file mode 100644 index 0000000000..f48f817dd2 --- /dev/null +++ b/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityConfig.java @@ -0,0 +1,26 @@ +package com.baeldung.logging; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@EnableWebSecurity +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + @Value("${spring.websecurity.debug:false}") + boolean webSecurityDebug; + + @Override + public void configure(WebSecurity web) { + web.debug(webSecurityDebug); + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http.authorizeRequests() + .antMatchers("/**") + .permitAll(); + } +} diff --git a/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityLoggingApplication.java b/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityLoggingApplication.java new file mode 100644 index 0000000000..2fadf1cc26 --- /dev/null +++ b/spring-security-modules/spring-security-web-boot-3/src/main/java/com/baeldung/logging/SecurityLoggingApplication.java @@ -0,0 +1,14 @@ +package com.baeldung.logging; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SecurityLoggingApplication { + + public static void main(String... args) { + SpringApplication application = new SpringApplication(SecurityLoggingApplication.class); + application.setAdditionalProfiles("logging"); + application.run(args); + } +} diff --git a/spring-security-modules/spring-security-web-boot-3/src/main/resources/application-logging.properties b/spring-security-modules/spring-security-web-boot-3/src/main/resources/application-logging.properties new file mode 100644 index 0000000000..4f0c3450a3 --- /dev/null +++ b/spring-security-modules/spring-security-web-boot-3/src/main/resources/application-logging.properties @@ -0,0 +1,4 @@ + +logging.level.org.springframework.security=DEBUG + +spring.websecurity.debug=true \ No newline at end of file From f74400ee6ec1449ebabe16794338927410e2d768 Mon Sep 17 00:00:00 2001 From: Ulisses Lima Date: Fri, 25 Feb 2022 03:36:17 -0300 Subject: [PATCH 29/37] BAEL-2080 - Check if a user is logged-in with Servlets and JSP (#11821) * BAEL-2080 - Check if a user is logged-in with Servlets and JSP * new module: javax-servlets-2 * adding javax-servlets-2 to the parent pom. * adding module javax-servlets-2 to all profiles --- javax-servlets-2/README.md | 5 + javax-servlets-2/pom.xml | 60 ++++++++++++ .../java/com/baeldung/user/check/User.java | 80 +++++++++++++++ .../baeldung/user/check/UserCheckFilter.java | 46 +++++++++ .../user/check/UserCheckLoginServlet.java | 56 +++++++++++ .../user/check/UserCheckLogoutServlet.java | 26 +++++ .../baeldung/user/check/UserCheckServlet.java | 28 ++++++ .../src/main/resources/logback.xml | 13 +++ .../main/webapp/WEB-INF/user.check/home.jsp | 31 ++++++ .../main/webapp/WEB-INF/user.check/login.jsp | 33 +++++++ .../user/check/UserCheckServletLiveTest.java | 98 +++++++++++++++++++ pom.xml | 2 + 12 files changed, 478 insertions(+) create mode 100644 javax-servlets-2/README.md create mode 100644 javax-servlets-2/pom.xml create mode 100644 javax-servlets-2/src/main/java/com/baeldung/user/check/User.java create mode 100644 javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckFilter.java create mode 100644 javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLoginServlet.java create mode 100644 javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLogoutServlet.java create mode 100644 javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckServlet.java create mode 100644 javax-servlets-2/src/main/resources/logback.xml create mode 100644 javax-servlets-2/src/main/webapp/WEB-INF/user.check/home.jsp create mode 100644 javax-servlets-2/src/main/webapp/WEB-INF/user.check/login.jsp create mode 100644 javax-servlets-2/src/test/java/com/baeldung/user/check/UserCheckServletLiveTest.java diff --git a/javax-servlets-2/README.md b/javax-servlets-2/README.md new file mode 100644 index 0000000000..f126f17297 --- /dev/null +++ b/javax-servlets-2/README.md @@ -0,0 +1,5 @@ +## Servlets + +This module contains articles about Servlets. + +### Relevant Articles: diff --git a/javax-servlets-2/pom.xml b/javax-servlets-2/pom.xml new file mode 100644 index 0000000000..34c00c3d05 --- /dev/null +++ b/javax-servlets-2/pom.xml @@ -0,0 +1,60 @@ + + + 4.0.0 + com.baeldung.javax-servlets + javax-servlets-2 + 1.0-SNAPSHOT + javax-servlets-2 + war + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + + commons-fileupload + commons-fileupload + ${commons-fileupload.version} + + + + javax.servlet + javax.servlet-api + ${javax.servlet-api.version} + + + javax.servlet.jsp + javax.servlet.jsp-api + ${javax.servlet.jsp-api.version} + provided + + + javax.servlet + jstl + ${jstl.version} + + + org.apache.httpcomponents + httpclient + ${org.apache.httpcomponents.version} + test + + + commons-logging + commons-logging + + + + + + + 4.5.13 + 4.0.1 + + diff --git a/javax-servlets-2/src/main/java/com/baeldung/user/check/User.java b/javax-servlets-2/src/main/java/com/baeldung/user/check/User.java new file mode 100644 index 0000000000..f61c0490bc --- /dev/null +++ b/javax-servlets-2/src/main/java/com/baeldung/user/check/User.java @@ -0,0 +1,80 @@ +package com.baeldung.user.check; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +/** + * @since 6 de fev de 2022 + * @author ulisses + */ +public class User implements Serializable { + private static final long serialVersionUID = 1L; + + protected static final HashMap DB = new HashMap<>(); + static { + DB.put("admin", new User("admin", "password")); + DB.put("user", new User("user", "pass")); + } + + private String name; + private String password; + + private List logins = new ArrayList(); + + public User(String name, String password) { + this.name = name; + this.password = password; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public List getLogins() { + return logins; + } + + public void setLogins(List logins) { + this.logins = logins; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + User other = (User) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + return true; + } +} diff --git a/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckFilter.java b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckFilter.java new file mode 100644 index 0000000000..2a370afe85 --- /dev/null +++ b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckFilter.java @@ -0,0 +1,46 @@ +package com.baeldung.user.check; + +import java.io.IOException; + +import javax.servlet.Filter; +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.annotation.WebFilter; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@WebFilter("/user-check/*") +public class UserCheckFilter implements Filter { + public static void forward(HttpServletRequest request, HttpServletResponse response, String page) throws ServletException, IOException { + request.getRequestDispatcher("/WEB-INF/user.check" + page) + .forward(request, response); + } + + @Override + public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { + if (!(req instanceof HttpServletRequest)) { + throw new ServletException("Can only process HttpServletRequest"); + } + + if (!(res instanceof HttpServletResponse)) { + throw new ServletException("Can only process HttpServletResponse"); + } + + HttpServletRequest request = (HttpServletRequest) req; + HttpServletResponse response = (HttpServletResponse) res; + + request.setAttribute("origin", request.getRequestURI()); + + if (!request.getRequestURI() + .contains("login") && request.getSession(false) == null) { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + forward(request, response, "/login.jsp"); + // we return here so the original servlet is not processed + return; + } + + chain.doFilter(request, response); + } +} diff --git a/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLoginServlet.java b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLoginServlet.java new file mode 100644 index 0000000000..e1a38fc7b8 --- /dev/null +++ b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLoginServlet.java @@ -0,0 +1,56 @@ +package com.baeldung.user.check; + +import java.io.IOException; +import java.util.Date; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebServlet("/user-check/login") +public class UserCheckLoginServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + if (request.getSession(false) != null) { + response.sendRedirect(request.getContextPath() + "/user-check/home"); + return; + } + + String referer = (String) request.getAttribute("origin"); + request.setAttribute("origin", referer); + UserCheckFilter.forward(request, response, "/login.jsp"); + } + + @Override + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + String key = request.getParameter("name"); + String pass = request.getParameter("password"); + + User user = User.DB.get(key); + if (user == null || !user.getPassword() + .equals(pass)) { + response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); + request.setAttribute("origin", request.getParameter("origin")); + request.setAttribute("error", "invalid login"); + UserCheckFilter.forward(request, response, "/login.jsp"); + return; + } + + user.getLogins() + .add(new Date()); + + HttpSession session = request.getSession(); + session.setAttribute("user", user); + + String origin = request.getParameter("origin"); + if (origin == null || origin.contains("login")) + origin = "./"; + + response.sendRedirect(origin); + } +} diff --git a/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLogoutServlet.java b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLogoutServlet.java new file mode 100644 index 0000000000..42c0bb87ab --- /dev/null +++ b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckLogoutServlet.java @@ -0,0 +1,26 @@ +package com.baeldung.user.check; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebServlet("/user-check/logout") +public class UserCheckLogoutServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + HttpSession session = request.getSession(false); + if (session != null) { + session.invalidate(); + } + + request.setAttribute("loggedOut", true); + response.sendRedirect("./"); + } +} diff --git a/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckServlet.java b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckServlet.java new file mode 100644 index 0000000000..d7d5d1e762 --- /dev/null +++ b/javax-servlets-2/src/main/java/com/baeldung/user/check/UserCheckServlet.java @@ -0,0 +1,28 @@ +package com.baeldung.user.check; + +import java.io.IOException; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +@WebServlet(name = "home", urlPatterns = { "/user-check/", "/user-check", "/user-check/home" }) +public class UserCheckServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + @Override + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + HttpSession session = request.getSession(false); + if (session == null || session.getAttribute("user") == null) { + throw new IllegalStateException("user not logged in"); + } + + User user = (User) session.getAttribute("user"); + request.setAttribute("user", user); + + UserCheckFilter.forward(request, response, "/home.jsp"); + } +} diff --git a/javax-servlets-2/src/main/resources/logback.xml b/javax-servlets-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/javax-servlets-2/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/javax-servlets-2/src/main/webapp/WEB-INF/user.check/home.jsp b/javax-servlets-2/src/main/webapp/WEB-INF/user.check/home.jsp new file mode 100644 index 0000000000..4e17763552 --- /dev/null +++ b/javax-servlets-2/src/main/webapp/WEB-INF/user.check/home.jsp @@ -0,0 +1,31 @@ +<%@ page contentType="text/html;charset=UTF-8" session="false"%> +<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> + + + + login success - current session info + + +
+

user info

+
+ name: ${user.name} +
+ +
+ logins: +
    + +
  • ${login}
  • +
    +
+
+ + +
+ + diff --git a/javax-servlets-2/src/main/webapp/WEB-INF/user.check/login.jsp b/javax-servlets-2/src/main/webapp/WEB-INF/user.check/login.jsp new file mode 100644 index 0000000000..19a857585d --- /dev/null +++ b/javax-servlets-2/src/main/webapp/WEB-INF/user.check/login.jsp @@ -0,0 +1,33 @@ +<%@ page contentType="text/html;charset=UTF-8" session="false"%> +<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c"%> + + + + login + + +
+ + +
* redirected to login from: ${origin}
+
+ + +
* error: ${error}
+
+ +
+ credentials + + + + + + + + +
+
+ + diff --git a/javax-servlets-2/src/test/java/com/baeldung/user/check/UserCheckServletLiveTest.java b/javax-servlets-2/src/test/java/com/baeldung/user/check/UserCheckServletLiveTest.java new file mode 100644 index 0000000000..42858d61e7 --- /dev/null +++ b/javax-servlets-2/src/test/java/com/baeldung/user/check/UserCheckServletLiveTest.java @@ -0,0 +1,98 @@ +package com.baeldung.user.check; + +import static org.junit.Assert.assertTrue; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.http.client.entity.UrlEncodedFormEntity; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClientBuilder; +import org.apache.http.impl.client.LaxRedirectStrategy; +import org.apache.http.message.BasicNameValuePair; +import org.apache.http.util.EntityUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class UserCheckServletLiveTest { + private static final String BASE_URL = "http://localhost:8080/javax-servlets-2/user-check"; + + @Mock + HttpServletRequest request; + + @Mock + HttpServletResponse response; + + private CloseableHttpClient buildClient() { + return HttpClientBuilder.create() + .setRedirectStrategy(new LaxRedirectStrategy()) + .build(); + } + + @Test + public void whenCorrectCredentials_thenLoginSucceeds() throws Exception { + try (CloseableHttpClient client = buildClient()) { + HttpPost post = new HttpPost(BASE_URL + "/login"); + + List form = new ArrayList<>(); + form.add(new BasicNameValuePair("name", "admin")); + form.add(new BasicNameValuePair("password", "password")); + + post.setEntity(new UrlEncodedFormEntity(form)); + try (CloseableHttpResponse response = client.execute(post)) { + String body = EntityUtils.toString(response.getEntity()); + + assertTrue(response.getStatusLine() + .getStatusCode() == 200); + + assertTrue(body.contains("login success")); + } + } + } + + @Test + public void whenIncorrectCredentials_thenLoginFails() throws Exception { + try (CloseableHttpClient client = buildClient()) { + HttpPost post = new HttpPost(BASE_URL + "/login"); + + List form = new ArrayList<>(); + form.add(new BasicNameValuePair("name", "admin")); + form.add(new BasicNameValuePair("password", "invalid")); + + post.setEntity(new UrlEncodedFormEntity(form)); + try (CloseableHttpResponse response = client.execute(post)) { + String body = EntityUtils.toString(response.getEntity()); + + assertTrue(response.getStatusLine() + .getStatusCode() == 401); + + assertTrue(body.contains("invalid login")); + } + } + } + + @Test + public void whenNotLoggedIn_thenRedirectedToLoginPage() throws Exception { + try (CloseableHttpClient client = buildClient()) { + HttpGet get = new HttpGet(BASE_URL + "/home"); + + try (CloseableHttpResponse response = client.execute(get)) { + String body = EntityUtils.toString(response.getEntity()); + + assertTrue(response.getStatusLine() + .getStatusCode() == 401); + + assertTrue(body.contains("redirected to login")); + } + } + } +} diff --git a/pom.xml b/pom.xml index 99217774e9..cab9a34f02 100644 --- a/pom.xml +++ b/pom.xml @@ -459,6 +459,7 @@ java-vavr-stream java-websocket javax-servlets + javax-servlets-2 javaxval jaxb jee-7 @@ -943,6 +944,7 @@ java-vavr-stream java-websocket javax-servlets + javax-servlets-2 javaxval jaxb jee-7 From f4d7c9a0ea1272f7998130628b08d00a3ef745cf Mon Sep 17 00:00:00 2001 From: mladensavic94 Date: Fri, 25 Feb 2022 09:54:42 +0100 Subject: [PATCH 30/37] Caching Maven Dependencies with Docker - fix --- .../src/main/java/com/baeldung/maven_caching/CoreClass.java | 4 ++-- docker/docker-caching/multi-module-caching/pom.xml | 3 +-- .../java/com/baeldung/maven_caching/MavenCachingMain.java | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java b/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java index 7d57110d72..d8c73a331a 100644 --- a/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java +++ b/docker/docker-caching/multi-module-caching/core/src/main/java/com/baeldung/maven_caching/CoreClass.java @@ -4,11 +4,11 @@ import com.google.common.io.Files; public class CoreClass { - public String method(){ + public String method() { return "Hello from core module!!"; } - public String dependencyMethod(){ + public String dependencyMethod() { return Files.simplifyPath("/home/app/test"); } } diff --git a/docker/docker-caching/multi-module-caching/pom.xml b/docker/docker-caching/multi-module-caching/pom.xml index c5a7d9ec6f..7968114385 100644 --- a/docker/docker-caching/multi-module-caching/pom.xml +++ b/docker/docker-caching/multi-module-caching/pom.xml @@ -5,8 +5,7 @@ com.baeldung multi-module-caching 0.0.1-SNAPSHOT - maven-caching - maven-caching + Multi-module Maven caching example pom diff --git a/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java b/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java index 81673fd9ac..4fbd8e5311 100644 --- a/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java +++ b/docker/docker-caching/single-module-caching/src/main/java/com/baeldung/maven_caching/MavenCachingMain.java @@ -5,7 +5,7 @@ import com.google.common.io.Files; public class MavenCachingMain { public static void main(String[] args) { - System.out.println("Hello from maven_caching app!!!"); + System.out.println("Hello from maven_caching app!!!"); System.out.println(Files.simplifyPath("/home/app/test")); } } From 12c25ba2e3a2903fe779001bdf7ef51b2709acf4 Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Fri, 25 Feb 2022 15:47:15 +0530 Subject: [PATCH 31/37] JAVA-10307:Fix Table ITEM not found issue --- .../src/main/resources/{import.sql => import-db.sql} | 0 .../spring-hibernate-5/src/test/resources/criteria.cfg.xml | 1 + .../src/test/resources/{import.sql => import-db.sql} | 0 3 files changed, 1 insertion(+) rename persistence-modules/spring-hibernate-5/src/main/resources/{import.sql => import-db.sql} (100%) rename persistence-modules/spring-hibernate-5/src/test/resources/{import.sql => import-db.sql} (100%) diff --git a/persistence-modules/spring-hibernate-5/src/main/resources/import.sql b/persistence-modules/spring-hibernate-5/src/main/resources/import-db.sql similarity index 100% rename from persistence-modules/spring-hibernate-5/src/main/resources/import.sql rename to persistence-modules/spring-hibernate-5/src/main/resources/import-db.sql diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/criteria.cfg.xml b/persistence-modules/spring-hibernate-5/src/test/resources/criteria.cfg.xml index bc4fed9680..9ca9836a70 100644 --- a/persistence-modules/spring-hibernate-5/src/test/resources/criteria.cfg.xml +++ b/persistence-modules/spring-hibernate-5/src/test/resources/criteria.cfg.xml @@ -11,6 +11,7 @@ org.hibernate.dialect.H2Dialect create-drop + import-db.sql false diff --git a/persistence-modules/spring-hibernate-5/src/test/resources/import.sql b/persistence-modules/spring-hibernate-5/src/test/resources/import-db.sql similarity index 100% rename from persistence-modules/spring-hibernate-5/src/test/resources/import.sql rename to persistence-modules/spring-hibernate-5/src/test/resources/import-db.sql From 6aa40fd5fbc9f713e763dea82f9832203dc71e49 Mon Sep 17 00:00:00 2001 From: Haroon Khan Date: Fri, 25 Feb 2022 20:43:35 +0000 Subject: [PATCH 32/37] [JAVA-10127] Update commented out modules in pom --- pom.xml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/pom.xml b/pom.xml index 99217774e9..e55743990a 100644 --- a/pom.xml +++ b/pom.xml @@ -400,7 +400,6 @@ dagger data-structures ddd - deeplearning4j discord4j disruptor @@ -432,7 +431,6 @@ hazelcast helidon httpclient - httpclient-simple hystrix @@ -482,8 +480,8 @@ kubernetes ksqldb - language-interop - libraries-2 + language-interop + libraries-2 libraries-3 libraries-apache-commons libraries-apache-commons-collections @@ -519,12 +517,12 @@ micronaut microprofile msf4j - + mustache mybatis netflix-modules - + netty ninja open-liberty @@ -885,7 +883,6 @@ dagger data-structures ddd - deeplearning4j discord4j disruptor @@ -916,7 +913,6 @@ hazelcast helidon httpclient - httpclient-simple hystrix @@ -1003,12 +999,12 @@ micronaut microprofile msf4j - + mustache mybatis netflix-modules - + netty ninja open-liberty @@ -1198,7 +1194,6 @@ wildfly xml xstream - @@ -1339,12 +1334,15 @@ core-java-modules/core-java-time-measurements core-java-modules/core-java-networking-3 core-java-modules/multimodulemavenproject + ddd-modules + httpclient-2 + libraries-concurrency persistence-modules/sirix persistence-modules/spring-data-cassandra-2 quarkus-vs-springboot quarkus-jandex - spring-boot-modules/spring-boot-cassandre - spring-boot-modules/spring-boot-camel + spring-boot-modules/spring-boot-cassandre + spring-boot-modules/spring-boot-camel testing-modules/testing-assertions @@ -1397,12 +1395,15 @@ core-java-modules/core-java-networking-3 core-java-modules/multimodulemavenproject core-java-modules/core-java-strings + ddd-modules + httpclient-2 + libraries-concurrency persistence-modules/sirix persistence-modules/spring-data-cassandra-2 quarkus-vs-springboot quarkus-jandex - spring-boot-modules/spring-boot-cassandre - spring-boot-modules/spring-boot-camel + spring-boot-modules/spring-boot-cassandre + spring-boot-modules/spring-boot-camel testing-modules/testing-assertions @@ -1470,7 +1471,6 @@ 0.0.1 3.12.2 3.0.0 - 3.13.0 1.18.20 1.4.200 From e65fe9db25acc832bc07af7057aeb9034b7be7b2 Mon Sep 17 00:00:00 2001 From: Elmar Mammadov Date: Sat, 26 Feb 2022 05:24:07 +0100 Subject: [PATCH 33/37] BAEL-5350: Java - How to create new Entry (key, value) (#11817) * BAEL-5350: 1. Added example usage of creating entries with Java itself 2. Added example usage of creating entries with Apache commons collecttions & Guava 3. Custom entry class and its usages * BAEL-5350: 1. Created unit tests * BAEL-5350: 1. simplifed assertion for java 9 entry creation * BAEL-5350: 1. moved into core-java-collections-maps-4 module 2. updated custom entry class and its unit test --- .../core-java-collections-maps-4/pom.xml | 25 +++- .../entries/SimpleCustomKeyValue.java | 53 ++++++++ .../entries/EntriesExampleUnitTest.java | 113 ++++++++++++++++++ .../entries/SimpleCustomKeyValueUnitTest.java | 31 +++++ core-java-modules/pom.xml | 1 - pom.xml | 2 + 6 files changed, 222 insertions(+), 3 deletions(-) create mode 100644 core-java-modules/core-java-collections-maps-4/src/main/java/com/baeldung/entries/SimpleCustomKeyValue.java create mode 100644 core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/EntriesExampleUnitTest.java create mode 100644 core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/SimpleCustomKeyValueUnitTest.java diff --git a/core-java-modules/core-java-collections-maps-4/pom.xml b/core-java-modules/core-java-collections-maps-4/pom.xml index be467dd57b..e5afd87bbe 100644 --- a/core-java-modules/core-java-collections-maps-4/pom.xml +++ b/core-java-modules/core-java-collections-maps-4/pom.xml @@ -15,6 +15,16 @@ + + org.apache.commons + commons-collections4 + ${commons-collections4.version} + + + com.google.guava + guava + ${guava.version} + junit junit @@ -37,12 +47,23 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven.compiler.source} + ${maven.compiler.target} + + + UTF-8 - 1.8 - 1.8 + 1.9 + 1.9
\ No newline at end of file diff --git a/core-java-modules/core-java-collections-maps-4/src/main/java/com/baeldung/entries/SimpleCustomKeyValue.java b/core-java-modules/core-java-collections-maps-4/src/main/java/com/baeldung/entries/SimpleCustomKeyValue.java new file mode 100644 index 0000000000..b2925cd508 --- /dev/null +++ b/core-java-modules/core-java-collections-maps-4/src/main/java/com/baeldung/entries/SimpleCustomKeyValue.java @@ -0,0 +1,53 @@ +package com.baeldung.entries; + +import java.util.Map; +import java.util.Objects; +import java.util.StringJoiner; + +public class SimpleCustomKeyValue implements Map.Entry { + + private final K key; + private V value; + + public SimpleCustomKeyValue(K key, V value) { + this.key = key; + this.value = value; + } + + @Override + public K getKey() { + return key; + } + + @Override + public V getValue() { + return value; + } + + @Override + public V setValue(V value) { + return this.value = value; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + SimpleCustomKeyValue that = (SimpleCustomKeyValue) o; + return Objects.equals(key, that.key) && Objects.equals(value, that.value); + } + + @Override + public int hashCode() { + return Objects.hash(key, value); + } + + @Override + public String toString() { + return new StringJoiner(", ", SimpleCustomKeyValue.class.getSimpleName() + "[", "]").add("key=" + key).add("value=" + value).toString(); + } +} diff --git a/core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/EntriesExampleUnitTest.java b/core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/EntriesExampleUnitTest.java new file mode 100644 index 0000000000..954a4a4f22 --- /dev/null +++ b/core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/EntriesExampleUnitTest.java @@ -0,0 +1,113 @@ +package com.baeldung.entries; + +import com.google.common.collect.Maps; +import org.apache.commons.collections4.KeyValue; +import org.apache.commons.collections4.keyvalue.DefaultMapEntry; +import org.apache.commons.collections4.keyvalue.UnmodifiableMapEntry; +import org.junit.jupiter.api.Test; + +import java.util.AbstractMap; +import java.util.Map; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.tuple; + +public class EntriesExampleUnitTest { + + @Test + public void givenEntries_whenVerifying_thenShouldContainKeyValues() { + AbstractMap.SimpleEntry firstEntry = new AbstractMap.SimpleEntry<>("key1", "value1"); + AbstractMap.SimpleEntry secondEntry = new AbstractMap.SimpleEntry<>("key2", "value2"); + AbstractMap.SimpleEntry thirdEntry = new AbstractMap.SimpleEntry<>(firstEntry); + thirdEntry.setValue("a different value"); + + assertThat(Stream.of(firstEntry, secondEntry, thirdEntry)) + .extracting("key", "value") + .containsExactly( + tuple("key1", "value1"), + tuple("key2", "value2"), + tuple("key1", "a different value")); + } + + @Test + public void givenImmutableEntries_whenVerifying_thenShouldContainKeyValues() { + AbstractMap.SimpleImmutableEntry firstEntry = new AbstractMap.SimpleImmutableEntry<>("key1", "value1"); + AbstractMap.SimpleImmutableEntry secondEntry = new AbstractMap.SimpleImmutableEntry<>("key2", "value2"); + AbstractMap.SimpleImmutableEntry thirdEntry = new AbstractMap.SimpleImmutableEntry<>(firstEntry); + + assertThat(Stream.of(firstEntry, secondEntry, thirdEntry)) + .extracting("key", "value") + .containsExactly( + tuple("key1", "value1"), + tuple("key2", "value2"), + tuple("key1", "value1")); + } + + @Test + public void givenImmutableEntryUsingJava9_whenVerifying_thenShouldContainKeyValues() { + Map.Entry entry = Map.entry("key", "value"); + + assertThat(entry.getKey()) + .isEqualTo("key"); + assertThat(entry.getValue()) + .isEqualTo("value"); + } + + + @Test + public void givenEntriesWithApacheCommons_whenVerifying_thenShouldContainKeyValues() { + Map.Entry firstEntry = new DefaultMapEntry<>("key1", "value1"); + KeyValue secondEntry = new DefaultMapEntry<>("key2", "value2"); + + KeyValue thirdEntry = new DefaultMapEntry<>(firstEntry); + KeyValue fourthEntry = new DefaultMapEntry<>(secondEntry); + + firstEntry.setValue("a different value"); + + assertThat(firstEntry) + .extracting("key", "value") + .containsExactly("key1", "a different value"); + + assertThat(Stream.of(secondEntry, thirdEntry, fourthEntry)) + .extracting("key", "value") + .containsExactly( + tuple("key2", "value2"), + tuple("key1", "value1"), + tuple("key2", "value2")); + } + + @Test + public void givenImmutableEntriesWithApacheCommons_whenVerifying_thenShouldContainKeyValues() { + Map.Entry firstEntry = new UnmodifiableMapEntry<>("key1", "value1"); + KeyValue secondEntry = new UnmodifiableMapEntry<>("key2", "value2"); + + KeyValue thirdEntry = new UnmodifiableMapEntry<>(firstEntry); + KeyValue fourthEntry = new UnmodifiableMapEntry<>(secondEntry); + + assertThat(firstEntry) + .extracting("key", "value") + .containsExactly("key1", "value1"); + + assertThat(Stream.of(secondEntry, thirdEntry, fourthEntry)) + .extracting("key", "value") + .containsExactly( + tuple("key2", "value2"), + tuple("key1", "value1"), + tuple("key2", "value2")); + } + + + @Test + public void givenImmutableEntriesWithGuava_whenVerifying_thenShouldContainKeyValues() { + Map.Entry firstEntry = Maps.immutableEntry("key1", "value1"); + Map.Entry secondEntry = Maps.immutableEntry("key2", "value2"); + + assertThat(Stream.of(firstEntry, secondEntry)) + .extracting("key", "value") + .containsExactly( + tuple("key1", "value1"), + tuple("key2", "value2")); + } + +} diff --git a/core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/SimpleCustomKeyValueUnitTest.java b/core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/SimpleCustomKeyValueUnitTest.java new file mode 100644 index 0000000000..d055bb1653 --- /dev/null +++ b/core-java-modules/core-java-collections-maps-4/src/test/java/com/baeldung/entries/SimpleCustomKeyValueUnitTest.java @@ -0,0 +1,31 @@ +package com.baeldung.entries; + +import com.google.common.collect.ImmutableMap; +import org.junit.jupiter.api.Test; + +import java.util.Map; +import java.util.stream.Stream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.tuple; + +class SimpleCustomKeyValueUnitTest { + + + @Test + public void givenModifiableEntries_whenVerifying_thenShouldContainKeyValues() { + Map.Entry firstEntry = new SimpleCustomKeyValue<>("key1", "value1"); + + Map.Entry secondEntry = new SimpleCustomKeyValue<>("key2", "value2"); + secondEntry.setValue("different value"); + + Map map = Map.ofEntries(firstEntry, secondEntry); + + assertThat(map) + .isEqualTo(ImmutableMap.builder() + .put("key1", "value1") + .put("key2", "different value") + .build()); + } + +} \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index a25cf11454..60319b4de4 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -38,7 +38,6 @@ core-java-collections-maps core-java-collections-maps-2 core-java-collections-maps-3 - core-java-collections-maps-4 core-java-concurrency-2 core-java-concurrency-advanced core-java-concurrency-advanced-2 diff --git a/pom.xml b/pom.xml index cab9a34f02..3138b5c610 100644 --- a/pom.xml +++ b/pom.xml @@ -1329,6 +1329,7 @@ core-java-modules/core-java-collections-set + core-java-modules/core-java-collections-maps-4 core-java-modules/core-java-date-operations-1 core-java-modules/core-java-datetime-conversion core-java-modules/core-java-datetime-string @@ -1387,6 +1388,7 @@ core-java-modules/core-java-collections-set + core-java-modules/core-java-collections-maps-4 core-java-modules/core-java-date-operations-1 core-java-modules/core-java-datetime-conversion core-java-modules/core-java-datetime-string From 768e9ae3877175cee1d12f3eb1de71fe81eddf41 Mon Sep 17 00:00:00 2001 From: Sameer Date: Sat, 26 Feb 2022 17:25:31 +0530 Subject: [PATCH 34/37] Maven Classifier (#11833) * maven classifier * static imports * bumped up plugin versions Co-authored-by: s9m33r --- .../maven-classifier-example-consumer/pom.xml | 53 ++++++++ .../classifier/consumer/FuelStation.java | 17 +++ .../consumer/FuelStationUnitTest.java | 21 +++ .../maven-classifier-example-provider/pom.xml | 122 ++++++++++++++++++ .../provider/factory/CarFactory.java | 14 ++ .../classifier/provider/model/Car.java | 26 ++++ .../provider/model/PowerSource.java | 5 + .../provider/factory/CarFactoryUnitTest.java | 32 +++++ .../classifier/provider/stub/CarStub.java | 17 +++ maven-modules/maven-classifier/pom.xml | 27 ++++ maven-modules/pom.xml | 1 + 11 files changed, 335 insertions(+) create mode 100644 maven-modules/maven-classifier/maven-classifier-example-consumer/pom.xml create mode 100644 maven-modules/maven-classifier/maven-classifier-example-consumer/src/main/java/com/baeldung/maven/classifier/consumer/FuelStation.java create mode 100644 maven-modules/maven-classifier/maven-classifier-example-consumer/src/test/java/com/baeldung/maven/classifier/consumer/FuelStationUnitTest.java create mode 100644 maven-modules/maven-classifier/maven-classifier-example-provider/pom.xml create mode 100644 maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactory.java create mode 100644 maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/Car.java create mode 100644 maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/PowerSource.java create mode 100644 maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactoryUnitTest.java create mode 100644 maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/stub/CarStub.java create mode 100644 maven-modules/maven-classifier/pom.xml diff --git a/maven-modules/maven-classifier/maven-classifier-example-consumer/pom.xml b/maven-modules/maven-classifier/maven-classifier-example-consumer/pom.xml new file mode 100644 index 0000000000..cbf046ed5a --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-consumer/pom.xml @@ -0,0 +1,53 @@ + + + + maven-classifier + com.baeldung + 0.0.1-SNAPSHOT + + + 4.0.0 + + maven-classifier-example-consumer + + + 8 + 8 + + + + + com.baeldung + maven-classifier-example-provider + 0.0.1-SNAPSHOT + + + com.baeldung + maven-classifier-example-provider + 0.0.1-SNAPSHOT + arbitrary + + + + + + + + + + com.baeldung + maven-classifier-example-provider + 0.0.1-SNAPSHOT + sources + + + com.baeldung + maven-classifier-example-provider + 0.0.1-SNAPSHOT + tests + + + + diff --git a/maven-modules/maven-classifier/maven-classifier-example-consumer/src/main/java/com/baeldung/maven/classifier/consumer/FuelStation.java b/maven-modules/maven-classifier/maven-classifier-example-consumer/src/main/java/com/baeldung/maven/classifier/consumer/FuelStation.java new file mode 100644 index 0000000000..cf5dc03457 --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-consumer/src/main/java/com/baeldung/maven/classifier/consumer/FuelStation.java @@ -0,0 +1,17 @@ + +package com.baeldung.maven.classifier.consumer; + +import com.baeldung.maven.dependency.classifier.provider.model.Car; +import com.baeldung.maven.dependency.classifier.provider.model.PowerSource; + +public class FuelStation { + + public FuelStation.Zone refill(Car car) { + return PowerSource.BATTERY.equals(car.getPowerSource()) ? FuelStation.Zone.BATTERY : FuelStation.Zone.UNKNOWN; + } + + public enum Zone { + BATTERY, + UNKNOWN + } +} diff --git a/maven-modules/maven-classifier/maven-classifier-example-consumer/src/test/java/com/baeldung/maven/classifier/consumer/FuelStationUnitTest.java b/maven-modules/maven-classifier/maven-classifier-example-consumer/src/test/java/com/baeldung/maven/classifier/consumer/FuelStationUnitTest.java new file mode 100644 index 0000000000..e04afb8276 --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-consumer/src/test/java/com/baeldung/maven/classifier/consumer/FuelStationUnitTest.java @@ -0,0 +1,21 @@ +package com.baeldung.maven.classifier.consumer; + +import com.baeldung.maven.classifier.consumer.FuelStation.Zone; +import com.baeldung.maven.dependency.classifier.provider.model.Car; +import com.baeldung.maven.dependency.classifier.provider.stub.CarStub; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class FuelStationUnitTest { + + @Test + @DisplayName("Given fuel type battery When request for refill Then Return Battery Zone") + public void givenFuelTypeBattery_whenRequestToRefill_thenReturnBatteryZone() { + FuelStation fuelStation = new FuelStation(); + Car electricCar = CarStub.ELECTRIC_CAR; + + assertEquals(Zone.BATTERY, fuelStation.refill(electricCar)); + } +} diff --git a/maven-modules/maven-classifier/maven-classifier-example-provider/pom.xml b/maven-modules/maven-classifier/maven-classifier-example-provider/pom.xml new file mode 100644 index 0000000000..12cb4fa1a2 --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-provider/pom.xml @@ -0,0 +1,122 @@ + + + + 4.0.0 + + + maven-classifier + com.baeldung + 0.0.1-SNAPSHOT + + + maven-classifier-example-provider + 0.0.1-SNAPSHOT + + + 8 + 8 + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.0 + + + JDK 8 + compile + + compile + + + 8 + 8 + true + + + + + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.2 + + + Arbitrary + + jar + + + arbitrary + + + + Test Jar + + test-jar + + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + verify + + jar-no-fork + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 3.3.2 + + + attach-javadocs + + jar + + + + + + + diff --git a/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactory.java b/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactory.java new file mode 100644 index 0000000000..285fec9ddc --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactory.java @@ -0,0 +1,14 @@ +package com.baeldung.maven.dependency.classifier.provider.factory; + +import com.baeldung.maven.dependency.classifier.provider.model.Car; +import com.baeldung.maven.dependency.classifier.provider.model.Car.Type; + +public class CarFactory { + + public static Car manufacture(Type carType) { + Car car = new Car(); + car.setType(carType); + + return car; + } +} diff --git a/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/Car.java b/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/Car.java new file mode 100644 index 0000000000..93d5091f55 --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/Car.java @@ -0,0 +1,26 @@ +package com.baeldung.maven.dependency.classifier.provider.model; + +public class Car { + private Type type; + private PowerSource fuelType; + + public Type getType() { + return this.type; + } + + public void setType(Type carType) { + this.type = carType; + } + + public PowerSource getPowerSource() { + return this.fuelType; + } + + public void setFuelType(PowerSource fuelType) { + this.fuelType = fuelType; + } + + public enum Type { + ELECTRIC + } +} diff --git a/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/PowerSource.java b/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/PowerSource.java new file mode 100644 index 0000000000..3ac5d98efe --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-provider/src/main/java/com/baeldung/maven/dependency/classifier/provider/model/PowerSource.java @@ -0,0 +1,5 @@ +package com.baeldung.maven.dependency.classifier.provider.model; + +public enum PowerSource { + BATTERY +} diff --git a/maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactoryUnitTest.java b/maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactoryUnitTest.java new file mode 100644 index 0000000000..36f0b36f1c --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/factory/CarFactoryUnitTest.java @@ -0,0 +1,32 @@ + +package com.baeldung.maven.dependency.classifier.provider.factory; + +import com.baeldung.maven.dependency.classifier.provider.model.Car; +import com.baeldung.maven.dependency.classifier.provider.model.Car.Type; +import com.baeldung.maven.dependency.classifier.provider.model.PowerSource; +import com.baeldung.maven.dependency.classifier.provider.stub.CarStub; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +class CarFactoryUnitTest { + + @Test + @DisplayName("Given Car type When CarFactory manufacture is called Then create a Car of the given type") + public void givenCarType_whenCarFactoryManufactureCalled_thenCreateCarOfGivenType() { + Car car = CarFactory.manufacture(Type.ELECTRIC); + + assertNotNull(car, "CarFactory didn't manufacture a car. Car is null"); + assertEquals(Type.ELECTRIC, car.getType()); + } + + @Test + @DisplayName("Given an electric car When asked for fuel type Then return Battery") + public void givenElectricCar_whenAskedForFuelType_thenReturnBattery() { + Car car = CarStub.ELECTRIC_CAR; + + assertEquals(PowerSource.BATTERY, car.getPowerSource()); + } +} diff --git a/maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/stub/CarStub.java b/maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/stub/CarStub.java new file mode 100644 index 0000000000..54dbd1166f --- /dev/null +++ b/maven-modules/maven-classifier/maven-classifier-example-provider/src/test/java/com/baeldung/maven/dependency/classifier/provider/stub/CarStub.java @@ -0,0 +1,17 @@ +package com.baeldung.maven.dependency.classifier.provider.stub; + +import com.baeldung.maven.dependency.classifier.provider.model.Car; +import com.baeldung.maven.dependency.classifier.provider.model.PowerSource; +import com.baeldung.maven.dependency.classifier.provider.model.Car.Type; +import org.mockito.Mockito; + +import static org.mockito.Mockito.when; + +public class CarStub { + public static Car ELECTRIC_CAR = Mockito.mock(Car.class); + + static { + when(ELECTRIC_CAR.getType()).thenReturn(Type.ELECTRIC); + when(ELECTRIC_CAR.getPowerSource()).thenReturn(PowerSource.BATTERY); + } +} diff --git a/maven-modules/maven-classifier/pom.xml b/maven-modules/maven-classifier/pom.xml new file mode 100644 index 0000000000..6b75f60893 --- /dev/null +++ b/maven-modules/maven-classifier/pom.xml @@ -0,0 +1,27 @@ + + + 4.0.0 + + maven-classifier + pom + 0.0.1-SNAPSHOT + + + maven-classifier-example-consumer + maven-classifier-example-provider + + + + com.baeldung + maven-modules + 0.0.1-SNAPSHOT + + + + 8 + 8 + + + diff --git a/maven-modules/pom.xml b/maven-modules/pom.xml index 21bc0e72e1..37be581804 100644 --- a/maven-modules/pom.xml +++ b/maven-modules/pom.xml @@ -36,6 +36,7 @@ maven-surefire-plugin maven-parent-pom-resolution maven-simple + maven-classifier From eae57f5496a6e56d73393f295fcc6955d0a65273 Mon Sep 17 00:00:00 2001 From: Kapil Khandelwal Date: Mon, 28 Feb 2022 01:51:17 +0530 Subject: [PATCH 35/37] BAEL-5359: Updating Multiple Fields in a MongoDB Document (#11861) * BAEL-5359: Updating Multiple Fields in a MongoDB Document * BAEL-5359: Add test class file * BAEL-5359: Rename UpdateMultipleFieldsUnitTest.java to UpdateMultipleFieldsLiveTest.java --- .../mongo/update/MultipleFieldsExample.java | 44 ++++++++++ .../mongo/update/UpdateMultipleFields.java | 36 +++++++++ .../update/UpdateMultipleFieldsLiveTest.java | 80 +++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java create mode 100644 persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java create mode 100644 persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java new file mode 100644 index 0000000000..b2fcddeafb --- /dev/null +++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/MultipleFieldsExample.java @@ -0,0 +1,44 @@ +package com.baeldung.mongo.update; + +import org.bson.Document; + +import com.mongodb.BasicDBObject; +import com.mongodb.MongoClient; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.result.UpdateResult; + +public class MultipleFieldsExample { + + public static void main(String[] args) { + + // + // Connect to cluster (default is localhost:27017) + // + + MongoClient mongoClient = new MongoClient("localhost", 27017); + MongoDatabase database = mongoClient.getDatabase("baeldung"); + MongoCollection collection = database.getCollection("employee"); + + // + // Filter on the basis of employee_id + // + + BasicDBObject searchQuery = new BasicDBObject("employee_id", 794875); + + // + // Update the fields in Document + // + + BasicDBObject updateFields = new BasicDBObject(); + updateFields.append("department_id", 3); + updateFields.append("job", "Sales Manager"); + BasicDBObject setQuery = new BasicDBObject(); + setQuery.append("$set", updateFields); + UpdateResult updateResult = collection.updateMany(searchQuery, setQuery); + + System.out.println("updateResult:- " + updateResult); + System.out.println("updateResult:- " + updateResult.getModifiedCount()); + + } +} diff --git a/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java new file mode 100644 index 0000000000..20af6d99cb --- /dev/null +++ b/persistence-modules/java-mongodb/src/main/java/com/baeldung/mongo/update/UpdateMultipleFields.java @@ -0,0 +1,36 @@ +package com.baeldung.mongo.update; + +import org.bson.Document; + +import com.mongodb.MongoClient; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Updates; +import com.mongodb.client.result.UpdateResult; + +public class UpdateMultipleFields { + + public static void main(String[] args) { + + // + // Connect to cluster + // + + MongoClient mongoClient = new MongoClient("localhost", 27007); + MongoDatabase database = mongoClient.getDatabase("baeldung"); + MongoCollection collection = database.getCollection("employee"); + + // + // Update query + // + + UpdateResult updateResult = collection.updateMany(Filters.eq("employee_id", 794875), + Updates.combine(Updates.set("department_id", 4), Updates.set("job", "Sales Manager"))); + + System.out.println("updateResult:- " + updateResult); + System.out.println("updateResult:- " + updateResult.getModifiedCount()); + + } + +} \ No newline at end of file diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java new file mode 100644 index 0000000000..d1538d5312 --- /dev/null +++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/update/UpdateMultipleFieldsLiveTest.java @@ -0,0 +1,80 @@ +package com.baeldung.update; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; + +import org.bson.Document; +import org.junit.Before; +import org.junit.Test; + +import com.mongodb.BasicDBObject; +import com.mongodb.MongoClient; +import com.mongodb.client.MongoCollection; +import com.mongodb.client.MongoDatabase; +import com.mongodb.client.model.Filters; +import com.mongodb.client.model.Updates; +import com.mongodb.client.result.UpdateResult; + +public class UpdateMultipleFieldsLiveTest { + + private MongoClient mongoClient; + private MongoDatabase db; + private MongoCollection collection; + + @Before + public void setup() { + if (mongoClient == null) { + mongoClient = new MongoClient("localhost", 27017); + db = mongoClient.getDatabase("baeldung"); + collection = db.getCollection("employee"); + + collection.insertOne(Document.parse( + "{'employee_id':794875,'employee_name': 'David smith','job': 'Sales Representative','department_id': 2,'salary': 20000,'hire_date': NumberLong(\"1643969311817\")}")); + } + } + + @Test + public void updateMultipleFieldsUsingDBObject() { + + BasicDBObject searchQuery = new BasicDBObject("employee_id", 794875); + BasicDBObject updateFields = new BasicDBObject(); + updateFields.append("department_id", 4); + updateFields.append("job", "Sales Manager"); + BasicDBObject setQuery = new BasicDBObject(); + setQuery.append("$set", updateFields); + + collection.updateMany(searchQuery, setQuery); + + Document nameDoc = collection.find(Filters.eq("employee_id", 794875)).first(); + assertNotNull(nameDoc); + assertFalse(nameDoc.isEmpty()); + + String job = nameDoc.get("job", String.class); + assertNotNull(job); + + Integer department_id = nameDoc.get("department_id", Integer.class); + assertNotNull(department_id); + + } + + @Test + public void updateMultipleFieldsUsingDocument() { + + collection.updateMany(Filters.eq("employee_id", 794875), + Updates.combine(Updates.set("department_id", 4), Updates.set("job", "Sales Manager"))); + + Document nameDoc = collection.find(Filters.eq("employee_id", 794875)).first(); + assertNotNull(nameDoc); + assertFalse(nameDoc.isEmpty()); + + String job = nameDoc.get("job", String.class); + assertNotNull(job); + + Integer department_id = nameDoc.get("department_id", Integer.class); + assertNotNull(department_id); + + } + +} From e10e20a24be601c031dc677001043f01b075f93a Mon Sep 17 00:00:00 2001 From: Chukwuka Onyekachukwu Victor Date: Sun, 27 Feb 2022 21:33:39 +0100 Subject: [PATCH 36/37] Added a new Class and few test cases to the core-java-modules (#11867) * added a new project: hexagonal architecture * Added some test cases for the project * Added a new project to demo the error: variable might not have been initialized * Added a new Class to the core-java-modules * Added a New Class to the core-java-module --- .../VariableMightNotHaveBeenInitialized.java | 45 +++++++++++++++++++ ...leMightNotHaveBeenInitializedUnitTest.java | 24 ++++++++++ 2 files changed, 69 insertions(+) create mode 100644 core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitialized.java create mode 100644 core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitializedUnitTest.java diff --git a/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitialized.java b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitialized.java new file mode 100644 index 0000000000..64118e6307 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/main/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitialized.java @@ -0,0 +1,45 @@ +package com.baeldung.exception.variablemightnothavebeeninitialized; + +public class VariableMightNotHaveBeenInitialized { + + private static int instanceVariableCount; + + /** + * Method would not compile if lines 14 and 18 are uncommented. + */ + public static void countEven() { + //uninstantiated + int count; + int[] arr = new int[]{23, 56, 89, 12, 23}; + for (int i = 0; i < arr.length; i++) { + if ((arr[i] % 2) == 0) { + // count++; + } + + } + // System.out.println("Total Even Numbers : " + count); + } + + public static int countEvenUsingInstanceVariable(int[] arr) { + + for (int i = 0; i < arr.length; i++) { + if ((arr[i] % 2) == 0) { + instanceVariableCount++; + } + + } + return instanceVariableCount; + } + + public static int countEvenUsingIfElse(int[] arr, int args) { + int count; + count = args > 0 ? args : 0; + for (int i = 0; i < arr.length; i++) { + if ((arr[i] % 2) == 0) { + count++; + } + + } + return count; + } +} diff --git a/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitializedUnitTest.java b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitializedUnitTest.java new file mode 100644 index 0000000000..c4773d6442 --- /dev/null +++ b/core-java-modules/core-java-exceptions-4/src/test/java/com/baeldung/exception/variablemightnothavebeeninitialized/VariableMightNotHaveBeenInitializedUnitTest.java @@ -0,0 +1,24 @@ +package com.baeldung.exception.variablemightnothavebeeninitialized; + +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +public class VariableMightNotHaveBeenInitializedUnitTest { + + @Test + public void usingInstanceVariable_returnCount() { + int[] arr = new int[]{1, 2, 3, 4, 5, 6}; + int value = VariableMightNotHaveBeenInitialized.countEvenUsingInstanceVariable(arr); + + assertEquals(3, value); + } + + @Test + public void usingArgumentsAndIfElse_returnCount() { + int[] arr = new int[]{1, 2, 3, 4, 5, 6}; + int value = VariableMightNotHaveBeenInitialized.countEvenUsingIfElse(arr, 2); + + assertEquals(5, value); + } +} From 3c8bf25c07cde5169c57525e775a8ee201dbd0fc Mon Sep 17 00:00:00 2001 From: anuragkumawat Date: Mon, 28 Feb 2022 10:15:29 +0530 Subject: [PATCH 37/37] Using property for dependencies versions --- .../spring-hibernate-5/pom.xml | 37 +++++++++---------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/persistence-modules/spring-hibernate-5/pom.xml b/persistence-modules/spring-hibernate-5/pom.xml index bb8c4e8228..ba18c5a221 100644 --- a/persistence-modules/spring-hibernate-5/pom.xml +++ b/persistence-modules/spring-hibernate-5/pom.xml @@ -107,27 +107,22 @@ com.h2database h2 ${h2.version} -
+
- jakarta.xml.bind - jakarta.xml.bind-api - 2.3.2 - - - com.sun.xml.bind - jaxb-core - 2.3.0.1 - - - javax.xml.bind - jaxb-api - 2.3.1 - - - com.sun.xml.bind - jaxb-impl - 2.3.1 - + com.sun.xml.bind + jaxb-core + ${com.sun.xml.version} + + + javax.xml.bind + jaxb-api + ${javax.xml.bind.version} + + + com.sun.xml.bind + jaxb-impl + ${com.sun.xml.version} +
@@ -142,6 +137,8 @@ 9.0.0.M26 1.1 2.3.4 + 2.3.0.1 + 2.3.1 \ No newline at end of file