diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml
index 2cfebd57ce..1dbe6b2435 100644
--- a/libraries-3/pom.xml
+++ b/libraries-3/pom.xml
@@ -67,7 +67,12 @@
org.cactoos
cactoos
${cactoos.version}
-
+
+
+ org.cache2k
+ cache2k-base-bom
+ ${cache2k.version}
+ pom
@@ -88,5 +93,6 @@
0.43
2.7.2
+ 1.2.3.Final
diff --git a/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelper.java b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelper.java
new file mode 100644
index 0000000000..dc984e5f0b
--- /dev/null
+++ b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelper.java
@@ -0,0 +1,41 @@
+package com.baeldung.cache2k;
+
+import java.util.Objects;
+
+import org.cache2k.Cache;
+import org.cache2k.Cache2kBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProductHelper {
+
+ final Logger LOGGER = LoggerFactory.getLogger(ProductHelper.class);
+
+ private Cache cachedDiscounts;
+
+ public ProductHelper() {
+ cachedDiscounts = Cache2kBuilder.of(String.class, Integer.class)
+ .name("discount")
+ .eternal(true)
+ .entryCapacity(100)
+ .build();
+
+ initDiscountCache("Sports", 20);
+ }
+
+ public void initDiscountCache(String productType, Integer value) {
+ cachedDiscounts.put(productType, value);
+ }
+
+ public Integer getDiscount(String productType) {
+ Integer discount = cachedDiscounts.get(productType);
+ if (Objects.isNull(discount)) {
+ LOGGER.info("Discount for {} not found.", productType);
+ discount = 0;
+ } else {
+ LOGGER.info("Discount for {} found.", productType);
+ }
+ return discount;
+ }
+
+}
diff --git a/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperUsingLoader.java b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperUsingLoader.java
new file mode 100644
index 0000000000..787a78cd36
--- /dev/null
+++ b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperUsingLoader.java
@@ -0,0 +1,41 @@
+package com.baeldung.cache2k;
+
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+import org.cache2k.Cache;
+import org.cache2k.Cache2kBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProductHelperUsingLoader {
+
+ final Logger LOGGER = LoggerFactory.getLogger(ProductHelperUsingLoader.class);
+
+ private Cache cachedDiscounts;
+
+ public ProductHelperUsingLoader() {
+ cachedDiscounts = Cache2kBuilder.of(String.class, Integer.class)
+ .name("discount-loader")
+ .eternal(false)
+ .expireAfterWrite(10, TimeUnit.MILLISECONDS)
+ .entryCapacity(100)
+ .loader((key) -> {
+ LOGGER.info("Calculating discount for {}.", key);
+ return "Sports".equalsIgnoreCase(key) ? 20 : 10;
+ })
+ .build();
+ }
+
+ public Integer getDiscount(String productType) {
+ Integer discount = cachedDiscounts.get(productType);
+ if (Objects.isNull(discount)) {
+ LOGGER.info("Discount for {} not found.", productType);
+ discount = 0;
+ } else {
+ LOGGER.info("Discount for {} found.", productType);
+ }
+ return discount;
+ }
+
+}
diff --git a/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperWithEventListener.java b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperWithEventListener.java
new file mode 100644
index 0000000000..5b9eb28c68
--- /dev/null
+++ b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperWithEventListener.java
@@ -0,0 +1,49 @@
+package com.baeldung.cache2k;
+
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+import org.cache2k.Cache;
+import org.cache2k.Cache2kBuilder;
+import org.cache2k.CacheEntry;
+import org.cache2k.event.CacheEntryCreatedListener;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProductHelperWithEventListener {
+
+ final Logger LOGGER = LoggerFactory.getLogger(ProductHelperWithEventListener.class);
+
+ private Cache cachedDiscounts;
+
+ public ProductHelperWithEventListener() {
+ cachedDiscounts = Cache2kBuilder.of(String.class, Integer.class)
+ .name("discount-listener")
+ .eternal(false)
+ .expireAfterWrite(10, TimeUnit.MILLISECONDS)
+ .entryCapacity(100)
+ .loader((key) -> {
+ LOGGER.info("Calculating discount for {}.", key);
+ return "Sports".equalsIgnoreCase(key) ? 20 : 10;
+ })
+ .addListener(new CacheEntryCreatedListener() {
+ @Override
+ public void onEntryCreated(Cache cache, CacheEntry entry) {
+ LOGGER.info("Entry created: [{}, {}].", entry.getKey(), entry.getValue());
+ }
+ })
+ .build();
+ }
+
+ public Integer getDiscount(String productType) {
+ Integer discount = cachedDiscounts.get(productType);
+ if (Objects.isNull(discount)) {
+ LOGGER.info("Discount for {} not found.", productType);
+ discount = 0;
+ } else {
+ LOGGER.info("Discount for {} found.", productType);
+ }
+ return discount;
+ }
+
+}
diff --git a/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperWithExpiry.java b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperWithExpiry.java
new file mode 100644
index 0000000000..b0bf8f90de
--- /dev/null
+++ b/libraries-3/src/main/java/com/baeldung/cache2k/ProductHelperWithExpiry.java
@@ -0,0 +1,43 @@
+package com.baeldung.cache2k;
+
+import java.util.Objects;
+import java.util.concurrent.TimeUnit;
+
+import org.cache2k.Cache;
+import org.cache2k.Cache2kBuilder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class ProductHelperWithExpiry {
+
+ final Logger LOGGER = LoggerFactory.getLogger(ProductHelperWithExpiry.class);
+
+ private Cache cachedDiscounts;
+
+ public ProductHelperWithExpiry() {
+ cachedDiscounts = Cache2kBuilder.of(String.class, Integer.class)
+ .name("discount-expiry")
+ .eternal(false)
+ .expireAfterWrite(5, TimeUnit.MILLISECONDS)
+ .entryCapacity(100)
+ .build();
+
+ initDiscountCache("Sports", 20);
+ }
+
+ public void initDiscountCache(String productType, Integer value) {
+ cachedDiscounts.put(productType, value);
+ }
+
+ public Integer getDiscount(String productType) {
+ Integer discount = cachedDiscounts.get(productType);
+ if (Objects.isNull(discount)) {
+ LOGGER.info("Discount for {} not found.", productType);
+ discount = 0;
+ } else {
+ LOGGER.info("Discount for {} found.", productType);
+ }
+ return discount;
+ }
+
+}
diff --git a/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperUnitTest.java b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperUnitTest.java
new file mode 100644
index 0000000000..69da2591dd
--- /dev/null
+++ b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperUnitTest.java
@@ -0,0 +1,17 @@
+package com.baeldung.cache2k;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class ProductHelperUnitTest {
+
+ ProductHelper productHelper = new ProductHelper();
+
+ @Test
+ public void whenInvokedGetDiscount_thenGetItFromCache() {
+ assertTrue(productHelper.getDiscount("Sports") == 20);
+ assertTrue(productHelper.getDiscount("Electronics") == 0);
+ }
+
+}
diff --git a/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperUsingLoaderUnitTest.java b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperUsingLoaderUnitTest.java
new file mode 100644
index 0000000000..2656e75cab
--- /dev/null
+++ b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperUsingLoaderUnitTest.java
@@ -0,0 +1,17 @@
+package com.baeldung.cache2k;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class ProductHelperUsingLoaderUnitTest {
+
+ ProductHelperUsingLoader productHelper = new ProductHelperUsingLoader();
+
+ @Test
+ public void whenInvokedGetDiscount_thenPopulateCache() {
+ assertTrue(productHelper.getDiscount("Sports") == 20);
+ assertTrue(productHelper.getDiscount("Electronics") == 10);
+ }
+
+}
diff --git a/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperWithEventListenerUnitTest.java b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperWithEventListenerUnitTest.java
new file mode 100644
index 0000000000..7bf08232f4
--- /dev/null
+++ b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperWithEventListenerUnitTest.java
@@ -0,0 +1,16 @@
+package com.baeldung.cache2k;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class ProductHelperWithEventListenerUnitTest {
+
+ ProductHelperWithEventListener productHelper = new ProductHelperWithEventListener();
+
+ @Test
+ public void whenEntryAddedInCache_thenEventListenerCalled() {
+ assertTrue(productHelper.getDiscount("Sports") == 20);
+ }
+
+}
diff --git a/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperWithExpiryUnitTest.java b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperWithExpiryUnitTest.java
new file mode 100644
index 0000000000..65feba2c70
--- /dev/null
+++ b/libraries-3/src/test/java/com/baeldung/cache2k/ProductHelperWithExpiryUnitTest.java
@@ -0,0 +1,18 @@
+package com.baeldung.cache2k;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class ProductHelperWithExpiryUnitTest {
+
+ ProductHelperWithExpiry productHelper = new ProductHelperWithExpiry();
+
+ @Test
+ public void whenInvokedGetDiscountForExpiredProduct_thenNoDiscount() throws InterruptedException {
+ assertTrue(productHelper.getDiscount("Sports") == 20);
+ Thread.sleep(20);
+ assertTrue(productHelper.getDiscount("Sports") == 0);
+ }
+
+}
diff --git a/open-liberty/pom.xml b/open-liberty/pom.xml
new file mode 100644
index 0000000000..d6588ce49a
--- /dev/null
+++ b/open-liberty/pom.xml
@@ -0,0 +1,130 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ open-liberty
+ 1.0-SNAPSHOT
+ war
+
+
+
+ jakarta.platform
+ jakarta.jakartaee-web-api
+ ${version.jakarta.jakartaee-web-api}
+ provided
+
+
+ org.eclipse.microprofile
+ microprofile
+ ${version.microprofile}
+ pom
+ provided
+
+
+ org.apache.derby
+ derby
+ ${version.derby}
+
+
+
+
+ junit
+ junit
+ ${version.junit}
+ test
+
+
+ org.eclipse
+ yasson
+ ${version.yasson}
+ test
+
+
+ org.apache.cxf
+ cxf-rt-rs-client
+ ${version.cxf-rt-rs-client}
+ test
+
+
+ org.glassfish
+ javax.json
+ ${version.javax.json}
+ test
+
+
+ org.apache.cxf
+ cxf-rt-rs-mp-client
+ ${version.cxf-rt-rs-mp-client}
+ test
+
+
+
+
+ ${project.artifactId}
+
+
+
+ io.openliberty.tools
+ liberty-maven-plugin
+ ${version.liberty-maven-plugin}
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ ${version.maven-dependency-plugin}
+
+
+ copy-derby-dependency
+ package
+
+ copy-dependencies
+
+
+ derby
+ ${project.build.directory}/liberty/wlp/usr/shared/resources/
+
+ ${testServerHttpPort}
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-war-plugin
+ ${version.maven-war-plugin}
+
+
+
+
+
+
+ 1.8
+ 1.8
+ UTF-8
+ UTF-8
+ false
+
+
+ 8.0.0
+ 3.2
+ 10.14.2.0
+ 3.1
+ 2.10
+ 3.2.3
+ 4.12
+ 1.0.5
+ 3.2.6
+ 1.0.4
+ 3.3.1
+
+
+ openliberty
+ 9080
+ 9443
+ 7070
+
+
\ No newline at end of file
diff --git a/open-liberty/src/main/java/com/baeldung/openliberty/person/dao/PersonDao.java b/open-liberty/src/main/java/com/baeldung/openliberty/person/dao/PersonDao.java
new file mode 100644
index 0000000000..e2d408d8b0
--- /dev/null
+++ b/open-liberty/src/main/java/com/baeldung/openliberty/person/dao/PersonDao.java
@@ -0,0 +1,24 @@
+package com.baeldung.openliberty.person.dao;
+
+import javax.enterprise.context.RequestScoped;
+import javax.persistence.EntityManager;
+import javax.persistence.PersistenceContext;
+
+import com.baeldung.openliberty.person.model.Person;
+
+@RequestScoped
+public class PersonDao {
+
+ @PersistenceContext(name = "jpa-unit")
+ private EntityManager em;
+
+ public Person createPerson(Person person) {
+ em.persist(person);
+ return person;
+ }
+
+ public Person readPerson(int personId) {
+ return em.find(Person.class, personId);
+ }
+
+}
\ No newline at end of file
diff --git a/open-liberty/src/main/java/com/baeldung/openliberty/person/model/Person.java b/open-liberty/src/main/java/com/baeldung/openliberty/person/model/Person.java
new file mode 100644
index 0000000000..79e8c16911
--- /dev/null
+++ b/open-liberty/src/main/java/com/baeldung/openliberty/person/model/Person.java
@@ -0,0 +1,58 @@
+package com.baeldung.openliberty.person.model;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+
+@Entity
+public class Person {
+
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ @Id
+ private int id;
+
+ private String username;
+ private String email;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public Person(int id, @NotBlank String username, @Email String email) {
+ super();
+ this.id = id;
+ this.username = username;
+ this.email = email;
+ }
+
+ public Person() {
+ super();
+ }
+
+ public String toString() {
+ return this.id + ":" +this.username;
+ }
+}
diff --git a/open-liberty/src/main/java/com/baeldung/openliberty/person/resource/PersonResource.java b/open-liberty/src/main/java/com/baeldung/openliberty/person/resource/PersonResource.java
new file mode 100644
index 0000000000..0fb86860b8
--- /dev/null
+++ b/open-liberty/src/main/java/com/baeldung/openliberty/person/resource/PersonResource.java
@@ -0,0 +1,52 @@
+package com.baeldung.openliberty.person.resource;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Inject;
+import javax.transaction.Transactional;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+
+import com.baeldung.openliberty.person.dao.PersonDao;
+import com.baeldung.openliberty.person.model.Person;
+
+@RequestScoped
+@Path("persons")
+public class PersonResource {
+
+ @Inject
+ private PersonDao personDao;
+
+ @GET
+ @Produces(MediaType.APPLICATION_JSON)
+ public List getAllPersons() {
+ return Arrays.asList(new Person(1, "normanlewis", "normanlewis@email.com"));
+ }
+
+ @POST
+ @Consumes(MediaType.APPLICATION_JSON)
+ @Transactional
+ public Response addPerson(Person person) {
+ personDao.createPerson(person);
+ String respMessage = "Person #" + person.getId() + " created successfully.";
+ return Response.status(Response.Status.CREATED).entity(respMessage).build();
+ }
+
+ @GET
+ @Path("{id}")
+ @Produces(MediaType.APPLICATION_JSON)
+ @Transactional
+ public Person getPerson(@PathParam("id") int id) {
+ Person person = personDao.readPerson(id);
+ return person;
+ }
+}
diff --git a/open-liberty/src/main/java/com/baeldung/openliberty/rest/ApiApplication.java b/open-liberty/src/main/java/com/baeldung/openliberty/rest/ApiApplication.java
new file mode 100644
index 0000000000..176eaccaed
--- /dev/null
+++ b/open-liberty/src/main/java/com/baeldung/openliberty/rest/ApiApplication.java
@@ -0,0 +1,9 @@
+package com.baeldung.openliberty.rest;
+
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.core.Application;
+
+@ApplicationPath("/api")
+public class ApiApplication extends Application {
+
+}
diff --git a/open-liberty/src/main/java/com/baeldung/openliberty/rest/consumes/RestConsumer.java b/open-liberty/src/main/java/com/baeldung/openliberty/rest/consumes/RestConsumer.java
new file mode 100644
index 0000000000..8073c408dd
--- /dev/null
+++ b/open-liberty/src/main/java/com/baeldung/openliberty/rest/consumes/RestConsumer.java
@@ -0,0 +1,18 @@
+package com.baeldung.openliberty.rest.consumes;
+
+import javax.ws.rs.client.Client;
+import javax.ws.rs.client.ClientBuilder;
+import javax.ws.rs.core.Response;
+
+public class RestConsumer {
+
+ public static String consumeWithJsonb(String targetUrl) {
+ Client client = ClientBuilder.newClient();
+ Response response = client.target(targetUrl).request().get();
+ String result = response.readEntity(String.class);
+ response.close();
+ client.close();
+ return result;
+ }
+
+}
diff --git a/open-liberty/src/main/java/com/baeldung/openliberty/servlet/AppServlet.java b/open-liberty/src/main/java/com/baeldung/openliberty/servlet/AppServlet.java
new file mode 100644
index 0000000000..d8c8d159c4
--- /dev/null
+++ b/open-liberty/src/main/java/com/baeldung/openliberty/servlet/AppServlet.java
@@ -0,0 +1,27 @@
+package com.baeldung.openliberty.servlet;
+
+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;
+
+@WebServlet(urlPatterns="/app")
+public class AppServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ String htmlOutput = "Hello! Welcome to Open Liberty
";
+ response.getWriter().append(htmlOutput);
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ doGet(request, response);
+ }
+}
\ No newline at end of file
diff --git a/open-liberty/src/main/liberty/config/server.xml b/open-liberty/src/main/liberty/config/server.xml
new file mode 100644
index 0000000000..bc99905058
--- /dev/null
+++ b/open-liberty/src/main/liberty/config/server.xml
@@ -0,0 +1,28 @@
+
+
+ mpHealth-2.0
+ servlet-4.0
+ jaxrs-2.1
+ jsonp-1.1
+ jsonb-1.0
+ cdi-2.0
+ jpa-2.2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/open-liberty/src/main/resources/META-INF/persistence.xml b/open-liberty/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000000..ca8ad1a5c9
--- /dev/null
+++ b/open-liberty/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,14 @@
+
+
+
+ jdbc/jpadatasource
+
+
+
+
+
+
\ No newline at end of file
diff --git a/open-liberty/src/test/java/com/baeldung/openliberty/RestClientTest.java b/open-liberty/src/test/java/com/baeldung/openliberty/RestClientTest.java
new file mode 100644
index 0000000000..4978483ca0
--- /dev/null
+++ b/open-liberty/src/test/java/com/baeldung/openliberty/RestClientTest.java
@@ -0,0 +1,40 @@
+package com.baeldung.openliberty;
+
+import static org.junit.Assert.assertEquals;
+
+import javax.json.bind.JsonbBuilder;
+
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import com.baeldung.openliberty.person.model.Person;
+import com.baeldung.openliberty.rest.consumes.RestConsumer;
+
+public class RestClientTest {
+
+ private static String BASE_URL;
+
+ private final String API_PERSON = "api/persons";
+
+ @BeforeClass
+ public static void oneTimeSetup() {
+ BASE_URL = "http://localhost:9080/";
+ }
+
+ @Test
+ public void testSuite() {
+ //run the test only when liberty server is started
+ //this.whenConsumeWithJsonb_thenGetPerson();
+ }
+
+ public void whenConsumeWithJsonb_thenGetPerson() {
+ String url = BASE_URL + API_PERSON + "/1";
+ String result = RestConsumer.consumeWithJsonb(url);
+
+ Person person = JsonbBuilder.create().fromJson(result, Person.class);
+ assertEquals(1, person.getId());
+ assertEquals("normanlewis", person.getUsername());
+ assertEquals("normanlewis@email.com", person.getEmail());
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index 2a0ae0d8d8..6e6316edd6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -538,6 +538,7 @@
netflix-modules
ninja
+ open-liberty
oauth2-framework-impl
optaplanner
@@ -637,30 +638,8 @@
spring-batch
spring-bom
-
- spring-boot
- spring-boot-modules
- spring-boot-angular
- spring-boot-bootstrap
-
- spring-boot-client
- spring-boot-config-jpa-error
- spring-boot-deployment
- spring-boot-di
- spring-boot-environment
- spring-boot-flowable
- spring-boot-jasypt
- spring-boot-libraries
- spring-boot-mvc-2
spring-boot-parent
- spring-boot-performance
- spring-boot-property-exp
-
spring-boot-rest
- spring-boot-runtime
- spring-boot-runtime/disabling-console-jul
- spring-boot-runtime/disabling-console-log4j2
- spring-boot-runtime/disabling-console-logback
spring-boot-security
spring-caching
@@ -1068,6 +1047,7 @@
netflix-modules
ninja
+ open-liberty
oauth2-framework-impl
optaplanner
@@ -1159,31 +1139,8 @@
spring-batch
spring-bom
-
- spring-boot
- spring-boot-modules
- spring-boot-angular
- spring-boot-bootstrap
-
- spring-boot-client
- spring-boot-config-jpa-error
- spring-boot-deployment
- spring-boot-di
- spring-boot-environment
- spring-boot-flowable
- spring-boot-jasypt
- spring-boot-libraries
- spring-boot-mvc
- spring-boot-mvc-2
spring-boot-parent
- spring-boot-performance
- spring-boot-property-exp
-
spring-boot-rest
- spring-boot-runtime
- spring-boot-runtime/disabling-console-jul
- spring-boot-runtime/disabling-console-log4j2
- spring-boot-runtime/disabling-console-logback
spring-boot-security
spring-caching
diff --git a/spring-boot-libraries/.mvn/wrapper/maven-wrapper.jar b/spring-boot-libraries/.mvn/wrapper/maven-wrapper.jar
deleted file mode 100644
index 5fd4d5023f..0000000000
Binary files a/spring-boot-libraries/.mvn/wrapper/maven-wrapper.jar and /dev/null differ
diff --git a/spring-boot-modules/pom.xml b/spring-boot-modules/pom.xml
index 5e5a68b954..e28b077d5c 100644
--- a/spring-boot-modules/pom.xml
+++ b/spring-boot-modules/pom.xml
@@ -14,21 +14,36 @@
+ spring-boot
spring-boot-admin
+ spring-boot-angular
spring-boot-artifacts
- spring-boot-ctx-fluent
spring-boot-autoconfiguration
+ spring-boot-bootstrap
+ spring-boot-client
+ spring-boot-config-jpa-error
+ spring-boot-ctx-fluent
+ spring-boot-deployment
spring-boot-camel
+
spring-boot-custom-starter
spring-boot-crud
spring-boot-data
+ spring-boot-environment
+ spring-boot-flowable
+ spring-boot-jasypt
spring-boot-keycloak
+ spring-boot-libraries
spring-boot-logging-log4j2
spring-boot-kotlin
+ spring-boot-mvc
+ spring-boot-mvc-2
spring-boot-mvc-birt
spring-boot-nashorn
spring-boot-properties
+ spring-boot-property-exp
+ spring-boot-runtime
spring-boot-springdoc
spring-boot-testing
spring-boot-vue
diff --git a/spring-boot-modules/spring-boot-admin/pom.xml b/spring-boot-modules/spring-boot-admin/pom.xml
index 817d4ad00c..f7dc98770a 100644
--- a/spring-boot-modules/spring-boot-admin/pom.xml
+++ b/spring-boot-modules/spring-boot-admin/pom.xml
@@ -19,8 +19,4 @@
spring-boot-admin-client
-
- 2.1.9.RELEASE
-
-
diff --git a/spring-boot-modules/spring-boot-admin/spring-boot-admin-client/pom.xml b/spring-boot-modules/spring-boot-admin/spring-boot-admin-client/pom.xml
index 996bf424f4..8bb8c7bac3 100644
--- a/spring-boot-modules/spring-boot-admin/spring-boot-admin-client/pom.xml
+++ b/spring-boot-modules/spring-boot-admin/spring-boot-admin-client/pom.xml
@@ -58,7 +58,7 @@
- 2.1.6
+ 2.2.2
2.0.4.RELEASE
diff --git a/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml b/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml
index 8ab9291c0c..118b270812 100644
--- a/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml
+++ b/spring-boot-modules/spring-boot-admin/spring-boot-admin-server/pom.xml
@@ -79,8 +79,8 @@
- 2.1.6
- 2.1.6
+ 2.2.2
+ 2.2.2
1.5.7
2.0.4.RELEASE
diff --git a/spring-boot-angular/README.md b/spring-boot-modules/spring-boot-angular/README.md
similarity index 100%
rename from spring-boot-angular/README.md
rename to spring-boot-modules/spring-boot-angular/README.md
diff --git a/spring-boot-angular/pom.xml b/spring-boot-modules/spring-boot-angular/pom.xml
similarity index 96%
rename from spring-boot-angular/pom.xml
rename to spring-boot-modules/spring-boot-angular/pom.xml
index d78761e921..5cfc530100 100644
--- a/spring-boot-angular/pom.xml
+++ b/spring-boot-modules/spring-boot-angular/pom.xml
@@ -12,7 +12,7 @@
com.baeldung
parent-boot-2
0.0.1-SNAPSHOT
- ../parent-boot-2
+ ../../parent-boot-2
diff --git a/spring-boot-angular/src/main/java/com/baeldung/application/Application.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/Application.java
similarity index 97%
rename from spring-boot-angular/src/main/java/com/baeldung/application/Application.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/Application.java
index f1155c3106..0101ea3a3b 100644
--- a/spring-boot-angular/src/main/java/com/baeldung/application/Application.java
+++ b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/Application.java
@@ -1,28 +1,28 @@
-package com.baeldung.application;
-
-import com.baeldung.application.entities.User;
-import com.baeldung.application.repositories.UserRepository;
-import java.util.stream.Stream;
-import org.springframework.boot.CommandLineRunner;
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.context.annotation.Bean;
-
-@SpringBootApplication
-public class Application {
-
- public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
- }
-
- @Bean
- CommandLineRunner init(UserRepository userRepository) {
- return args -> {
- Stream.of("John", "Julie", "Jennifer", "Helen", "Rachel").forEach(name -> {
- User user = new User(name, name.toLowerCase() + "@domain.com");
- userRepository.save(user);
- });
- userRepository.findAll().forEach(System.out::println);
- };
- }
-}
+package com.baeldung.application;
+
+import com.baeldung.application.entities.User;
+import com.baeldung.application.repositories.UserRepository;
+import java.util.stream.Stream;
+import org.springframework.boot.CommandLineRunner;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.annotation.Bean;
+
+@SpringBootApplication
+public class Application {
+
+ public static void main(String[] args) {
+ SpringApplication.run(Application.class, args);
+ }
+
+ @Bean
+ CommandLineRunner init(UserRepository userRepository) {
+ return args -> {
+ Stream.of("John", "Julie", "Jennifer", "Helen", "Rachel").forEach(name -> {
+ User user = new User(name, name.toLowerCase() + "@domain.com");
+ userRepository.save(user);
+ });
+ userRepository.findAll().forEach(System.out::println);
+ };
+ }
+}
diff --git a/spring-boot-angular/src/main/java/com/baeldung/application/controllers/UserController.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/controllers/UserController.java
similarity index 96%
rename from spring-boot-angular/src/main/java/com/baeldung/application/controllers/UserController.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/controllers/UserController.java
index 14c90d5b10..a87ac4e8d1 100644
--- a/spring-boot-angular/src/main/java/com/baeldung/application/controllers/UserController.java
+++ b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/controllers/UserController.java
@@ -1,31 +1,31 @@
-package com.baeldung.application.controllers;
-
-import com.baeldung.application.entities.User;
-import com.baeldung.application.repositories.UserRepository;
-import java.util.List;
-import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-@RestController
-@CrossOrigin(origins = "http://localhost:4200")
-public class UserController {
-
- private final UserRepository userRepository;
-
- public UserController(UserRepository userRepository) {
- this.userRepository = userRepository;
- }
-
- @GetMapping("/users")
- public List getUsers() {
- return (List) userRepository.findAll();
- }
-
- @PostMapping("/users")
- void addUser(@RequestBody User user) {
- userRepository.save(user);
- }
-}
+package com.baeldung.application.controllers;
+
+import com.baeldung.application.entities.User;
+import com.baeldung.application.repositories.UserRepository;
+import java.util.List;
+import org.springframework.web.bind.annotation.CrossOrigin;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@CrossOrigin(origins = "http://localhost:4200")
+public class UserController {
+
+ private final UserRepository userRepository;
+
+ public UserController(UserRepository userRepository) {
+ this.userRepository = userRepository;
+ }
+
+ @GetMapping("/users")
+ public List getUsers() {
+ return (List) userRepository.findAll();
+ }
+
+ @PostMapping("/users")
+ void addUser(@RequestBody User user) {
+ userRepository.save(user);
+ }
+}
diff --git a/spring-boot-angular/src/main/java/com/baeldung/application/entities/User.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/entities/User.java
similarity index 95%
rename from spring-boot-angular/src/main/java/com/baeldung/application/entities/User.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/entities/User.java
index 4c346fa5b9..ea23edc7e2 100644
--- a/spring-boot-angular/src/main/java/com/baeldung/application/entities/User.java
+++ b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/entities/User.java
@@ -1,43 +1,43 @@
-package com.baeldung.application.entities;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class User {
-
- @Id
- @GeneratedValue(strategy = GenerationType.AUTO)
- private long id;
- private final String name;
- private final String email;
-
- public User() {
- this.name = "";
- this.email = "";
- }
-
- public User(String name, String email) {
- this.name = name;
- this.email = email;
- }
-
- public long getId() {
- return id;
- }
-
- public String getName() {
- return name;
- }
-
- public String getEmail() {
- return email;
- }
-
- @Override
- public String toString() {
- return "User{" + "id=" + id + ", name=" + name + ", email=" + email + '}';
- }
-}
+package com.baeldung.application.entities;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class User {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.AUTO)
+ private long id;
+ private final String name;
+ private final String email;
+
+ public User() {
+ this.name = "";
+ this.email = "";
+ }
+
+ public User(String name, String email) {
+ this.name = name;
+ this.email = email;
+ }
+
+ public long getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ @Override
+ public String toString() {
+ return "User{" + "id=" + id + ", name=" + name + ", email=" + email + '}';
+ }
+}
diff --git a/spring-boot-angular/src/main/java/com/baeldung/application/repositories/UserRepository.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/repositories/UserRepository.java
similarity index 97%
rename from spring-boot-angular/src/main/java/com/baeldung/application/repositories/UserRepository.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/repositories/UserRepository.java
index 5a81cadcbe..7bd71c2f86 100644
--- a/spring-boot-angular/src/main/java/com/baeldung/application/repositories/UserRepository.java
+++ b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/application/repositories/UserRepository.java
@@ -1,9 +1,9 @@
-package com.baeldung.application.repositories;
-
-import com.baeldung.application.entities.User;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.stereotype.Repository;
-import org.springframework.web.bind.annotation.CrossOrigin;
-
-@Repository
-public interface UserRepository extends CrudRepository{}
+package com.baeldung.application.repositories;
+
+import com.baeldung.application.entities.User;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+import org.springframework.web.bind.annotation.CrossOrigin;
+
+@Repository
+public interface UserRepository extends CrudRepository{}
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/EcommerceApplication.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/OrderController.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/OrderController.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/OrderController.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/OrderController.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/ProductController.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/ProductController.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/ProductController.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/controller/ProductController.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/dto/OrderProductDto.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ApiExceptionHandler.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/exception/ResourceNotFoundException.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Order.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Order.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Order.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Order.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProduct.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderProductPK.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/OrderStatus.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Product.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Product.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Product.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/model/Product.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderProductRepository.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/OrderRepository.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/repository/ProductRepository.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductService.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderProductServiceImpl.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderService.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderService.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderService.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderService.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/OrderServiceImpl.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductService.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductService.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductService.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductService.java
diff --git a/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java b/spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java
similarity index 100%
rename from spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java
rename to spring-boot-modules/spring-boot-angular/src/main/java/com/baeldung/ecommerce/service/ProductServiceImpl.java
diff --git a/spring-boot-angular/src/main/js/application/.angular-cli.json b/spring-boot-modules/spring-boot-angular/src/main/js/application/.angular-cli.json
similarity index 100%
rename from spring-boot-angular/src/main/js/application/.angular-cli.json
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/.angular-cli.json
diff --git a/spring-boot-angular/src/main/js/application/.editorconfig b/spring-boot-modules/spring-boot-angular/src/main/js/application/.editorconfig
similarity index 100%
rename from spring-boot-angular/src/main/js/application/.editorconfig
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/.editorconfig
diff --git a/spring-boot-angular/src/main/js/application/.gitignore b/spring-boot-modules/spring-boot-angular/src/main/js/application/.gitignore
similarity index 100%
rename from spring-boot-angular/src/main/js/application/.gitignore
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/.gitignore
diff --git a/spring-boot-angular/src/main/js/application/README.md b/spring-boot-modules/spring-boot-angular/src/main/js/application/README.md
similarity index 100%
rename from spring-boot-angular/src/main/js/application/README.md
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/README.md
diff --git a/spring-boot-angular/src/main/js/application/e2e/app.e2e-spec.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/e2e/app.e2e-spec.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/e2e/app.e2e-spec.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/e2e/app.e2e-spec.ts
diff --git a/spring-boot-angular/src/main/js/application/e2e/app.po.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/e2e/app.po.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/e2e/app.po.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/e2e/app.po.ts
diff --git a/spring-boot-angular/src/main/js/application/e2e/tsconfig.e2e.json b/spring-boot-modules/spring-boot-angular/src/main/js/application/e2e/tsconfig.e2e.json
similarity index 100%
rename from spring-boot-angular/src/main/js/application/e2e/tsconfig.e2e.json
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/e2e/tsconfig.e2e.json
diff --git a/spring-boot-angular/src/main/js/application/karma.conf.js b/spring-boot-modules/spring-boot-angular/src/main/js/application/karma.conf.js
similarity index 100%
rename from spring-boot-angular/src/main/js/application/karma.conf.js
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/karma.conf.js
diff --git a/spring-boot-angular/src/main/js/application/package-lock.json b/spring-boot-modules/spring-boot-angular/src/main/js/application/package-lock.json
similarity index 100%
rename from spring-boot-angular/src/main/js/application/package-lock.json
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/package-lock.json
diff --git a/spring-boot-angular/src/main/js/application/package.json b/spring-boot-modules/spring-boot-angular/src/main/js/application/package.json
similarity index 100%
rename from spring-boot-angular/src/main/js/application/package.json
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/package.json
diff --git a/spring-boot-angular/src/main/js/application/protractor.conf.js b/spring-boot-modules/spring-boot-angular/src/main/js/application/protractor.conf.js
similarity index 100%
rename from spring-boot-angular/src/main/js/application/protractor.conf.js
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/protractor.conf.js
diff --git a/spring-boot-angular/src/main/js/application/src/app/app-routing.module.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app-routing.module.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/app-routing.module.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app-routing.module.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/app.component.css b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.css
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/app.component.css
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.css
diff --git a/spring-boot-angular/src/main/js/application/src/app/app.component.html b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.html
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/app.component.html
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.html
diff --git a/spring-boot-angular/src/main/js/application/src/app/app.component.spec.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.spec.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/app.component.spec.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.spec.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/app.component.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/app.component.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.component.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/app.module.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.module.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/app.module.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/app.module.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/model/user.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/model/user.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/model/user.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/model/user.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/service/user.service.spec.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/service/user.service.spec.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/service/user.service.spec.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/service/user.service.spec.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/service/user.service.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/service/user.service.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/service/user.service.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/service/user.service.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.css b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.css
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.css
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.css
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.html b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.html
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.html
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.html
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.spec.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.spec.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.spec.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.spec.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-form/user-form.component.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.css b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.css
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.css
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.css
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.html b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.html
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.html
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.html
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.spec.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.spec.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.spec.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.spec.ts
diff --git a/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/app/user-list/user-list.component.ts
diff --git a/spring-boot-angular/src/main/js/application/src/assets/.gitkeep b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/assets/.gitkeep
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/assets/.gitkeep
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/assets/.gitkeep
diff --git a/spring-boot-angular/src/main/js/application/src/environments/environment.prod.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/environments/environment.prod.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/environments/environment.prod.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/environments/environment.prod.ts
diff --git a/spring-boot-angular/src/main/js/application/src/environments/environment.ts b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/environments/environment.ts
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/environments/environment.ts
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/environments/environment.ts
diff --git a/spring-boot-angular/src/main/js/application/src/favicon.ico b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/favicon.ico
similarity index 100%
rename from spring-boot-angular/src/main/js/application/src/favicon.ico
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/favicon.ico
diff --git a/spring-boot-angular/src/main/js/application/src/index.html b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/index.html
similarity index 98%
rename from spring-boot-angular/src/main/js/application/src/index.html
rename to spring-boot-modules/spring-boot-angular/src/main/js/application/src/index.html
index 1ce7ff1ca6..398190f439 100644
--- a/spring-boot-angular/src/main/js/application/src/index.html
+++ b/spring-boot-modules/spring-boot-angular/src/main/js/application/src/index.html
@@ -14,4 +14,4 @@
-