From 6762557f1ec4e0731aa8291d02b8e93ce91b966a Mon Sep 17 00:00:00 2001 From: fejera Date: Sun, 17 Nov 2019 15:04:03 +0100 Subject: [PATCH 001/157] added live-all profile to root pom --- pom.xml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/pom.xml b/pom.xml index bc4c38f386..63561cb65e 100644 --- a/pom.xml +++ b/pom.xml @@ -1671,6 +1671,39 @@ + + + live-all + + + + + org.apache.maven.plugins + maven-surefire-plugin + + + **/SpringContextTest.java + **/*UnitTest.java + **/*IntegrationTest.java + **/*IntTest.java + **/*LongRunningUnitTest.java + **/*ManualTest.java + **/*JdbcTest.java + + + **/*LiveTest.java + + + + + + + + + + + + From ae8ef36227de957b2696acf94bb782941dcefe1a Mon Sep 17 00:00:00 2001 From: fejera Date: Sun, 17 Nov 2019 15:05:58 +0100 Subject: [PATCH 002/157] added live-test resources --- persistence-modules/spring-data-mongodb/live-test.sh | 11 +++++++++++ .../spring-data-mongodb/live-test/Dockerfile | 8 ++++++++ .../spring-data-mongodb/live-test/init-session.js | 1 + 3 files changed, 20 insertions(+) create mode 100755 persistence-modules/spring-data-mongodb/live-test.sh create mode 100644 persistence-modules/spring-data-mongodb/live-test/Dockerfile create mode 100644 persistence-modules/spring-data-mongodb/live-test/init-session.js diff --git a/persistence-modules/spring-data-mongodb/live-test.sh b/persistence-modules/spring-data-mongodb/live-test.sh new file mode 100755 index 0000000000..bb513a90bb --- /dev/null +++ b/persistence-modules/spring-data-mongodb/live-test.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +docker image build -t spring-data-mongodb:live-test live-test/ + +docker run -p 27017:27017 --name spring-data-mongodb-live-test -it spring-data-mongodb:live-test +#wait + +mvn clean compile test -P live-all + +docker stop spring-data-mongodb-live-test +docker rm spring-data-mongodb-live-test diff --git a/persistence-modules/spring-data-mongodb/live-test/Dockerfile b/persistence-modules/spring-data-mongodb/live-test/Dockerfile new file mode 100644 index 0000000000..9e3634feb0 --- /dev/null +++ b/persistence-modules/spring-data-mongodb/live-test/Dockerfile @@ -0,0 +1,8 @@ +FROM mongo:4.2.1 + +COPY init-session.js /docker-entrypoint-initdb.d/ + +EXPOSE 27017 + +HEALTHCHECK --interval=5s --timeout=3s --start-period=10s CMD mongo db.stats() +CMD ["mongod", "--replSet", "rs0"] diff --git a/persistence-modules/spring-data-mongodb/live-test/init-session.js b/persistence-modules/spring-data-mongodb/live-test/init-session.js new file mode 100644 index 0000000000..2e968884cc --- /dev/null +++ b/persistence-modules/spring-data-mongodb/live-test/init-session.js @@ -0,0 +1 @@ +rs.initiate(); From 23fb4ae451fef29cb5a81d486542e32cb4d5b979 Mon Sep 17 00:00:00 2001 From: fejera Date: Sun, 24 Nov 2019 12:42:59 +0100 Subject: [PATCH 003/157] cleaned up and documented live testing script usage --- persistence-modules/spring-data-mongodb/LIVE-TEST.md | 9 +++++++++ .../spring-data-mongodb/live-test-setup.sh | 5 +++++ .../spring-data-mongodb/live-test-teardown.sh | 4 ++++ persistence-modules/spring-data-mongodb/live-test.sh | 8 -------- 4 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 persistence-modules/spring-data-mongodb/LIVE-TEST.md create mode 100644 persistence-modules/spring-data-mongodb/live-test-setup.sh create mode 100644 persistence-modules/spring-data-mongodb/live-test-teardown.sh diff --git a/persistence-modules/spring-data-mongodb/LIVE-TEST.md b/persistence-modules/spring-data-mongodb/LIVE-TEST.md new file mode 100644 index 0000000000..9da1ea249e --- /dev/null +++ b/persistence-modules/spring-data-mongodb/LIVE-TEST.md @@ -0,0 +1,9 @@ +========= + +## Spring Data MongoDB Live Testing + + +There are 3 scripts to simplify running live tests: +1. `live-test-setup.sh` builds a docker image with the necessary setup and runs it. The environment is ready, when the log stops - it takes approximately 30 seconds. +2. `live-test.sh` runs the live tests (but no other tests). +3. `live-test-setup.sh` stops and removes the docker image. diff --git a/persistence-modules/spring-data-mongodb/live-test-setup.sh b/persistence-modules/spring-data-mongodb/live-test-setup.sh new file mode 100644 index 0000000000..37e6c48dbd --- /dev/null +++ b/persistence-modules/spring-data-mongodb/live-test-setup.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +docker image build -t spring-data-mongodb:live-test live-test/ + +docker run -p 27017:27017 --name spring-data-mongodb-live-test spring-data-mongodb:live-test diff --git a/persistence-modules/spring-data-mongodb/live-test-teardown.sh b/persistence-modules/spring-data-mongodb/live-test-teardown.sh new file mode 100644 index 0000000000..a29163bc7a --- /dev/null +++ b/persistence-modules/spring-data-mongodb/live-test-teardown.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +docker stop spring-data-mongodb-live-test +docker rm spring-data-mongodb-live-test diff --git a/persistence-modules/spring-data-mongodb/live-test.sh b/persistence-modules/spring-data-mongodb/live-test.sh index bb513a90bb..5a079bdac8 100755 --- a/persistence-modules/spring-data-mongodb/live-test.sh +++ b/persistence-modules/spring-data-mongodb/live-test.sh @@ -1,11 +1,3 @@ #!/bin/bash -docker image build -t spring-data-mongodb:live-test live-test/ - -docker run -p 27017:27017 --name spring-data-mongodb-live-test -it spring-data-mongodb:live-test -#wait - mvn clean compile test -P live-all - -docker stop spring-data-mongodb-live-test -docker rm spring-data-mongodb-live-test From 1afd7a40e20ba55edd147e2f95c873f46c3b8539 Mon Sep 17 00:00:00 2001 From: fejera Date: Mon, 2 Dec 2019 10:18:42 +0100 Subject: [PATCH 004/157] moved live test resources to src/live-test/resources --- persistence-modules/spring-data-mongodb/live-test-setup.sh | 2 +- .../{live-test => src/live-test/resources}/Dockerfile | 0 .../{live-test => src/live-test/resources}/init-session.js | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename persistence-modules/spring-data-mongodb/{live-test => src/live-test/resources}/Dockerfile (100%) rename persistence-modules/spring-data-mongodb/{live-test => src/live-test/resources}/init-session.js (100%) diff --git a/persistence-modules/spring-data-mongodb/live-test-setup.sh b/persistence-modules/spring-data-mongodb/live-test-setup.sh index 37e6c48dbd..e8e0437083 100644 --- a/persistence-modules/spring-data-mongodb/live-test-setup.sh +++ b/persistence-modules/spring-data-mongodb/live-test-setup.sh @@ -1,5 +1,5 @@ #!/bin/bash -docker image build -t spring-data-mongodb:live-test live-test/ +docker image build -t spring-data-mongodb:live-test src/live-test/resources/ docker run -p 27017:27017 --name spring-data-mongodb-live-test spring-data-mongodb:live-test diff --git a/persistence-modules/spring-data-mongodb/live-test/Dockerfile b/persistence-modules/spring-data-mongodb/src/live-test/resources/Dockerfile similarity index 100% rename from persistence-modules/spring-data-mongodb/live-test/Dockerfile rename to persistence-modules/spring-data-mongodb/src/live-test/resources/Dockerfile diff --git a/persistence-modules/spring-data-mongodb/live-test/init-session.js b/persistence-modules/spring-data-mongodb/src/live-test/resources/init-session.js similarity index 100% rename from persistence-modules/spring-data-mongodb/live-test/init-session.js rename to persistence-modules/spring-data-mongodb/src/live-test/resources/init-session.js From 84c71c639906885edb1b343d7425a872081cc55c Mon Sep 17 00:00:00 2001 From: cxmshine <13724591964@163.com> Date: Thu, 9 Jan 2020 23:45:10 +0800 Subject: [PATCH 005/157] update AddressMapper.java --- .../main/java/com/baeldung/mybatis/mapper/AddressMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java b/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java index e96a4837db..c79ef667bd 100644 --- a/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java +++ b/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java @@ -14,8 +14,8 @@ public interface AddressMapper { @Results(value = { @Result(property = "addressId", column = "addressId"), @Result(property = "streetAddress", column = "streetAddress"), @Result(property = "person", column = "personId", javaType = Person.class, one = @One(select = "getPerson")) }) - Address getAddresses(Integer addressID); + Address getAddresses(Integer addressId); @Select("SELECT personId FROM address WHERE addressId = #{addressId})") - Person getPerson(Integer personId); + Person getPerson(Integer addressId); } From aab469525e014c4a9916bffad20c52dbf0922bc3 Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Sun, 8 Mar 2020 19:58:47 +0200 Subject: [PATCH 006/157] kkaravitis@gmail.com hexagonal architecture in java --- .../hexagonal-architecture-example/pom.xml | 34 ++++++++++++++ .../adapters/inbound/CommandLineAdapter.java | 46 +++++++++++++++++++ .../adapters/outbound/CocktailRepository.java | 23 ++++++++++ .../example/application/domain/Cocktail.java | 21 +++++++++ .../application/ports/in/AddCocktailPort.java | 24 ++++++++++ .../ports/in/GetCocktailsPort.java | 9 ++++ .../service/AddCocktailService.java | 19 ++++++++ .../service/GetCocktailsService.java | 20 ++++++++ .../infrastructure/CocktailsMenuApp.java | 43 +++++++++++++++++ .../application/AddCocktailUnitTest.java | 42 +++++++++++++++++ .../application/GetCocktailsUnitTest.java | 41 +++++++++++++++++ patterns/pom.xml | 1 + 12 files changed, 323 insertions(+) create mode 100644 patterns/hexagonal-architecture-example/pom.xml create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java create mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java create mode 100644 patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java create mode 100644 patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java diff --git a/patterns/hexagonal-architecture-example/pom.xml b/patterns/hexagonal-architecture-example/pom.xml new file mode 100644 index 0000000000..e5439bf8f7 --- /dev/null +++ b/patterns/hexagonal-architecture-example/pom.xml @@ -0,0 +1,34 @@ + + 4.0.0 + hexagonal-architecture-example + 1.0 + jar + + com.baeldung + patterns + 1.0.0-SNAPSHOT + + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.2.0 + + + + true + lib/ + com.baeldung.hexagonal.architecture.example.infrastructure.CocktailsMenuApp + + + + + + + + \ No newline at end of file diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java new file mode 100644 index 0000000000..4f85639009 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java @@ -0,0 +1,46 @@ +package com.baeldung.hexagonal.architecture.example.adapters.inbound; + +import java.util.List; +import java.util.Scanner; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; +import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort; +import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort.AddCocktailCommand; +import com.baeldung.hexagonal.architecture.example.application.ports.in.GetCocktailsPort; + +public class CommandLineAdapter { + private AddCocktailPort addCocktailPort; + private GetCocktailsPort listCocktailsPort; + private Scanner scanner; + + public CommandLineAdapter(Scanner scanner, AddCocktailPort addCocktailPort, GetCocktailsPort listCocktailsPort) { + this.addCocktailPort = addCocktailPort; + this.listCocktailsPort = listCocktailsPort; + this.scanner = scanner; + } + + public void addCocktail() { + try { + System.out.println("Enter the name of the cocktail"); + scanner.nextLine(); + String name = scanner.nextLine(); + System.out.println("Enter the price of the cocktail"); + double price = scanner.nextDouble(); + scanner.nextLine(); + AddCocktailCommand command = new AddCocktailCommand(name, price); + addCocktailPort.addCocktail(command); + } catch (Exception exception) { + System.out.println("Error during adding a new Cocktail"); + } + } + + public void listCocktails() { + List cocktailList = listCocktailsPort.getCocktails(); + System.out.println("Cocktails menu: \n"); + cocktailList.stream() + .forEach(cocktail -> { + System.out.println(cocktail.getName() + "\n" + + "price: " + cocktail.getPrice() + " $ " + "\n"); + }); + } +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java new file mode 100644 index 0000000000..8b8e4d1d54 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java @@ -0,0 +1,23 @@ +package com.baeldung.hexagonal.architecture.example.adapters.outbound; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; +import com.baeldung.hexagonal.architecture.example.application.ports.out.FetchCocktailsPort; +import com.baeldung.hexagonal.architecture.example.application.ports.out.SaveCocktailPort; + +public class CocktailRepository implements FetchCocktailsPort, SaveCocktailPort { + + private Map store = new HashMap<>(); + + public List fetchCocktails() { + return new ArrayList<>(store.values()); + } + + public void saveCocktail(Cocktail cocktail) { + store.put(cocktail.getName(), cocktail); + } +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java new file mode 100644 index 0000000000..878d667bf6 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java @@ -0,0 +1,21 @@ +package com.baeldung.hexagonal.architecture.example.application.domain; + +public class Cocktail { + + private String name; + + private double price; + + public Cocktail(String name, double price) { + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public double getPrice() { + return price; + } +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java new file mode 100644 index 0000000000..49138a2b34 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java @@ -0,0 +1,24 @@ +package com.baeldung.hexagonal.architecture.example.application.ports.in; + +public interface AddCocktailPort { + + void addCocktail(AddCocktailCommand command); + + class AddCocktailCommand { + private String name; + private double price; + + public AddCocktailCommand(String name, double price) { + this.name = name; + this.price = price; + } + + public String getName() { + return name; + } + + public double getPrice() { + return price; + } + } +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java new file mode 100644 index 0000000000..1d46bbd722 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java @@ -0,0 +1,9 @@ +package com.baeldung.hexagonal.architecture.example.application.ports.in; + +import java.util.List; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; + +public interface GetCocktailsPort { + List getCocktails(); +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java new file mode 100644 index 0000000000..81855853e8 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java @@ -0,0 +1,19 @@ +package com.baeldung.hexagonal.architecture.example.application.service; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; +import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort; +import com.baeldung.hexagonal.architecture.example.application.ports.out.SaveCocktailPort; + +public class AddCocktailService implements AddCocktailPort { + private SaveCocktailPort saveCocktailPort; + + public AddCocktailService(SaveCocktailPort saveCocktailPort) { + this.saveCocktailPort = saveCocktailPort; + } + + @Override + public void addCocktail(AddCocktailCommand command) { + Cocktail cocktail = new Cocktail(command.getName(), command.getPrice()); + saveCocktailPort.saveCocktail(cocktail); + } +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java new file mode 100644 index 0000000000..a1459f2372 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java @@ -0,0 +1,20 @@ +package com.baeldung.hexagonal.architecture.example.application.service; + +import java.util.List; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; +import com.baeldung.hexagonal.architecture.example.application.ports.in.GetCocktailsPort; +import com.baeldung.hexagonal.architecture.example.application.ports.out.FetchCocktailsPort; + +public class GetCocktailsService implements GetCocktailsPort { + private FetchCocktailsPort fetchCocktailsPort; + + public GetCocktailsService(FetchCocktailsPort fetchCocktailsPort) { + this.fetchCocktailsPort = fetchCocktailsPort; + } + + @Override + public List getCocktails() { + return fetchCocktailsPort.fetchCocktails(); + } +} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java new file mode 100644 index 0000000000..a808d1f85e --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java @@ -0,0 +1,43 @@ +package com.baeldung.hexagonal.architecture.example.infrastructure; + +import java.util.Scanner; + +import com.baeldung.hexagonal.architecture.example.adapters.inbound.CommandLineAdapter; +import com.baeldung.hexagonal.architecture.example.adapters.outbound.CocktailRepository; +import com.baeldung.hexagonal.architecture.example.application.service.AddCocktailService; +import com.baeldung.hexagonal.architecture.example.application.service.GetCocktailsService; + +public class CocktailsMenuApp { + private static final String ADD = "add"; + private static final String LIST = "list"; + private static final String EXIT = "exit"; + private static final String HELP_TEXT = "Enter command \n" + + ADD + " - add a new Cocktail to the menu \n" + + LIST + " - list cocktails \n" + + EXIT + " - exit \n"; + private static Scanner SCANNER = new Scanner(System.in); + + public static void main(String[] args) { + CocktailRepository cocktailRepository = new CocktailRepository(); + AddCocktailService addCocktailService = new AddCocktailService(cocktailRepository); + GetCocktailsService getCocktailsMenuService = new GetCocktailsService(cocktailRepository); + CommandLineAdapter commandLineAdapter = new CommandLineAdapter(SCANNER, addCocktailService, getCocktailsMenuService); + runWith(commandLineAdapter); + } + + public static void runWith(CommandLineAdapter adapter) { + String command = null; + while (!EXIT.equalsIgnoreCase(command)) { + System.out.println(HELP_TEXT); + command = SCANNER.next(); + switch (command.toLowerCase()) { + case ADD: + adapter.addCocktail(); + break; + case LIST: + adapter.listCocktails(); + break; + } + } + } +} diff --git a/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java b/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java new file mode 100644 index 0000000000..bff8550464 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java @@ -0,0 +1,42 @@ +package com.baeldung.hexagonal.architecture.example.application; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; +import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort.AddCocktailCommand; +import com.baeldung.hexagonal.architecture.example.application.ports.out.SaveCocktailPort; +import com.baeldung.hexagonal.architecture.example.application.service.AddCocktailService; + +class AddCocktailUnitTest { + + SaveCocktailPort saveCocktailPort; + AddCocktailService addCocktailService; + + @BeforeEach + void setup() { + saveCocktailPort = mock(SaveCocktailPort.class); + addCocktailService = new AddCocktailService(saveCocktailPort); + } + + @Test + void whenAddingACocktail_thenTheCocktailIsSaved() { + AddCocktailCommand command = mock(AddCocktailCommand.class); + when(command.getName()).thenReturn("mockito"); + when(command.getPrice()).thenReturn(9.50); + ArgumentCaptor captor = ArgumentCaptor.forClass(Cocktail.class); + + addCocktailService.addCocktail(command); + + Mockito.verify(saveCocktailPort).saveCocktail(captor.capture()); + Cocktail cocktailThatSaved = captor.getValue(); + assertEquals(command.getName(), cocktailThatSaved.getName()); + assertEquals(command.getPrice(), cocktailThatSaved.getPrice()); + } + +} diff --git a/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java b/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java new file mode 100644 index 0000000000..5933f71895 --- /dev/null +++ b/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java @@ -0,0 +1,41 @@ +package com.baeldung.hexagonal.architecture.example.application; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; +import com.baeldung.hexagonal.architecture.example.application.ports.out.FetchCocktailsPort; +import com.baeldung.hexagonal.architecture.example.application.service.GetCocktailsService; + +class GetCocktailsUnitTest { + + FetchCocktailsPort fetchCocktailsPort; + GetCocktailsService getCocktailsService; + + @BeforeEach + void setup() { + fetchCocktailsPort = mock(FetchCocktailsPort.class); + getCocktailsService = new GetCocktailsService(fetchCocktailsPort); + } + + @Test + void whenGettingCocktails_thenCocktailsFetchedFromPortAndReturned() { + Cocktail cocktail = mock(Cocktail.class); + when(cocktail.getName()).thenReturn("zombie"); + when(cocktail.getPrice()).thenReturn(12.00); + when(fetchCocktailsPort.fetchCocktails()).thenReturn(List.of(cocktail)); + + List cocktails = getCocktailsService.getCocktails(); + + assertEquals(1, cocktails.size()); + assertEquals(cocktail.getName(), cocktails.get(0).getName()); + assertEquals(cocktail.getPrice(), cocktails.get(0).getPrice()); + } + +} diff --git a/patterns/pom.xml b/patterns/pom.xml index 4c17055231..7631d8bbb0 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -24,6 +24,7 @@ front-controller intercepting-filter solid + hexagonal-architecture-example From 0a5fbbe0e7626062cf5810970b07e65c1472bcbe Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Mon, 16 Mar 2020 16:55:14 -0400 Subject: [PATCH 007/157] Moved NullAwayExample.java to libraries-3. Updated the libraries-3 README --- libraries-3/README.md | 1 + .../src/main/java/com/baeldung/nullaway/NullAwayExample.java | 0 2 files changed, 1 insertion(+) rename {libraries => libraries-3}/src/main/java/com/baeldung/nullaway/NullAwayExample.java (100%) diff --git a/libraries-3/README.md b/libraries-3/README.md index 404045e6b1..2692d606f3 100644 --- a/libraries-3/README.md +++ b/libraries-3/README.md @@ -12,3 +12,4 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m - [Guide to the Cactoos Library](https://www.baeldung.com/java-cactoos) - [Parsing Command-Line Parameters with Airline](https://www.baeldung.com/java-airline) - [Introduction to cache2k](https://www.baeldung.com/java-cache2k) +- [Using NullAway to Avoid NullPointerExceptions](https://www.baeldung.com/java-nullaway) diff --git a/libraries/src/main/java/com/baeldung/nullaway/NullAwayExample.java b/libraries-3/src/main/java/com/baeldung/nullaway/NullAwayExample.java similarity index 100% rename from libraries/src/main/java/com/baeldung/nullaway/NullAwayExample.java rename to libraries-3/src/main/java/com/baeldung/nullaway/NullAwayExample.java From f55a86f19f742f20ff139095c7d24994953f2399 Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Tue, 17 Mar 2020 15:55:04 +0200 Subject: [PATCH 008/157] Removed evaluation article code --- .../hexagonal-architecture-example/pom.xml | 34 -------------- .../adapters/inbound/CommandLineAdapter.java | 46 ------------------- .../adapters/outbound/CocktailRepository.java | 23 ---------- .../example/application/domain/Cocktail.java | 21 --------- .../application/ports/in/AddCocktailPort.java | 24 ---------- .../ports/in/GetCocktailsPort.java | 9 ---- .../service/AddCocktailService.java | 19 -------- .../service/GetCocktailsService.java | 20 -------- .../infrastructure/CocktailsMenuApp.java | 43 ----------------- .../application/AddCocktailUnitTest.java | 42 ----------------- .../application/GetCocktailsUnitTest.java | 41 ----------------- 11 files changed, 322 deletions(-) delete mode 100644 patterns/hexagonal-architecture-example/pom.xml delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java delete mode 100644 patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java delete mode 100644 patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java delete mode 100644 patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java diff --git a/patterns/hexagonal-architecture-example/pom.xml b/patterns/hexagonal-architecture-example/pom.xml deleted file mode 100644 index e5439bf8f7..0000000000 --- a/patterns/hexagonal-architecture-example/pom.xml +++ /dev/null @@ -1,34 +0,0 @@ - - 4.0.0 - hexagonal-architecture-example - 1.0 - jar - - com.baeldung - patterns - 1.0.0-SNAPSHOT - - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.2.0 - - - - true - lib/ - com.baeldung.hexagonal.architecture.example.infrastructure.CocktailsMenuApp - - - - - - - - \ No newline at end of file diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java deleted file mode 100644 index 4f85639009..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/inbound/CommandLineAdapter.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.adapters.inbound; - -import java.util.List; -import java.util.Scanner; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; -import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort; -import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort.AddCocktailCommand; -import com.baeldung.hexagonal.architecture.example.application.ports.in.GetCocktailsPort; - -public class CommandLineAdapter { - private AddCocktailPort addCocktailPort; - private GetCocktailsPort listCocktailsPort; - private Scanner scanner; - - public CommandLineAdapter(Scanner scanner, AddCocktailPort addCocktailPort, GetCocktailsPort listCocktailsPort) { - this.addCocktailPort = addCocktailPort; - this.listCocktailsPort = listCocktailsPort; - this.scanner = scanner; - } - - public void addCocktail() { - try { - System.out.println("Enter the name of the cocktail"); - scanner.nextLine(); - String name = scanner.nextLine(); - System.out.println("Enter the price of the cocktail"); - double price = scanner.nextDouble(); - scanner.nextLine(); - AddCocktailCommand command = new AddCocktailCommand(name, price); - addCocktailPort.addCocktail(command); - } catch (Exception exception) { - System.out.println("Error during adding a new Cocktail"); - } - } - - public void listCocktails() { - List cocktailList = listCocktailsPort.getCocktails(); - System.out.println("Cocktails menu: \n"); - cocktailList.stream() - .forEach(cocktail -> { - System.out.println(cocktail.getName() + "\n" + - "price: " + cocktail.getPrice() + " $ " + "\n"); - }); - } -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java deleted file mode 100644 index 8b8e4d1d54..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/adapters/outbound/CocktailRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.adapters.outbound; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; -import com.baeldung.hexagonal.architecture.example.application.ports.out.FetchCocktailsPort; -import com.baeldung.hexagonal.architecture.example.application.ports.out.SaveCocktailPort; - -public class CocktailRepository implements FetchCocktailsPort, SaveCocktailPort { - - private Map store = new HashMap<>(); - - public List fetchCocktails() { - return new ArrayList<>(store.values()); - } - - public void saveCocktail(Cocktail cocktail) { - store.put(cocktail.getName(), cocktail); - } -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java deleted file mode 100644 index 878d667bf6..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/domain/Cocktail.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application.domain; - -public class Cocktail { - - private String name; - - private double price; - - public Cocktail(String name, double price) { - this.name = name; - this.price = price; - } - - public String getName() { - return name; - } - - public double getPrice() { - return price; - } -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java deleted file mode 100644 index 49138a2b34..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/AddCocktailPort.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application.ports.in; - -public interface AddCocktailPort { - - void addCocktail(AddCocktailCommand command); - - class AddCocktailCommand { - private String name; - private double price; - - public AddCocktailCommand(String name, double price) { - this.name = name; - this.price = price; - } - - public String getName() { - return name; - } - - public double getPrice() { - return price; - } - } -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java deleted file mode 100644 index 1d46bbd722..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/ports/in/GetCocktailsPort.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application.ports.in; - -import java.util.List; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; - -public interface GetCocktailsPort { - List getCocktails(); -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java deleted file mode 100644 index 81855853e8..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/AddCocktailService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application.service; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; -import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort; -import com.baeldung.hexagonal.architecture.example.application.ports.out.SaveCocktailPort; - -public class AddCocktailService implements AddCocktailPort { - private SaveCocktailPort saveCocktailPort; - - public AddCocktailService(SaveCocktailPort saveCocktailPort) { - this.saveCocktailPort = saveCocktailPort; - } - - @Override - public void addCocktail(AddCocktailCommand command) { - Cocktail cocktail = new Cocktail(command.getName(), command.getPrice()); - saveCocktailPort.saveCocktail(cocktail); - } -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java deleted file mode 100644 index a1459f2372..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/application/service/GetCocktailsService.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application.service; - -import java.util.List; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; -import com.baeldung.hexagonal.architecture.example.application.ports.in.GetCocktailsPort; -import com.baeldung.hexagonal.architecture.example.application.ports.out.FetchCocktailsPort; - -public class GetCocktailsService implements GetCocktailsPort { - private FetchCocktailsPort fetchCocktailsPort; - - public GetCocktailsService(FetchCocktailsPort fetchCocktailsPort) { - this.fetchCocktailsPort = fetchCocktailsPort; - } - - @Override - public List getCocktails() { - return fetchCocktailsPort.fetchCocktails(); - } -} diff --git a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java b/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java deleted file mode 100644 index a808d1f85e..0000000000 --- a/patterns/hexagonal-architecture-example/src/main/java/com/baeldung/hexagonal/architecture/example/infrastructure/CocktailsMenuApp.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.infrastructure; - -import java.util.Scanner; - -import com.baeldung.hexagonal.architecture.example.adapters.inbound.CommandLineAdapter; -import com.baeldung.hexagonal.architecture.example.adapters.outbound.CocktailRepository; -import com.baeldung.hexagonal.architecture.example.application.service.AddCocktailService; -import com.baeldung.hexagonal.architecture.example.application.service.GetCocktailsService; - -public class CocktailsMenuApp { - private static final String ADD = "add"; - private static final String LIST = "list"; - private static final String EXIT = "exit"; - private static final String HELP_TEXT = "Enter command \n" + - ADD + " - add a new Cocktail to the menu \n" + - LIST + " - list cocktails \n" + - EXIT + " - exit \n"; - private static Scanner SCANNER = new Scanner(System.in); - - public static void main(String[] args) { - CocktailRepository cocktailRepository = new CocktailRepository(); - AddCocktailService addCocktailService = new AddCocktailService(cocktailRepository); - GetCocktailsService getCocktailsMenuService = new GetCocktailsService(cocktailRepository); - CommandLineAdapter commandLineAdapter = new CommandLineAdapter(SCANNER, addCocktailService, getCocktailsMenuService); - runWith(commandLineAdapter); - } - - public static void runWith(CommandLineAdapter adapter) { - String command = null; - while (!EXIT.equalsIgnoreCase(command)) { - System.out.println(HELP_TEXT); - command = SCANNER.next(); - switch (command.toLowerCase()) { - case ADD: - adapter.addCocktail(); - break; - case LIST: - adapter.listCocktails(); - break; - } - } - } -} diff --git a/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java b/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java deleted file mode 100644 index bff8550464..0000000000 --- a/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/AddCocktailUnitTest.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application; -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.mockito.ArgumentCaptor; -import org.mockito.Mockito; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; -import com.baeldung.hexagonal.architecture.example.application.ports.in.AddCocktailPort.AddCocktailCommand; -import com.baeldung.hexagonal.architecture.example.application.ports.out.SaveCocktailPort; -import com.baeldung.hexagonal.architecture.example.application.service.AddCocktailService; - -class AddCocktailUnitTest { - - SaveCocktailPort saveCocktailPort; - AddCocktailService addCocktailService; - - @BeforeEach - void setup() { - saveCocktailPort = mock(SaveCocktailPort.class); - addCocktailService = new AddCocktailService(saveCocktailPort); - } - - @Test - void whenAddingACocktail_thenTheCocktailIsSaved() { - AddCocktailCommand command = mock(AddCocktailCommand.class); - when(command.getName()).thenReturn("mockito"); - when(command.getPrice()).thenReturn(9.50); - ArgumentCaptor captor = ArgumentCaptor.forClass(Cocktail.class); - - addCocktailService.addCocktail(command); - - Mockito.verify(saveCocktailPort).saveCocktail(captor.capture()); - Cocktail cocktailThatSaved = captor.getValue(); - assertEquals(command.getName(), cocktailThatSaved.getName()); - assertEquals(command.getPrice(), cocktailThatSaved.getPrice()); - } - -} diff --git a/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java b/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java deleted file mode 100644 index 5933f71895..0000000000 --- a/patterns/hexagonal-architecture-example/src/test/java/com/baeldung/hexagonal/architecture/example/application/GetCocktailsUnitTest.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.baeldung.hexagonal.architecture.example.application; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; - -import java.util.List; - -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import com.baeldung.hexagonal.architecture.example.application.domain.Cocktail; -import com.baeldung.hexagonal.architecture.example.application.ports.out.FetchCocktailsPort; -import com.baeldung.hexagonal.architecture.example.application.service.GetCocktailsService; - -class GetCocktailsUnitTest { - - FetchCocktailsPort fetchCocktailsPort; - GetCocktailsService getCocktailsService; - - @BeforeEach - void setup() { - fetchCocktailsPort = mock(FetchCocktailsPort.class); - getCocktailsService = new GetCocktailsService(fetchCocktailsPort); - } - - @Test - void whenGettingCocktails_thenCocktailsFetchedFromPortAndReturned() { - Cocktail cocktail = mock(Cocktail.class); - when(cocktail.getName()).thenReturn("zombie"); - when(cocktail.getPrice()).thenReturn(12.00); - when(fetchCocktailsPort.fetchCocktails()).thenReturn(List.of(cocktail)); - - List cocktails = getCocktailsService.getCocktails(); - - assertEquals(1, cocktails.size()); - assertEquals(cocktail.getName(), cocktails.get(0).getName()); - assertEquals(cocktail.getPrice(), cocktails.get(0).getPrice()); - } - -} From 9b5b41a1c6c66d9695e24a497b7b37970f5fae73 Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Tue, 17 Mar 2020 15:57:00 +0200 Subject: [PATCH 009/157] Removed evaluation article code --- patterns/pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/patterns/pom.xml b/patterns/pom.xml index 7631d8bbb0..4c17055231 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -24,7 +24,6 @@ front-controller intercepting-filter solid - hexagonal-architecture-example From 159370411205f46ecbe50ad765c9efb586c1d65d Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Tue, 17 Mar 2020 09:58:23 -0400 Subject: [PATCH 010/157] Added dependencies and plugins for NullAway example --- libraries-3/pom.xml | 57 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index a438d423e2..dbe6dd194f 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -104,6 +104,23 @@ velocity-engine-core ${velocity-engine-core.version} + + com.uber.nullaway + nullaway + 0.3.0 + + + org.codehaus.plexus + plexus-compiler-javac-errorprone + 2.8 + + + + com.google.errorprone + error_prone_core + 2.1.3 + @@ -139,6 +156,46 @@ ${aspectjweaver.version} + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.5 + + javac-with-errorprone + true + 1.8 + 1.8 + true + + + com.uber.nullaway + nullaway + 0.3.0 + + + + + + -XepExcludedPaths:(.*)/test/.*|(.*)/streamex/.* + -XepOpt:NullAway:AnnotatedPackages=com.baeldung.nullaway + + + + + org.codehaus.plexus + plexus-compiler-javac-errorprone + 2.8 + + + + com.google.errorprone + error_prone_core + 2.1.3 + + From 5861ebd6337f574226da2fcadb878401d9da4635 Mon Sep 17 00:00:00 2001 From: Greg Date: Tue, 17 Mar 2020 10:47:54 -0400 Subject: [PATCH 011/157] Update pom.xml --- libraries-3/pom.xml | 86 ++++++++++++++++++++++----------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index dbe6dd194f..fe007dfc4d 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -104,23 +104,23 @@ velocity-engine-core ${velocity-engine-core.version} - - com.uber.nullaway - nullaway - 0.3.0 - - - org.codehaus.plexus - plexus-compiler-javac-errorprone - 2.8 - - - - com.google.errorprone - error_prone_core - 2.1.3 - + + com.uber.nullaway + nullaway + 0.3.0 + + + org.codehaus.plexus + plexus-compiler-javac-errorprone + 2.8 + + + + com.google.errorprone + error_prone_core + 2.1.3 + @@ -158,32 +158,32 @@ - - org.apache.maven.plugins - maven-compiler-plugin - 3.5 - - javac-with-errorprone - true - 1.8 - 1.8 - true - - - com.uber.nullaway - nullaway - 0.3.0 - - - - - - -XepExcludedPaths:(.*)/test/.*|(.*)/streamex/.* - -XepOpt:NullAway:AnnotatedPackages=com.baeldung.nullaway - - - - + + org.apache.maven.plugins + maven-compiler-plugin + 3.5 + + javac-with-errorprone + true + 1.8 + 1.8 + true + + + com.uber.nullaway + nullaway + 0.3.0 + + + + + + -XepExcludedPaths:(.*)/test/.*|(.*)/streamex/.* + -XepOpt:NullAway:AnnotatedPackages=com.baeldung.nullaway + + + + org.codehaus.plexus plexus-compiler-javac-errorprone 2.8 From 97885bd06ef5134b7bae19d57f76a7933ef532b7 Mon Sep 17 00:00:00 2001 From: piuserre Date: Wed, 18 Mar 2020 16:27:58 +0100 Subject: [PATCH 012/157] fix launch run command --- spring-jenkins-pipeline/scripted-pipeline-unix-nonunix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix b/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix index b76bb8a81a..871fee4ccb 100644 --- a/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix +++ b/spring-jenkins-pipeline/scripted-pipeline-unix-nonunix @@ -72,7 +72,7 @@ node { if (isUnix()) { sh 'nohup ./mvnw spring-boot:run -Dserver.port=8989 &' } else { - bat 'start ./mvnw.cmd spring-boot:run -Dserver.port=8989' + bat 'start mvnw.cmd spring-boot:run -Dserver.port=8989' } } } From f95c25d461a4abdb3e303404e7e8f965990d0c02 Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Wed, 18 Mar 2020 16:01:52 -0400 Subject: [PATCH 013/157] Added com.baeldung.distinct.Person to libraries-3 --- .../java/com/baeldung/distinct/Person.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 libraries-3/src/main/java/com/baeldung/distinct/Person.java diff --git a/libraries-3/src/main/java/com/baeldung/distinct/Person.java b/libraries-3/src/main/java/com/baeldung/distinct/Person.java new file mode 100644 index 0000000000..8a2a5f7a45 --- /dev/null +++ b/libraries-3/src/main/java/com/baeldung/distinct/Person.java @@ -0,0 +1,65 @@ +package com.baeldung.distinct; + +public class Person { + int age; + String name; + String email; + + public Person(int age, String name, String email) { + super(); + this.age = age; + this.name = name; + this.email = email; + } + + public int getAge() { + return age; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Person [age="); + builder.append(age); + builder.append(", name="); + builder.append(name); + builder.append(", email="); + builder.append(email); + builder.append("]"); + return builder.toString(); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((email == null) ? 0 : email.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; + Person other = (Person) obj; + if (email == null) { + if (other.email != null) + return false; + } else if (!email.equals(other.email)) + return false; + return true; + } + +} From 4cd3cc23361cc1d9f70a4179a8050c8cb7b49bf6 Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Thu, 19 Mar 2020 07:04:24 -0400 Subject: [PATCH 014/157] Updated error_prone_core version to 2.3.4. --- libraries-3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index fe007dfc4d..5c373b88dc 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -193,7 +193,7 @@ com.google.errorprone error_prone_core - 2.1.3 + 2.3.4 From d16ed66dcc3e7e03ad7f5a225f25d5b4f606b6bf Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Thu, 19 Mar 2020 09:18:23 -0400 Subject: [PATCH 015/157] Updated pom to tell errorprone to excluude the jcabi directory. --- libraries-3/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index 5c373b88dc..8e0a93c982 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -178,7 +178,7 @@ - -XepExcludedPaths:(.*)/test/.*|(.*)/streamex/.* + -XepExcludedPaths:(.*)/test/.*|(.*)/streamex/.*|(.*)/jcabi/.* -XepOpt:NullAway:AnnotatedPackages=com.baeldung.nullaway From d23c8aa41de79a1b06854821e30afc8d0cee8f7d Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Thu, 19 Mar 2020 22:28:55 +0200 Subject: [PATCH 016/157] [BAEL-3913] Initial commit for prevent commandline application runner execution during JUnit test article --- .../spring-boot-testing/README.md | 1 + .../ApplicationCommandLineRunnerApp.java | 11 +++++ .../ApplicationRunnerTaskExecutor.java | 26 +++++++++++ .../execution/CommandLineTaskExecutor.java | 25 +++++++++++ .../runner/execution/TaskService.java | 14 ++++++ .../LoadSpringContextIntegrationTest.java | 44 +++++++++++++++++++ .../RunApplicationIntegrationTest.java | 26 +++++++++++ ...icationWithTestProfileIntegrationTest.java | 33 ++++++++++++++ ...tionWithTestPropertiesIntegrationTest.java | 34 ++++++++++++++ 9 files changed, 214 insertions(+) create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationCommandLineRunnerApp.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java create mode 100644 spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/TaskService.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java create mode 100644 spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-testing/README.md b/spring-boot-modules/spring-boot-testing/README.md index 0b2533e6bc..b033826541 100644 --- a/spring-boot-modules/spring-boot-testing/README.md +++ b/spring-boot-modules/spring-boot-testing/README.md @@ -12,3 +12,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Exclude Auto-Configuration Classes in Spring Boot Tests](https://www.baeldung.com/spring-boot-exclude-auto-configuration-test) - [Setting the Log Level in Spring Boot when Testing](https://www.baeldung.com/spring-boot-testing-log-level) - [Embedded Redis Server with Spring Boot Test](https://www.baeldung.com/spring-embedded-redis) +- [Prevent ApplicationRunner or CommandLineRunner Beans From Executing During Junit Testing]() diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationCommandLineRunnerApp.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationCommandLineRunnerApp.java new file mode 100644 index 0000000000..76e18dfd2f --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationCommandLineRunnerApp.java @@ -0,0 +1,11 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ApplicationCommandLineRunnerApp { + public static void main(String[] args) { + SpringApplication.run(ApplicationCommandLineRunnerApp.class, args); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java new file mode 100644 index 0000000000..98d4654d25 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java @@ -0,0 +1,26 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +@Profile("!test") +@ConditionalOnProperty(prefix = "application.runner", + value = "enabled", + havingValue = "true", + matchIfMissing = true) +@Component +public class ApplicationRunnerTaskExecutor implements ApplicationRunner { + private TaskService taskService; + + public ApplicationRunnerTaskExecutor(TaskService taskService) { + this.taskService = taskService; + } + + @Override + public void run(ApplicationArguments args) throws Exception { + taskService.execute("application runner task"); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java new file mode 100644 index 0000000000..4a77d78429 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java @@ -0,0 +1,25 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Profile; +import org.springframework.stereotype.Component; + +@Profile("!test") +@ConditionalOnProperty(prefix = "command.line.runner", + value = "enabled", + havingValue = "true", + matchIfMissing = true) +@Component +public class CommandLineTaskExecutor implements CommandLineRunner { + private TaskService taskService; + + public CommandLineTaskExecutor(TaskService taskService) { + this.taskService = taskService; + } + + @Override + public void run(String... args) throws Exception { + taskService.execute("command line runner task"); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/TaskService.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/TaskService.java new file mode 100644 index 0000000000..dac437e72d --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/TaskService.java @@ -0,0 +1,14 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +@Service +public class TaskService { + private static Logger logger = LoggerFactory.getLogger(TaskService.class); + + public void execute(String task) { + logger.info("do " + task); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java new file mode 100644 index 0000000000..911b16615d --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java @@ -0,0 +1,44 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.boot.ApplicationRunner; +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.test.context.ConfigFileApplicationContextInitializer; +import org.springframework.boot.test.mock.mockito.SpyBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import com.baeldung.prevent.commandline.application.runner.execution.ApplicationCommandLineRunnerApp; +import com.baeldung.prevent.commandline.application.runner.execution.TaskService; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +@ExtendWith(SpringExtension.class) +@ContextConfiguration(classes = {ApplicationCommandLineRunnerApp.class}, + initializers = ConfigFileApplicationContextInitializer.class) +public class LoadSpringContextIntegrationTest { + @SpyBean + TaskService taskService; + + @SpyBean + CommandLineRunner commandLineRunner; + + @SpyBean + ApplicationRunner applicationRunner; + + @Test + void whenContextLoads_thenAllBeansAreLoadedButCommandLineAndApplicationRunnerAreNotExecuted() + throws Exception { + assertNotNull(taskService); + assertNotNull(commandLineRunner); + assertNotNull(applicationRunner); + + verify(taskService, times(0)).execute(any()); + verify(commandLineRunner, times(0)).run(any()); + verify(applicationRunner, times(0)).run(any()); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java new file mode 100644 index 0000000000..d732bc5260 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java @@ -0,0 +1,26 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.SpyBean; + +import com.baeldung.prevent.commandline.application.runner.execution.ApplicationRunnerTaskExecutor; +import com.baeldung.prevent.commandline.application.runner.execution.CommandLineTaskExecutor; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; + +@SpringBootTest +class RunApplicationIntegrationTest { + @SpyBean + ApplicationRunnerTaskExecutor applicationRunnerTaskExecutor; + @SpyBean + CommandLineTaskExecutor commandLineTaskExecutor; + + @Test + void whenContextLoads_thenTheCommandLineAndApplicationRunnerAreExecuted() throws Exception { + verify(applicationRunnerTaskExecutor, times(1)).run(any()); + verify(commandLineTaskExecutor, times(1)).run(any()); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java new file mode 100644 index 0000000000..b5e09077c6 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java @@ -0,0 +1,33 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; +import org.springframework.test.context.ActiveProfiles; + +import com.baeldung.prevent.commandline.application.runner.execution.ApplicationRunnerTaskExecutor; +import com.baeldung.prevent.commandline.application.runner.execution.CommandLineTaskExecutor; +import com.baeldung.prevent.commandline.application.runner.execution.TaskService; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertThrows; + +@ActiveProfiles("test") +@SpringBootTest +class RunApplicationWithTestProfileIntegrationTest { + @Autowired + private ApplicationContext context; + + @Test + void whenContextLoads_thenTheCommandLineAndApplicationRunnerAreNotLoaded() { + assertNotNull(context.getBean(TaskService.class)); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(CommandLineTaskExecutor.class), + "CommandLineRunner should not be loaded during this integration test"); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(ApplicationRunnerTaskExecutor.class), + "ApplicationRunner should not be loaded during this integration test"); + } +} diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java new file mode 100644 index 0000000000..9ab8baec14 --- /dev/null +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java @@ -0,0 +1,34 @@ +package com.baeldung.prevent.commandline.application.runner.execution; + +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; + +import com.baeldung.prevent.commandline.application.runner.execution.ApplicationRunnerTaskExecutor; +import com.baeldung.prevent.commandline.application.runner.execution.CommandLineTaskExecutor; +import com.baeldung.prevent.commandline.application.runner.execution.TaskService; + +@SpringBootTest( + properties = { + "command.line.runner.enabled=false", + "application.runner.enabled=false" + }) +class RunApplicationWithTestPropertiesIntegrationTest { + @Autowired + private ApplicationContext context; + + @Test + void whenContextLoads_thenTheCommandLineAndApplicationRunnerAreNotLoaded() { + assertNotNull(context.getBean(TaskService.class)); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(CommandLineTaskExecutor.class), + "CommandLineRunner should not be loaded during this integration test"); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(ApplicationRunnerTaskExecutor.class), + "ApplicationRunner should not be loaded during this integration test"); + } +} From adf1ee9b0db6593d6480f350a6448994e193da89 Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Sun, 22 Mar 2020 22:06:44 +0200 Subject: [PATCH 017/157] [BAEL-3913] Fixed broken lines format and reduced the test method names length --- .../ApplicationRunnerTaskExecutor.java | 9 ++++---- .../execution/CommandLineTaskExecutor.java | 9 ++++---- .../LoadSpringContextIntegrationTest.java | 7 +++--- .../RunApplicationIntegrationTest.java | 2 +- ...icationWithTestProfileIntegrationTest.java | 14 ++++++------ ...tionWithTestPropertiesIntegrationTest.java | 22 +++++++++---------- 6 files changed, 31 insertions(+), 32 deletions(-) diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java index 98d4654d25..3bf08491bf 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/ApplicationRunnerTaskExecutor.java @@ -7,10 +7,11 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Profile("!test") -@ConditionalOnProperty(prefix = "application.runner", - value = "enabled", - havingValue = "true", - matchIfMissing = true) +@ConditionalOnProperty( + prefix = "application.runner", + value = "enabled", + havingValue = "true", + matchIfMissing = true) @Component public class ApplicationRunnerTaskExecutor implements ApplicationRunner { private TaskService taskService; diff --git a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java index 4a77d78429..38fd3b9c0a 100644 --- a/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java +++ b/spring-boot-modules/spring-boot-testing/src/main/java/com/baeldung/prevent/commandline/application/runner/execution/CommandLineTaskExecutor.java @@ -6,10 +6,11 @@ import org.springframework.context.annotation.Profile; import org.springframework.stereotype.Component; @Profile("!test") -@ConditionalOnProperty(prefix = "command.line.runner", - value = "enabled", - havingValue = "true", - matchIfMissing = true) +@ConditionalOnProperty( + prefix = "command.line.runner", + value = "enabled", + havingValue = "true", + matchIfMissing = true) @Component public class CommandLineTaskExecutor implements CommandLineRunner { private TaskService taskService; diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java index 911b16615d..c3922536b1 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java @@ -18,8 +18,8 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @ExtendWith(SpringExtension.class) -@ContextConfiguration(classes = {ApplicationCommandLineRunnerApp.class}, - initializers = ConfigFileApplicationContextInitializer.class) +@ContextConfiguration(classes = { ApplicationCommandLineRunnerApp.class }, + initializers = ConfigFileApplicationContextInitializer.class) public class LoadSpringContextIntegrationTest { @SpyBean TaskService taskService; @@ -31,8 +31,7 @@ public class LoadSpringContextIntegrationTest { ApplicationRunner applicationRunner; @Test - void whenContextLoads_thenAllBeansAreLoadedButCommandLineAndApplicationRunnerAreNotExecuted() - throws Exception { + void whenContextLoads_thenRunnersDoNotRun() throws Exception { assertNotNull(taskService); assertNotNull(commandLineRunner); assertNotNull(applicationRunner); diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java index d732bc5260..26a7339f1d 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationIntegrationTest.java @@ -19,7 +19,7 @@ class RunApplicationIntegrationTest { CommandLineTaskExecutor commandLineTaskExecutor; @Test - void whenContextLoads_thenTheCommandLineAndApplicationRunnerAreExecuted() throws Exception { + void whenContextLoads_thenRunnersRun() throws Exception { verify(applicationRunnerTaskExecutor, times(1)).run(any()); verify(commandLineTaskExecutor, times(1)).run(any()); } diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java index b5e09077c6..333cd2ab91 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestProfileIntegrationTest.java @@ -21,13 +21,13 @@ class RunApplicationWithTestProfileIntegrationTest { private ApplicationContext context; @Test - void whenContextLoads_thenTheCommandLineAndApplicationRunnerAreNotLoaded() { + void whenContextLoads_thenRunnersAreNotLoaded() { assertNotNull(context.getBean(TaskService.class)); - assertThrows(NoSuchBeanDefinitionException.class, - () -> context.getBean(CommandLineTaskExecutor.class), - "CommandLineRunner should not be loaded during this integration test"); - assertThrows(NoSuchBeanDefinitionException.class, - () -> context.getBean(ApplicationRunnerTaskExecutor.class), - "ApplicationRunner should not be loaded during this integration test"); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(CommandLineTaskExecutor.class), + "CommandLineRunner should not be loaded during this integration test"); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(ApplicationRunnerTaskExecutor.class), + "ApplicationRunner should not be loaded during this integration test"); } } diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java index 9ab8baec14..264a06a41e 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/RunApplicationWithTestPropertiesIntegrationTest.java @@ -12,23 +12,21 @@ import com.baeldung.prevent.commandline.application.runner.execution.Application import com.baeldung.prevent.commandline.application.runner.execution.CommandLineTaskExecutor; import com.baeldung.prevent.commandline.application.runner.execution.TaskService; -@SpringBootTest( - properties = { - "command.line.runner.enabled=false", - "application.runner.enabled=false" - }) +@SpringBootTest(properties = { + "command.line.runner.enabled=false", + "application.runner.enabled=false" }) class RunApplicationWithTestPropertiesIntegrationTest { @Autowired private ApplicationContext context; @Test - void whenContextLoads_thenTheCommandLineAndApplicationRunnerAreNotLoaded() { + void whenContextLoads_thenRunnersAreNotLoaded() { assertNotNull(context.getBean(TaskService.class)); - assertThrows(NoSuchBeanDefinitionException.class, - () -> context.getBean(CommandLineTaskExecutor.class), - "CommandLineRunner should not be loaded during this integration test"); - assertThrows(NoSuchBeanDefinitionException.class, - () -> context.getBean(ApplicationRunnerTaskExecutor.class), - "ApplicationRunner should not be loaded during this integration test"); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(CommandLineTaskExecutor.class), + "CommandLineRunner should not be loaded during this integration test"); + assertThrows(NoSuchBeanDefinitionException.class, + () -> context.getBean(ApplicationRunnerTaskExecutor.class), + "ApplicationRunner should not be loaded during this integration test"); } } From a3d7eb0bf3ab5ce0a101c97a75ae213dccb73f62 Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Sun, 22 Mar 2020 23:55:33 +0200 Subject: [PATCH 018/157] [BAEL-3913] Fixed broken lines format --- .../runner/execution/LoadSpringContextIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java index c3922536b1..6698094550 100644 --- a/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java +++ b/spring-boot-modules/spring-boot-testing/src/test/java/com/baeldung/prevent/commandline/application/runner/execution/LoadSpringContextIntegrationTest.java @@ -19,7 +19,7 @@ import static org.mockito.Mockito.verify; @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = { ApplicationCommandLineRunnerApp.class }, - initializers = ConfigFileApplicationContextInitializer.class) + initializers = ConfigFileApplicationContextInitializer.class) public class LoadSpringContextIntegrationTest { @SpyBean TaskService taskService; From 63dcae64238124c6cfe87a96bea4e08358a6e936 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Wed, 1 Apr 2020 19:18:10 +0200 Subject: [PATCH 019/157] Practical example of Hexagonal architecture - add project --- .../baeldung/employee/config/AppConfig.java | 73 +++++++++++++++++++ .../config/ApplicationInitializer.java | 29 ++++++++ .../employee/data/EmployeeDataAdapter.java | 9 +++ .../data/EmployeeDataAdapterImpl.java | 28 +++++++ .../baeldung/employee/data/EmployeeRepo.java | 9 +++ .../baeldung/employee/domain/Employee.java | 43 +++++++++++ .../baeldung/employee/dto/EmployeeDTO.java | 9 +++ .../employee/service/EmployeeController.java | 47 ++++++++++++ .../employee/service/EmployeeService.java | 8 ++ .../employee/service/EmployeeServiceImpl.java | 25 +++++++ EmpServiceApp/src/createEmployeeTable.sql | 11 +++ .../web/WEB-INF/applicationContext.xml | 12 +++ EmpServiceApp/web/WEB-INF/web.xml | 25 +++++++ 13 files changed, 328 insertions(+) create mode 100644 EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/domain/Employee.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java create mode 100644 EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java create mode 100644 EmpServiceApp/src/createEmployeeTable.sql create mode 100644 EmpServiceApp/web/WEB-INF/applicationContext.xml create mode 100644 EmpServiceApp/web/WEB-INF/web.xml diff --git a/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java b/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java new file mode 100644 index 0000000000..3f6919b8f5 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java @@ -0,0 +1,73 @@ +package com.baeldung.employee.config; + +import javax.persistence.EntityManagerFactory; +import javax.sql.DataSource; + +import org.modelmapper.ModelMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; +import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; +import org.springframework.orm.jpa.JpaTransactionManager; +import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; +import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; +import org.springframework.transaction.TransactionManager; + +@Configuration +@EnableJpaRepositories(basePackages = "com.baeldung.employee.data", entityManagerFactoryRef = "emf") +@ComponentScan(basePackages = "com.baeldung.employee") +public class AppConfig { + + @Bean + public DataSource h2DataSource() { + + EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); + EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.H2) + .addScript("createEmployeeTable.sql") + .build(); + return db; + + } + + @Bean + public ModelMapper mapper() { + + return new ModelMapper(); + } + + /* @Bean + public ObjectMapper objectMapper() { + + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); + mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true); + + return mapper; + } + */ + + @Bean(name = "emf") + public LocalContainerEntityManagerFactoryBean entityManagerFactory() { + + HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); + + LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); + factory.setJpaVendorAdapter(vendorAdapter); + factory.setPackagesToScan("com.baeldung.employee"); + factory.setDataSource(h2DataSource()); + // factory.setJpaProperties(jpaProperties()); + + return factory; + } + + @Bean + public TransactionManager jpaTransactionManager(EntityManagerFactory emf) { + JpaTransactionManager transactionManager = new JpaTransactionManager(); + transactionManager.setEntityManagerFactory(emf); + return transactionManager; + } + +} diff --git a/EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java b/EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java new file mode 100644 index 0000000000..491e97b2c8 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java @@ -0,0 +1,29 @@ +package com.baeldung.employee.config; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.ContextLoaderListener; +import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +public class ApplicationInitializer implements WebApplicationInitializer { + + @Override + public void onStartup(ServletContext servletContext) throws ServletException { + + AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); + context.register(AppConfig.class); + + servletContext.addListener(new ContextLoaderListener(context)); + + // Create DispatcherServlet + + ServletRegistration.Dynamic dispatcher = servletContext.addServlet("EmployeeSpringApp", new DispatcherServlet()); + dispatcher.setLoadOnStartup(1); + dispatcher.addMapping("/app"); + + } +} diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java new file mode 100644 index 0000000000..da5d5bb1a3 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java @@ -0,0 +1,9 @@ +package com.baeldung.employee.data; + +import com.baeldung.employee.dto.EmployeeDTO; + +public interface EmployeeDataAdapter { + + void addEmployee(EmployeeDTO emp); + +} diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java new file mode 100644 index 0000000000..54b3079844 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java @@ -0,0 +1,28 @@ +package com.baeldung.employee.data; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import com.baeldung.employee.domain.Employee; +import com.baeldung.employee.dto.EmployeeDTO; + +@Component +public class EmployeeDataAdapterImpl implements EmployeeDataAdapter { + + @PersistenceContext + private EntityManager em; + + @Autowired + private ModelMapper modelMapper; + + @Override + public void addEmployee(EmployeeDTO emp) { + + em.persist(modelMapper.map(emp, Employee.class)); + + } +} diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java new file mode 100644 index 0000000000..4d63dc391d --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java @@ -0,0 +1,9 @@ +package com.baeldung.employee.data; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.baeldung.employee.domain.Employee; + +public interface EmployeeRepo extends JpaRepository { + +} diff --git a/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java b/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java new file mode 100644 index 0000000000..f9cd937c21 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java @@ -0,0 +1,43 @@ +package com.baeldung.employee.domain; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "EMPLOYEE") +public class Employee { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + private String name; + + public Employee() { + } + + public Employee(int id, String name) { + this.id = id; + this.name = name; + } + + public long getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + // Standard constructors, getters and setters +} diff --git a/EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java b/EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java new file mode 100644 index 0000000000..3b6b048a9c --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java @@ -0,0 +1,9 @@ +package com.baeldung.employee.dto; + +public class EmployeeDTO { + + private long id; + private String name; + + // Standard constructors, getters and setters +} diff --git a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java new file mode 100644 index 0000000000..b258d11018 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java @@ -0,0 +1,47 @@ +package com.baeldung.employee.service; + +import java.net.URI; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +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; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import com.baeldung.employee.domain.Employee; + +@RestController +public class EmployeeController { + + @Autowired + private EmployeeService empService; + + @GetMapping(value = "/", produces = MediaType.TEXT_HTML_VALUE) + public String home() { + + return "This is employee app page"; + } + + @PostMapping(path = "/employees", consumes = "application/json", produces = "application/json") + public ResponseEntity addEmployee(@RequestBody Map empBody) { + + String id = empBody.get("id"); + String name = empBody.get("name"); + + Employee emp = new Employee(Integer.valueOf(id), name); + empService.addEmployee(emp); + + // Create resource uri + URI uri = ServletUriComponentsBuilder.fromCurrentRequest() + .buildAndExpand(emp.getId()) + .toUri(); + + // Send uri in response + return ResponseEntity.created(uri) + .build(); + } +} diff --git a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java new file mode 100644 index 0000000000..81c7665a50 --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java @@ -0,0 +1,8 @@ +package com.baeldung.employee.service; + +import com.baeldung.employee.domain.Employee; + +public interface EmployeeService { + + void addEmployee(Employee emp); +} diff --git a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java new file mode 100644 index 0000000000..45aba2898b --- /dev/null +++ b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java @@ -0,0 +1,25 @@ +package com.baeldung.employee.service; + +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.employee.data.EmployeeDataAdapter; +import com.baeldung.employee.domain.Employee; +import com.baeldung.employee.dto.EmployeeDTO; + +@Service +public class EmployeeServiceImpl implements EmployeeService { + + @Autowired + private EmployeeDataAdapter employeeDataAdapter; + + @Autowired + private ModelMapper modelMapper; + + @Override + public void addEmployee(Employee emp) { + employeeDataAdapter.addEmployee(modelMapper.map(emp, EmployeeDTO.class)); + } + +} diff --git a/EmpServiceApp/src/createEmployeeTable.sql b/EmpServiceApp/src/createEmployeeTable.sql new file mode 100644 index 0000000000..14b8347bff --- /dev/null +++ b/EmpServiceApp/src/createEmployeeTable.sql @@ -0,0 +1,11 @@ +DROP TABLE IF EXISTS EMPLOYEE; + +CREATE TABLE EMPLOYEE ( + + ID IDENTITY PRIMARY KEY, + NAME VARCHAR(64) NOT NULL, + +); + +INSERT INTO EMPLOYEE (ID, NAME) VALUES (10, 'EMP 10'); +INSERT INTO EMPLOYEE (ID, NAME) VALUES (20, 'EMP 20'); diff --git a/EmpServiceApp/web/WEB-INF/applicationContext.xml b/EmpServiceApp/web/WEB-INF/applicationContext.xml new file mode 100644 index 0000000000..54b3429708 --- /dev/null +++ b/EmpServiceApp/web/WEB-INF/applicationContext.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/EmpServiceApp/web/WEB-INF/web.xml b/EmpServiceApp/web/WEB-INF/web.xml new file mode 100644 index 0000000000..7731773f82 --- /dev/null +++ b/EmpServiceApp/web/WEB-INF/web.xml @@ -0,0 +1,25 @@ + + + Employee Spring App + + + org.springframework.web.context.ContextLoaderListener + + + + EmployeeSpringApp + org.springframework.web.servlet.DispatcherServlet + + contextConfigLocation + /WEB-INF/applicationContext.xml + + 1 + + + EmployeeSpringApp + /* + + \ No newline at end of file From ce412e718e223baa73b018c0654a0d83e0a34806 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Thu, 2 Apr 2020 18:53:23 +0200 Subject: [PATCH 020/157] Refactoring domain and config classes --- .../src/com/baeldung/employee/config/AppConfig.java | 12 +----------- .../src/com/baeldung/employee/data/EmployeeRepo.java | 2 +- .../src/com/baeldung/employee/domain/Employee.java | 2 +- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java b/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java index 3f6919b8f5..3bde8fceed 100644 --- a/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java +++ b/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java @@ -38,16 +38,6 @@ public class AppConfig { return new ModelMapper(); } - /* @Bean - public ObjectMapper objectMapper() { - - ObjectMapper mapper = new ObjectMapper(); - mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true); - - return mapper; - } - */ @Bean(name = "emf") public LocalContainerEntityManagerFactoryBean entityManagerFactory() { @@ -58,7 +48,7 @@ public class AppConfig { factory.setJpaVendorAdapter(vendorAdapter); factory.setPackagesToScan("com.baeldung.employee"); factory.setDataSource(h2DataSource()); - // factory.setJpaProperties(jpaProperties()); + return factory; } diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java index 4d63dc391d..0712f7823a 100644 --- a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java +++ b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java @@ -4,6 +4,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import com.baeldung.employee.domain.Employee; -public interface EmployeeRepo extends JpaRepository { +public interface EmployeeRepo extends JpaRepository { } diff --git a/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java b/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java index f9cd937c21..3b93b8a97e 100644 --- a/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java +++ b/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java @@ -7,7 +7,7 @@ import javax.persistence.Id; import javax.persistence.Table; @Entity -@Table(name = "EMPLOYEE") +@Table public class Employee { @Id From 5a56276893d3f8e1cce2473aed880b2a8982ca97 Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Sun, 5 Apr 2020 00:45:15 +0300 Subject: [PATCH 021/157] [BAEL-3936] Initial commit --- persistence-modules/java-jpa-2/pom.xml | 31 ++- .../jpa/unrelated/entities/Cocktail.java | 84 ++++++++ .../unrelated/entities/MultipleRecipe.java | 65 ++++++ .../jpa/unrelated/entities/Recipe.java | 48 +++++ .../main/resources/META-INF/persistence.xml | 25 ++- .../entities/UnrelatedEntitiesUnitTest.java | 187 ++++++++++++++++++ 6 files changed, 437 insertions(+), 3 deletions(-) create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java create mode 100644 persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java create mode 100644 persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml index f79f6f1633..b41cdccb07 100644 --- a/persistence-modules/java-jpa-2/pom.xml +++ b/persistence-modules/java-jpa-2/pom.xml @@ -48,6 +48,17 @@ ${postgres.version} runtime + + com.querydsl + querydsl-apt + ${querydsl.version} + provided + + + com.querydsl + querydsl-jpa + ${querydsl.version} + org.assertj @@ -101,11 +112,28 @@ target/metamodel + ${project.build.directory}/generated-sources/java/ + + com.mysema.maven + apt-maven-plugin + 1.1.3 + + + + process + + + target/generated-sources/java + com.querydsl.apt.jpa.JPAAnnotationProcessor + + + + @@ -118,6 +146,7 @@ 3.5.1 3.3.3 3.0.0 + 4.2.2 - \ No newline at end of file + diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java new file mode 100644 index 0000000000..b957ec2ed5 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java @@ -0,0 +1,84 @@ +package com.baeldung.jpa.unrelated.entities; + +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; + +import javax.persistence.*; +import java.util.List; +import java.util.Objects; + +@Entity +@Table(name = "cocktails") +public class Cocktail { + @Id + @Column(name="cocktail_name") + private String name; + + @Column + private double price; + + @Column(name="category") + private String category; + + @OneToOne + @NotFound(action = NotFoundAction.IGNORE) + @JoinColumn(name = "cocktail_name", + referencedColumnName = "cocktail", + insertable = false, + updatable = false, + foreignKey = @javax.persistence.ForeignKey(value= ConstraintMode.NO_CONSTRAINT)) + private Recipe recipe; + + @OneToMany + @NotFound(action=NotFoundAction.IGNORE) + @JoinColumn(name = "cocktail", + referencedColumnName = "cocktail_name", + insertable = false, + updatable = false, + foreignKey = @javax.persistence.ForeignKey(value= ConstraintMode.NO_CONSTRAINT)) + private List recipeList; + + public Cocktail() { + } + + public Cocktail(String name, double price, String baseIngredient) { + this.name = name; + this.price = price; + this.category = baseIngredient; + } + + public String getName() { + return name; + } + + public double getPrice() { + return price; + } + + public String getCategory() { + return category; + } + + public Recipe getRecipe() { + return recipe; + } + + public List getRecipeList() { + return recipeList; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Cocktail cocktail = (Cocktail) o; + return Double.compare(cocktail.price, price) == 0 && + Objects.equals(name, cocktail.name) && + Objects.equals(category, cocktail.category); + } + + @Override + public int hashCode() { + return Objects.hash(name, price, category); + } +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java new file mode 100644 index 0000000000..e04df150f3 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java @@ -0,0 +1,65 @@ +package com.baeldung.jpa.unrelated.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.Objects; + +@Entity +@Table(name="multiple_recipes") +public class MultipleRecipe { + @Id + @Column(name="id") + private Long id; + + @Column(name="cocktail") + private String cocktail; + + @Column(name="instructions") + private String instructions; + + @Column(name="base_ingredient") + private String baseIngredient; + + public MultipleRecipe() {} + + public MultipleRecipe(Long id, String cocktail, String instructions, String baseIngredient) { + this.baseIngredient = baseIngredient; + this.cocktail = cocktail; + this.id = id; + this.instructions = instructions; + } + + public Long getId() { + return id; + } + + public String getCocktail() { + return cocktail; + } + + public String getInstructions() { + return instructions; + } + + public String getBaseIngredient() { + return baseIngredient; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MultipleRecipe that = (MultipleRecipe) o; + return Objects.equals(id, that.id) && + Objects.equals(cocktail, that.cocktail) && + Objects.equals(instructions, that.instructions) && + Objects.equals(baseIngredient, that.baseIngredient); + } + + @Override + public int hashCode() { + return Objects.hash(id, cocktail, instructions, baseIngredient); + } +} diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java new file mode 100644 index 0000000000..585c6abec3 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java @@ -0,0 +1,48 @@ +package com.baeldung.jpa.unrelated.entities; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.util.Objects; + +@Entity +@Table(name="recipes") +public class Recipe { + @Id + @Column(name = "cocktail") + private String cocktail; + + @Column + private String instructions; + + public Recipe() { + } + + public Recipe(String cocktail, String instructions) { + this.cocktail = cocktail; + this.instructions = instructions; + } + + public String getCocktail() { + return cocktail; + } + + public String getInstructions() { + return instructions; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Recipe recipe = (Recipe) o; + return Objects.equals(cocktail, recipe.cocktail) && + Objects.equals(instructions, recipe.instructions); + } + + @Override + public int hashCode() { + return Objects.hash(cocktail, instructions); + } +} diff --git a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml index 11e007973f..eec7f7cf6e 100644 --- a/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml +++ b/persistence-modules/java-jpa-2/src/main/resources/META-INF/persistence.xml @@ -162,5 +162,26 @@ value="false" /> - - \ No newline at end of file + + + org.hibernate.jpa.HibernatePersistenceProvider + com.baeldung.jpa.unrelated.entities.Cocktail + com.baeldung.jpa.unrelated.entities.Recipe + com.baeldung.jpa.unrelated.entities.MultipleRecipe + true + + + + + + + + + + + + diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java new file mode 100644 index 0000000000..540811c409 --- /dev/null +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java @@ -0,0 +1,187 @@ +package com.baeldung.jpa.unrelated.entities; + +import javax.persistence.*; + +import com.querydsl.jpa.impl.JPAQuery; +import org.junit.jupiter.api.*; + +import java.util.List; +import java.util.function.Consumer; + +import static org.junit.jupiter.api.Assertions.*; + +public class UnrelatedEntitiesUnitTest { + private static EntityManagerFactory entityManagerFactory; + private static EntityManager entityManager; + private static Cocktail mojito; + private static Cocktail ginTonic; + + @BeforeAll + public static void setup() { + entityManagerFactory = Persistence.createEntityManagerFactory("jpa-h2-unrelated-entities"); + entityManager = entityManagerFactory.createEntityManager(); + mojito = new Cocktail("Mojito", 11, "Rum"); + ginTonic = new Cocktail("Gin tonic", 8.50, "Gin"); + entityManager.getTransaction().begin(); + entityManager.persist(mojito); + entityManager.persist(ginTonic); + entityManager.persist(new Recipe(mojito.getName(), "Some instructions")); + entityManager.persist(new MultipleRecipe(1L, mojito.getName(), "some instructions", mojito.getCategory())); + entityManager.persist(new MultipleRecipe(2L, mojito.getName(), "some other instructions", mojito.getCategory())); + entityManager.getTransaction().commit(); + } + + @AfterAll + public static void closeSession() { + entityManager.close(); + } + + @Test + public void whenQueryingForCocktailThatHasRecipe_thenTheExpectedCocktailReturned() { + // JPA + Cocktail cocktail = entityManager.createQuery( + "select c from Cocktail c join c.recipe", Cocktail.class) + .getSingleResult(); + verifyResult(mojito, cocktail); + + cocktail = entityManager.createQuery( + "select c from Cocktail c join Recipe r on c.name = r.cocktail", Cocktail.class) + .getSingleResult(); + verifyResult(mojito, cocktail); + + // QueryDSL + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail) + .join(QCocktail.cocktail.recipe) + .fetchOne(); + verifyResult(mojito, cocktail); + + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail) + .join(QRecipe.recipe) + .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) + .fetchOne(); + verifyResult(mojito, cocktail); + } + + @Test + public void whenQueryingForCocktailThatHasNotARecipe_thenTheExpectedCocktailReturned() { + Cocktail cocktail = entityManager + .createQuery("select c from Cocktail c left join c.recipe r " + + "where r is null", + Cocktail.class) + .getSingleResult(); + verifyResult(ginTonic, cocktail); + + cocktail = entityManager + .createQuery("select c from Cocktail c left join Recipe r " + + "on c.name = r.cocktail " + + "where r is null", + Cocktail.class) + .getSingleResult(); + verifyResult(ginTonic, cocktail); + + QRecipe recipe = new QRecipe("alias"); + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail) + .leftJoin(QCocktail.cocktail.recipe, recipe) + .where(recipe.isNull()).fetchOne(); + verifyResult(ginTonic, cocktail); + + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail) + .leftJoin(QRecipe.recipe) + .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) + .where(QRecipe.recipe.isNull()).fetchOne(); + verifyResult(ginTonic, cocktail); + } + + @Test + public void whenQueringForCocktailThatHasRecipes_thenTheExpectedCocktailReturned() { + // JPQL + Cocktail cocktail = entityManager + .createQuery("select c from Cocktail c join c.recipeList", Cocktail.class) + .getSingleResult(); + verifyResult(mojito, cocktail); + + cocktail = entityManager + .createQuery("select c from Cocktail c join MultipleRecipe mr on mr.cocktail = c.name", Cocktail.class) + .getSingleResult(); + verifyResult(mojito, cocktail); + + // QueryDSL + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail).join(QCocktail.cocktail.recipeList).fetchOne(); + verifyResult(mojito, cocktail); + + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .join(QMultipleRecipe.multipleRecipe) + .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) + .fetchOne(); + verifyResult(mojito, cocktail); + } + + @Test + public void whenQueryingForCocktailThatHasNotRecipes_thenTheExpectedCocktailReturned() { + // JPQL + Cocktail cocktail = entityManager + .createQuery("select c from Cocktail c left join c.recipeList r where r is null", Cocktail.class) + .getSingleResult(); + verifyResult(ginTonic, cocktail); + + cocktail = entityManager.createQuery("select c from Cocktail c left join MultipleRecipe r " + + "on c.name = r.cocktail where r is null", Cocktail.class) + .getSingleResult(); + verifyResult(ginTonic, cocktail); + + // QueryDSL + QMultipleRecipe multipleRecipe = new QMultipleRecipe("alias"); + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail) + .leftJoin(QCocktail.cocktail.recipeList, multipleRecipe) + .where(multipleRecipe.isNull()) + .fetchOne(); + verifyResult(ginTonic, cocktail); + + cocktail = new JPAQuery(entityManager) + .from(QCocktail.cocktail).leftJoin(QMultipleRecipe.multipleRecipe) + .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) + .where(QMultipleRecipe.multipleRecipe.isNull()).fetchOne(); + verifyResult(ginTonic, cocktail); + } + + @Test + public void whenQueryingForRumCocktailsInMenuRecipes_thenTheExpectedRecipesReturned() { + Consumer> verifyResult = recipes -> { + assertEquals(2, recipes.size()); + recipes.forEach(r -> assertEquals(mojito.getName(), r.getCocktail())); + }; + + // JPQL + List recipes = entityManager + .createQuery("select distinct r from MultipleRecipe r join Cocktail c " + + "on r.cocktail = c.name " + + "and " + + "r.baseIngredient = :category", + MultipleRecipe.class) + .setParameter("category", mojito.getCategory()) + .getResultList(); + verifyResult.accept(recipes); + + // QueryDSL + QCocktail cocktail = QCocktail.cocktail; + QMultipleRecipe multipleRecipe = QMultipleRecipe.multipleRecipe; + recipes = new JPAQuery(entityManager) + .from(multipleRecipe) + .join(cocktail) + .on(multipleRecipe.cocktail.eq(cocktail.name) + .and(multipleRecipe.baseIngredient.eq(mojito.getCategory()))) + .fetch(); + verifyResult.accept(recipes); + } + + private void verifyResult(Cocktail expectedCocktail, Cocktail queryResult) { + assertNotNull(queryResult); + assertEquals(expectedCocktail, queryResult); + } +} From 9acc69220be5068d997789d8f1e7db7e2a2dd1bf Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Sun, 5 Apr 2020 01:11:49 +0300 Subject: [PATCH 022/157] [BAEL-3936] Formatted code --- .../jpa/unrelated/entities/Cocktail.java | 41 +++-- .../unrelated/entities/MultipleRecipe.java | 37 +++-- .../entities/UnrelatedEntitiesUnitTest.java | 156 +++++++++--------- 3 files changed, 123 insertions(+), 111 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java index b957ec2ed5..7f5ca66570 100644 --- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java @@ -11,31 +11,34 @@ import java.util.Objects; @Table(name = "cocktails") public class Cocktail { @Id - @Column(name="cocktail_name") + @Column(name = "cocktail_name") private String name; @Column private double price; - @Column(name="category") + @Column(name = "category") private String category; @OneToOne @NotFound(action = NotFoundAction.IGNORE) - @JoinColumn(name = "cocktail_name", - referencedColumnName = "cocktail", - insertable = false, - updatable = false, - foreignKey = @javax.persistence.ForeignKey(value= ConstraintMode.NO_CONSTRAINT)) + @JoinColumn(name = "cocktail_name", + referencedColumnName = "cocktail", + insertable = false, updatable = false, + foreignKey = @javax.persistence + .ForeignKey(value = ConstraintMode.NO_CONSTRAINT) + ) private Recipe recipe; @OneToMany - @NotFound(action=NotFoundAction.IGNORE) - @JoinColumn(name = "cocktail", - referencedColumnName = "cocktail_name", - insertable = false, - updatable = false, - foreignKey = @javax.persistence.ForeignKey(value= ConstraintMode.NO_CONSTRAINT)) + @NotFound(action = NotFoundAction.IGNORE) + @JoinColumn( + name = "cocktail", + referencedColumnName = "cocktail_name", + insertable = false, + updatable = false, + foreignKey = @javax.persistence + .ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private List recipeList; public Cocktail() { @@ -69,12 +72,14 @@ public class Cocktail { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; Cocktail cocktail = (Cocktail) o; - return Double.compare(cocktail.price, price) == 0 && - Objects.equals(name, cocktail.name) && - Objects.equals(category, cocktail.category); + return Double.compare(cocktail.price, price) == 0 && + Objects.equals(name, cocktail.name) && + Objects.equals(category, cocktail.category); } @Override diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java index e04df150f3..d628af1eaf 100644 --- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java @@ -7,28 +7,30 @@ import javax.persistence.Table; import java.util.Objects; @Entity -@Table(name="multiple_recipes") +@Table(name = "multiple_recipes") public class MultipleRecipe { @Id - @Column(name="id") + @Column(name = "id") private Long id; - @Column(name="cocktail") + @Column(name = "cocktail") private String cocktail; - @Column(name="instructions") + @Column(name = "instructions") private String instructions; - @Column(name="base_ingredient") + @Column(name = "base_ingredient") private String baseIngredient; - public MultipleRecipe() {} + public MultipleRecipe() { + } - public MultipleRecipe(Long id, String cocktail, String instructions, String baseIngredient) { - this.baseIngredient = baseIngredient; - this.cocktail = cocktail; + public MultipleRecipe(Long id, String cocktail, + String instructions, String baseIngredient) { this.id = id; + this.cocktail = cocktail; this.instructions = instructions; + this.baseIngredient = baseIngredient; } public Long getId() { @@ -49,17 +51,20 @@ public class MultipleRecipe { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; MultipleRecipe that = (MultipleRecipe) o; - return Objects.equals(id, that.id) && - Objects.equals(cocktail, that.cocktail) && - Objects.equals(instructions, that.instructions) && - Objects.equals(baseIngredient, that.baseIngredient); + return Objects.equals(id, that.id) && + Objects.equals(cocktail, that.cocktail) && + Objects.equals(instructions, that.instructions) && + Objects.equals(baseIngredient, that.baseIngredient); } @Override public int hashCode() { - return Objects.hash(id, cocktail, instructions, baseIngredient); + return Objects.hash(id, cocktail, + instructions, baseIngredient); } } diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java index 540811c409..12042c2ba6 100644 --- a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java @@ -26,8 +26,10 @@ public class UnrelatedEntitiesUnitTest { entityManager.persist(mojito); entityManager.persist(ginTonic); entityManager.persist(new Recipe(mojito.getName(), "Some instructions")); - entityManager.persist(new MultipleRecipe(1L, mojito.getName(), "some instructions", mojito.getCategory())); - entityManager.persist(new MultipleRecipe(2L, mojito.getName(), "some other instructions", mojito.getCategory())); + entityManager.persist(new MultipleRecipe(1L, mojito.getName(), + "some instructions", mojito.getCategory())); + entityManager.persist(new MultipleRecipe(2L, mojito.getName(), + "some other instructions", mojito.getCategory())); entityManager.getTransaction().commit(); } @@ -39,114 +41,116 @@ public class UnrelatedEntitiesUnitTest { @Test public void whenQueryingForCocktailThatHasRecipe_thenTheExpectedCocktailReturned() { // JPA - Cocktail cocktail = entityManager.createQuery( - "select c from Cocktail c join c.recipe", Cocktail.class) - .getSingleResult(); + Cocktail cocktail = entityManager.createQuery("select c " + + "from Cocktail c join c.recipe", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); - cocktail = entityManager.createQuery( - "select c from Cocktail c join Recipe r on c.name = r.cocktail", Cocktail.class) - .getSingleResult(); + cocktail = entityManager.createQuery("select c " + + "from Cocktail c join Recipe r " + + "on c.name = r.cocktail", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); // QueryDSL - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail) - .join(QCocktail.cocktail.recipe) - .fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .join(QCocktail.cocktail.recipe) + .fetchOne(); verifyResult(mojito, cocktail); - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail) - .join(QRecipe.recipe) - .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) - .fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .join(QRecipe.recipe) + .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) + .fetchOne(); verifyResult(mojito, cocktail); } @Test public void whenQueryingForCocktailThatHasNotARecipe_thenTheExpectedCocktailReturned() { - Cocktail cocktail = entityManager - .createQuery("select c from Cocktail c left join c.recipe r " + - "where r is null", - Cocktail.class) - .getSingleResult(); + Cocktail cocktail = entityManager.createQuery("select c " + + "from Cocktail c left join c.recipe r " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); - cocktail = entityManager - .createQuery("select c from Cocktail c left join Recipe r " + - "on c.name = r.cocktail " + - "where r is null", - Cocktail.class) - .getSingleResult(); + cocktail = entityManager.createQuery("select c " + + "from Cocktail c left join Recipe r " + + "on c.name = r.cocktail " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); QRecipe recipe = new QRecipe("alias"); - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail) - .leftJoin(QCocktail.cocktail.recipe, recipe) - .where(recipe.isNull()).fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .leftJoin(QCocktail.cocktail.recipe, recipe) + .where(recipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail) - .leftJoin(QRecipe.recipe) - .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) - .where(QRecipe.recipe.isNull()).fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .leftJoin(QRecipe.recipe) + .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) + .where(QRecipe.recipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); } @Test public void whenQueringForCocktailThatHasRecipes_thenTheExpectedCocktailReturned() { // JPQL - Cocktail cocktail = entityManager - .createQuery("select c from Cocktail c join c.recipeList", Cocktail.class) - .getSingleResult(); + Cocktail cocktail = entityManager.createQuery("select c " + + "from Cocktail c join c.recipeList", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); - cocktail = entityManager - .createQuery("select c from Cocktail c join MultipleRecipe mr on mr.cocktail = c.name", Cocktail.class) - .getSingleResult(); + cocktail = entityManager.createQuery("select c " + + "from Cocktail c join MultipleRecipe mr " + + "on mr.cocktail = c.name", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); // QueryDSL - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail).join(QCocktail.cocktail.recipeList).fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .join(QCocktail.cocktail.recipeList) + .fetchOne(); verifyResult(mojito, cocktail); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .join(QMultipleRecipe.multipleRecipe) - .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) - .fetchOne(); + .join(QMultipleRecipe.multipleRecipe) + .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) + .fetchOne(); verifyResult(mojito, cocktail); } @Test public void whenQueryingForCocktailThatHasNotRecipes_thenTheExpectedCocktailReturned() { // JPQL - Cocktail cocktail = entityManager - .createQuery("select c from Cocktail c left join c.recipeList r where r is null", Cocktail.class) - .getSingleResult(); + Cocktail cocktail = entityManager.createQuery("select c " + + "from Cocktail c left join c.recipeList r " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); - cocktail = entityManager.createQuery("select c from Cocktail c left join MultipleRecipe r " + - "on c.name = r.cocktail where r is null", Cocktail.class) - .getSingleResult(); + cocktail = entityManager.createQuery("select c " + + "from Cocktail c left join MultipleRecipe r " + + "on c.name = r.cocktail " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); // QueryDSL QMultipleRecipe multipleRecipe = new QMultipleRecipe("alias"); - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail) - .leftJoin(QCocktail.cocktail.recipeList, multipleRecipe) - .where(multipleRecipe.isNull()) - .fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .leftJoin(QCocktail.cocktail.recipeList, multipleRecipe) + .where(multipleRecipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); - cocktail = new JPAQuery(entityManager) - .from(QCocktail.cocktail).leftJoin(QMultipleRecipe.multipleRecipe) - .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) - .where(QMultipleRecipe.multipleRecipe.isNull()).fetchOne(); + cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) + .leftJoin(QMultipleRecipe.multipleRecipe) + .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) + .where(QMultipleRecipe.multipleRecipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); } @@ -158,25 +162,23 @@ public class UnrelatedEntitiesUnitTest { }; // JPQL - List recipes = entityManager - .createQuery("select distinct r from MultipleRecipe r join Cocktail c " + - "on r.cocktail = c.name " + - "and " + - "r.baseIngredient = :category", - MultipleRecipe.class) - .setParameter("category", mojito.getCategory()) - .getResultList(); + List recipes = entityManager.createQuery("select distinct r " + + "from MultipleRecipe r " + + "join Cocktail c " + + "on r.cocktail = c.name and r.baseIngredient = :category", + MultipleRecipe.class) + .setParameter("category", mojito.getCategory()) + .getResultList(); verifyResult.accept(recipes); // QueryDSL QCocktail cocktail = QCocktail.cocktail; QMultipleRecipe multipleRecipe = QMultipleRecipe.multipleRecipe; - recipes = new JPAQuery(entityManager) - .from(multipleRecipe) - .join(cocktail) - .on(multipleRecipe.cocktail.eq(cocktail.name) - .and(multipleRecipe.baseIngredient.eq(mojito.getCategory()))) - .fetch(); + recipes = new JPAQuery(entityManager).from(multipleRecipe) + .join(cocktail) + .on(multipleRecipe.cocktail.eq(cocktail.name) + .and(multipleRecipe.baseIngredient.eq(mojito.getCategory()))) + .fetch(); verifyResult.accept(recipes); } From 6677cf74d16bbb163adc8a4f873acc3c89920bc2 Mon Sep 17 00:00:00 2001 From: Kostas Karavitis Date: Wed, 8 Apr 2020 16:12:14 +0300 Subject: [PATCH 023/157] [BAEL-3936] Many to many underlying relationship test --- .../jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java index 12042c2ba6..27bf1d8b62 100644 --- a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java @@ -155,7 +155,7 @@ public class UnrelatedEntitiesUnitTest { } @Test - public void whenQueryingForRumCocktailsInMenuRecipes_thenTheExpectedRecipesReturned() { + public void whenQueryingForMultipleRecipes_thenTheExpectedRecipesReturned() { Consumer> verifyResult = recipes -> { assertEquals(2, recipes.size()); recipes.forEach(r -> assertEquals(mojito.getName(), r.getCocktail())); @@ -165,9 +165,8 @@ public class UnrelatedEntitiesUnitTest { List recipes = entityManager.createQuery("select distinct r " + "from MultipleRecipe r " + "join Cocktail c " - + "on r.cocktail = c.name and r.baseIngredient = :category", + + "on r.baseIngredient = c.category", MultipleRecipe.class) - .setParameter("category", mojito.getCategory()) .getResultList(); verifyResult.accept(recipes); @@ -176,8 +175,7 @@ public class UnrelatedEntitiesUnitTest { QMultipleRecipe multipleRecipe = QMultipleRecipe.multipleRecipe; recipes = new JPAQuery(entityManager).from(multipleRecipe) .join(cocktail) - .on(multipleRecipe.cocktail.eq(cocktail.name) - .and(multipleRecipe.baseIngredient.eq(mojito.getCategory()))) + .on(multipleRecipe.baseIngredient.eq(cocktail.category)) .fetch(); verifyResult.accept(recipes); } From 74e02b22165fe8b0046b516e0355e43167e427a4 Mon Sep 17 00:00:00 2001 From: Kostas Karavitis Date: Wed, 8 Apr 2020 18:44:32 +0300 Subject: [PATCH 024/157] [BAEL-3936] Fixed the name of menu table --- .../com/baeldung/jpa/unrelated/entities/Cocktail.java | 8 +++++--- .../jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java | 1 + 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java index 7f5ca66570..fdccad6bd7 100644 --- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java @@ -1,5 +1,7 @@ package com.baeldung.jpa.unrelated.entities; +import org.hibernate.annotations.Fetch; +import org.hibernate.annotations.FetchMode; import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; @@ -8,7 +10,7 @@ import java.util.List; import java.util.Objects; @Entity -@Table(name = "cocktails") +@Table(name = "menu") public class Cocktail { @Id @Column(name = "cocktail_name") @@ -22,7 +24,7 @@ public class Cocktail { @OneToOne @NotFound(action = NotFoundAction.IGNORE) - @JoinColumn(name = "cocktail_name", + @JoinColumn(name = "cocktail_name", referencedColumnName = "cocktail", insertable = false, updatable = false, foreignKey = @javax.persistence @@ -30,7 +32,7 @@ public class Cocktail { ) private Recipe recipe; - @OneToMany + @OneToMany(fetch = FetchType.LAZY) @NotFound(action = NotFoundAction.IGNORE) @JoinColumn( name = "cocktail", diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java index 27bf1d8b62..8733b3e7da 100644 --- a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java @@ -38,6 +38,7 @@ public class UnrelatedEntitiesUnitTest { entityManager.close(); } + @Test public void whenQueryingForCocktailThatHasRecipe_thenTheExpectedCocktailReturned() { // JPA From 6205b4965841c366c97fcb62bfe9f2d26ceb17b9 Mon Sep 17 00:00:00 2001 From: Sasa m Date: Thu, 9 Apr 2020 20:56:42 +0200 Subject: [PATCH 025/157] Remove unused commit --- .../baeldung/employee/config/AppConfig.java | 63 ------------------- .../config/ApplicationInitializer.java | 29 --------- .../employee/data/EmployeeDataAdapter.java | 9 --- .../data/EmployeeDataAdapterImpl.java | 28 --------- .../baeldung/employee/data/EmployeeRepo.java | 9 --- .../baeldung/employee/domain/Employee.java | 43 ------------- .../baeldung/employee/dto/EmployeeDTO.java | 9 --- .../employee/service/EmployeeController.java | 47 -------------- .../employee/service/EmployeeService.java | 8 --- .../employee/service/EmployeeServiceImpl.java | 25 -------- EmpServiceApp/src/createEmployeeTable.sql | 11 ---- .../web/WEB-INF/applicationContext.xml | 12 ---- EmpServiceApp/web/WEB-INF/web.xml | 25 -------- 13 files changed, 318 deletions(-) delete mode 100644 EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/domain/Employee.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java delete mode 100644 EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java delete mode 100644 EmpServiceApp/src/createEmployeeTable.sql delete mode 100644 EmpServiceApp/web/WEB-INF/applicationContext.xml delete mode 100644 EmpServiceApp/web/WEB-INF/web.xml diff --git a/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java b/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java deleted file mode 100644 index 3bde8fceed..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/config/AppConfig.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.baeldung.employee.config; - -import javax.persistence.EntityManagerFactory; -import javax.sql.DataSource; - -import org.modelmapper.ModelMapper; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.jpa.repository.config.EnableJpaRepositories; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabase; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; -import org.springframework.orm.jpa.JpaTransactionManager; -import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; -import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter; -import org.springframework.transaction.TransactionManager; - -@Configuration -@EnableJpaRepositories(basePackages = "com.baeldung.employee.data", entityManagerFactoryRef = "emf") -@ComponentScan(basePackages = "com.baeldung.employee") -public class AppConfig { - - @Bean - public DataSource h2DataSource() { - - EmbeddedDatabaseBuilder builder = new EmbeddedDatabaseBuilder(); - EmbeddedDatabase db = builder.setType(EmbeddedDatabaseType.H2) - .addScript("createEmployeeTable.sql") - .build(); - return db; - - } - - @Bean - public ModelMapper mapper() { - - return new ModelMapper(); - } - - - @Bean(name = "emf") - public LocalContainerEntityManagerFactoryBean entityManagerFactory() { - - HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter(); - - LocalContainerEntityManagerFactoryBean factory = new LocalContainerEntityManagerFactoryBean(); - factory.setJpaVendorAdapter(vendorAdapter); - factory.setPackagesToScan("com.baeldung.employee"); - factory.setDataSource(h2DataSource()); - - - return factory; - } - - @Bean - public TransactionManager jpaTransactionManager(EntityManagerFactory emf) { - JpaTransactionManager transactionManager = new JpaTransactionManager(); - transactionManager.setEntityManagerFactory(emf); - return transactionManager; - } - -} diff --git a/EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java b/EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java deleted file mode 100644 index 491e97b2c8..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/config/ApplicationInitializer.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.employee.config; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -public class ApplicationInitializer implements WebApplicationInitializer { - - @Override - public void onStartup(ServletContext servletContext) throws ServletException { - - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - context.register(AppConfig.class); - - servletContext.addListener(new ContextLoaderListener(context)); - - // Create DispatcherServlet - - ServletRegistration.Dynamic dispatcher = servletContext.addServlet("EmployeeSpringApp", new DispatcherServlet()); - dispatcher.setLoadOnStartup(1); - dispatcher.addMapping("/app"); - - } -} diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java deleted file mode 100644 index da5d5bb1a3..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapter.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.employee.data; - -import com.baeldung.employee.dto.EmployeeDTO; - -public interface EmployeeDataAdapter { - - void addEmployee(EmployeeDTO emp); - -} diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java deleted file mode 100644 index 54b3079844..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeDataAdapterImpl.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.employee.data; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; - -import org.modelmapper.ModelMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import com.baeldung.employee.domain.Employee; -import com.baeldung.employee.dto.EmployeeDTO; - -@Component -public class EmployeeDataAdapterImpl implements EmployeeDataAdapter { - - @PersistenceContext - private EntityManager em; - - @Autowired - private ModelMapper modelMapper; - - @Override - public void addEmployee(EmployeeDTO emp) { - - em.persist(modelMapper.map(emp, Employee.class)); - - } -} diff --git a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java b/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java deleted file mode 100644 index 0712f7823a..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/data/EmployeeRepo.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.employee.data; - -import org.springframework.data.jpa.repository.JpaRepository; - -import com.baeldung.employee.domain.Employee; - -public interface EmployeeRepo extends JpaRepository { - -} diff --git a/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java b/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java deleted file mode 100644 index 3b93b8a97e..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/domain/Employee.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.baeldung.employee.domain; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; - -@Entity -@Table -public class Employee { - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private int id; - - private String name; - - public Employee() { - } - - public Employee(int id, String name) { - this.id = id; - this.name = name; - } - - public long getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - // Standard constructors, getters and setters -} diff --git a/EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java b/EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java deleted file mode 100644 index 3b6b048a9c..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/dto/EmployeeDTO.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.employee.dto; - -public class EmployeeDTO { - - private long id; - private String name; - - // Standard constructors, getters and setters -} diff --git a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java deleted file mode 100644 index b258d11018..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeController.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.baeldung.employee.service; - -import java.net.URI; -import java.util.Map; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -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; -import org.springframework.web.servlet.support.ServletUriComponentsBuilder; - -import com.baeldung.employee.domain.Employee; - -@RestController -public class EmployeeController { - - @Autowired - private EmployeeService empService; - - @GetMapping(value = "/", produces = MediaType.TEXT_HTML_VALUE) - public String home() { - - return "This is employee app page"; - } - - @PostMapping(path = "/employees", consumes = "application/json", produces = "application/json") - public ResponseEntity addEmployee(@RequestBody Map empBody) { - - String id = empBody.get("id"); - String name = empBody.get("name"); - - Employee emp = new Employee(Integer.valueOf(id), name); - empService.addEmployee(emp); - - // Create resource uri - URI uri = ServletUriComponentsBuilder.fromCurrentRequest() - .buildAndExpand(emp.getId()) - .toUri(); - - // Send uri in response - return ResponseEntity.created(uri) - .build(); - } -} diff --git a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java deleted file mode 100644 index 81c7665a50..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.employee.service; - -import com.baeldung.employee.domain.Employee; - -public interface EmployeeService { - - void addEmployee(Employee emp); -} diff --git a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java b/EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java deleted file mode 100644 index 45aba2898b..0000000000 --- a/EmpServiceApp/src/com/baeldung/employee/service/EmployeeServiceImpl.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.baeldung.employee.service; - -import org.modelmapper.ModelMapper; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.baeldung.employee.data.EmployeeDataAdapter; -import com.baeldung.employee.domain.Employee; -import com.baeldung.employee.dto.EmployeeDTO; - -@Service -public class EmployeeServiceImpl implements EmployeeService { - - @Autowired - private EmployeeDataAdapter employeeDataAdapter; - - @Autowired - private ModelMapper modelMapper; - - @Override - public void addEmployee(Employee emp) { - employeeDataAdapter.addEmployee(modelMapper.map(emp, EmployeeDTO.class)); - } - -} diff --git a/EmpServiceApp/src/createEmployeeTable.sql b/EmpServiceApp/src/createEmployeeTable.sql deleted file mode 100644 index 14b8347bff..0000000000 --- a/EmpServiceApp/src/createEmployeeTable.sql +++ /dev/null @@ -1,11 +0,0 @@ -DROP TABLE IF EXISTS EMPLOYEE; - -CREATE TABLE EMPLOYEE ( - - ID IDENTITY PRIMARY KEY, - NAME VARCHAR(64) NOT NULL, - -); - -INSERT INTO EMPLOYEE (ID, NAME) VALUES (10, 'EMP 10'); -INSERT INTO EMPLOYEE (ID, NAME) VALUES (20, 'EMP 20'); diff --git a/EmpServiceApp/web/WEB-INF/applicationContext.xml b/EmpServiceApp/web/WEB-INF/applicationContext.xml deleted file mode 100644 index 54b3429708..0000000000 --- a/EmpServiceApp/web/WEB-INF/applicationContext.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/EmpServiceApp/web/WEB-INF/web.xml b/EmpServiceApp/web/WEB-INF/web.xml deleted file mode 100644 index 7731773f82..0000000000 --- a/EmpServiceApp/web/WEB-INF/web.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - Employee Spring App - - - org.springframework.web.context.ContextLoaderListener - - - - EmployeeSpringApp - org.springframework.web.servlet.DispatcherServlet - - contextConfigLocation - /WEB-INF/applicationContext.xml - - 1 - - - EmployeeSpringApp - /* - - \ No newline at end of file From c1b13d09314f92424cddca0c00171fc4ad87e139 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Fri, 10 Apr 2020 20:21:01 +0500 Subject: [PATCH 026/157] BAEL-3969 Spring Security - Custom Logout Handler --- .../LogoutDemoApplication.java | 13 +++ .../customlogouthandler/MvcConfiguration.java | 51 +++++++++ .../services/UserCache.java | 33 ++++++ .../customlogouthandler/user/User.java | 61 ++++++++++ .../customlogouthandler/user/UserUtils.java | 13 +++ .../web/CustomLogoutHandler.java | 27 +++++ .../web/UserController.java | 30 +++++ ...application-customlogouthandler.properties | 5 + .../CustomLogoutHandlerIntegrationTest.java | 106 ++++++++++++++++++ .../resources/customlogouthandler/after.sql | 1 + .../application.properties | 5 + .../resources/customlogouthandler/before.sql | 1 + 12 files changed, 346 insertions(+) create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-customlogouthandler.properties create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/after.sql create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties create mode 100644 spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/before.sql diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java new file mode 100644 index 0000000000..027334dd6b --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.customlogouthandler; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class LogoutDemoApplication { + + public static void main(String[] args) { + SpringApplication.run(LogoutDemoApplication.class, args); + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java new file mode 100644 index 0000000000..36de049a31 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java @@ -0,0 +1,51 @@ +package com.baeldung.customlogouthandler; + +import com.baeldung.customlogouthandler.web.CustomLogoutHandler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler; + +import javax.sql.DataSource; + +@Configuration +@EnableWebSecurity +public class MvcConfiguration extends WebSecurityConfigurerAdapter { + + @Autowired + private DataSource dataSource; + + @Autowired + private CustomLogoutHandler logoutHandler; + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .httpBasic().and() + .authorizeRequests() + .antMatchers(HttpMethod.GET, "/user/**").hasRole("USER") + .and() + .logout() + .logoutUrl("/user/logout") + .addLogoutHandler(logoutHandler) + .logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))) + .permitAll() + .and() + .csrf().disable() + .formLogin().disable(); + } + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.jdbcAuthentication() + .dataSource(dataSource) + .usersByUsernameQuery("select login, password, true from users where login=?") + .authoritiesByUsernameQuery("select login, role from users where login=?"); + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java new file mode 100644 index 0000000000..56c4d1e7c9 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java @@ -0,0 +1,33 @@ +package com.baeldung.customlogouthandler.services; + +import com.baeldung.customlogouthandler.user.User; +import org.springframework.stereotype.Service; + +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +@Service +public class UserCache { + + @PersistenceContext + private EntityManager entityManager; + + private final ConcurrentMap store = new ConcurrentHashMap<>(256); + + public User getByLogin(String login) { + return store.computeIfAbsent(login, k -> entityManager.createQuery("from User where login=:login", User.class) + .setParameter("login", k) + .getSingleResult()); + } + + public void evictUser(String login) { + store.remove(login); + } + + public int size() { + return this.store.size(); + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java new file mode 100644 index 0000000000..ca3a998c5c --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/User.java @@ -0,0 +1,61 @@ +package com.baeldung.customlogouthandler.user; + +import javax.persistence.*; + +@Entity +@Table(name = "users") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + @Column(unique = true) + private String login; + + private String password; + + private String role; + + private String language; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java new file mode 100644 index 0000000000..195497f7ba --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java @@ -0,0 +1,13 @@ +package com.baeldung.customlogouthandler.user; + +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +public class UserUtils { + + public static String getAuthenticatedUserLogin() { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + return auth != null ? ((org.springframework.security.core.userdetails.User) auth.getPrincipal()).getUsername() : null; + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java new file mode 100644 index 0000000000..2a335cd122 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java @@ -0,0 +1,27 @@ +package com.baeldung.customlogouthandler.web; + +import com.baeldung.customlogouthandler.services.UserCache; +import com.baeldung.customlogouthandler.user.UserUtils; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.logout.LogoutHandler; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Service +public class CustomLogoutHandler implements LogoutHandler { + + private final UserCache userCache; + + public CustomLogoutHandler(UserCache userCache) { + this.userCache = userCache; + } + + @Override + public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { + String login = UserUtils.getAuthenticatedUserLogin(); + userCache.evictUser(login); + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java new file mode 100644 index 0000000000..18cd8dda98 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java @@ -0,0 +1,30 @@ +package com.baeldung.customlogouthandler.web; + +import com.baeldung.customlogouthandler.services.UserCache; +import com.baeldung.customlogouthandler.user.User; +import com.baeldung.customlogouthandler.user.UserUtils; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + + +@Controller +@RequestMapping(path = "/user") +public class UserController { + + private final UserCache userCache; + + public UserController(UserCache userCache) { + this.userCache = userCache; + } + + @GetMapping(path = "/language") + @ResponseBody + public String getLanguage() { + String login = UserUtils.getAuthenticatedUserLogin(); + User user = userCache.getByLogin(login); + return user.getLanguage(); + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-customlogouthandler.properties b/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-customlogouthandler.properties new file mode 100644 index 0000000000..2cb766378d --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/resources/application-customlogouthandler.properties @@ -0,0 +1,5 @@ +spring.datasource.url=jdbc:postgresql://localhost:5432/test +spring.datasource.username=test +spring.datasource.password=test + +spring.jpa.hibernate.ddl-auto=create \ No newline at end of file diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java b/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java new file mode 100644 index 0000000000..3c325a2006 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java @@ -0,0 +1,106 @@ +package com.baeldung.customlogouthandler; + +import com.baeldung.customlogouthandler.services.UserCache; +import org.junit.jupiter.api.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.web.server.LocalServerPort; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.jdbc.SqlGroup; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import static org.assertj.core.api.Assertions.assertThat; + +@RunWith(SpringJUnit4ClassRunner.class) +@SpringBootTest(classes = {LogoutDemoApplication.class, MvcConfiguration.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@SqlGroup({ + @Sql(value = "classpath:customlogouthandler/before.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD), + @Sql(value = "classpath:customlogouthandler/after.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) +}) +class CustomLogoutHandlerIntegrationTest { + + @Autowired + private TestRestTemplate restTemplate; + + @Autowired + private UserCache userCache; + + @LocalServerPort + private int port; + + @Test + public void whenLogin_thenUseUserCache() throws Exception { + // User cache should be empty on start + assertThat(userCache.size()).isEqualTo(0); + + // Request using first login + ResponseEntity response = restTemplate + .withBasicAuth("user", "pass") + .getForEntity(getLanguageUrl(), String.class); + + assertThat(response.getBody()).contains("english"); + + // User cache must contain the user + assertThat(userCache.size()).isEqualTo(1); + + // Getting the session cookie + HttpHeaders requestHeaders = new HttpHeaders(); + requestHeaders.add("Cookie", response.getHeaders().getFirst(HttpHeaders.SET_COOKIE)); + + // Request with the session cookie + response = restTemplate + .exchange(getLanguageUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getBody()).contains("english"); + + // Logging out using the session cookies + response = restTemplate.exchange(getLogoutUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getStatusCode().value()).isEqualTo(200); + } + + @Test + public void whenLogout_thenCacheIsEmpty() throws Exception { + // User cache should be empty on start + assertThat(userCache.size()).isEqualTo(0); + + // Request using first login + ResponseEntity response = restTemplate + .withBasicAuth("user", "pass") + .getForEntity(getLanguageUrl(), String.class); + + assertThat(response.getBody()).contains("english"); + + // User cache must contain the user + assertThat(userCache.size()).isEqualTo(1); + + // Getting the session cookie + HttpHeaders requestHeaders = new HttpHeaders(); + requestHeaders.add("Cookie", response.getHeaders().getFirst(HttpHeaders.SET_COOKIE)); + + // Logging out using the session cookies + response = restTemplate.exchange(getLogoutUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getStatusCode().value()).isEqualTo(200); + + // User cache must be empty now + // this is the reaction on custom logout filter execution + assertThat(userCache.size()).isEqualTo(0); + + // Assert unathorized request + response = restTemplate.exchange(getLanguageUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getStatusCode().value()).isEqualTo(401); + } + + private String getLanguageUrl() { + return "http://localhost:" + port + "/user/language"; + } + + private String getLogoutUrl() { + return "http://localhost:" + port + "/user/logout"; + } + +} diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/after.sql b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/after.sql new file mode 100644 index 0000000000..df6f312987 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/after.sql @@ -0,0 +1 @@ +delete from users; \ No newline at end of file diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties new file mode 100644 index 0000000000..8b6d47ebe9 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties @@ -0,0 +1,5 @@ +spring.datasource.url=jdbc:postgresql://localhost:5432/develop +spring.datasource.username=develop +spring.datasource.password=develop + +spring.jpa.hibernate.ddl-auto=create diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/before.sql b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/before.sql new file mode 100644 index 0000000000..bb0a85f613 --- /dev/null +++ b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/before.sql @@ -0,0 +1 @@ +insert into users (login, password, role, language) values ('user', '{noop}pass', 'ROLE_USER', 'english'); \ No newline at end of file From 07b5c1f01020dfbd7a3dfa17054f21347d451c65 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Sun, 12 Apr 2020 16:16:36 +0500 Subject: [PATCH 027/157] Code review fixes --- ...tion.java => CustomLogoutApplication.java} | 8 +- .../customlogouthandler/MvcConfiguration.java | 30 ++-- .../services/UserCache.java | 24 ++-- .../customlogouthandler/user/UserUtils.java | 5 +- .../web/CustomLogoutHandler.java | 13 +- .../web/UserController.java | 10 +- .../CustomLogoutHandlerIntegrationTest.java | 132 +++++++++--------- .../application.properties | 6 +- 8 files changed, 119 insertions(+), 109 deletions(-) rename spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/{LogoutDemoApplication.java => CustomLogoutApplication.java} (54%) diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java similarity index 54% rename from spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java rename to spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java index 027334dd6b..39d867b1f4 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/LogoutDemoApplication.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/CustomLogoutApplication.java @@ -4,10 +4,10 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication -public class LogoutDemoApplication { +public class CustomLogoutApplication { - public static void main(String[] args) { - SpringApplication.run(LogoutDemoApplication.class, args); - } + public static void main(String[] args) { + SpringApplication.run(CustomLogoutApplication.class, args); + } } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java index 36de049a31..3e17a7c397 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java @@ -1,6 +1,7 @@ package com.baeldung.customlogouthandler; -import com.baeldung.customlogouthandler.web.CustomLogoutHandler; +import javax.sql.DataSource; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpMethod; @@ -11,7 +12,7 @@ import org.springframework.security.config.annotation.web.configuration.EnableWe import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.authentication.logout.HttpStatusReturningLogoutSuccessHandler; -import javax.sql.DataSource; +import com.baeldung.customlogouthandler.web.CustomLogoutHandler; @Configuration @EnableWebSecurity @@ -25,27 +26,30 @@ public class MvcConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { - http - .httpBasic().and() + http.httpBasic() + .and() .authorizeRequests() - .antMatchers(HttpMethod.GET, "/user/**").hasRole("USER") - .and() - .logout() + .antMatchers(HttpMethod.GET, "/user/**") + .hasRole("USER") + .and() + .logout() .logoutUrl("/user/logout") .addLogoutHandler(logoutHandler) .logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))) .permitAll() - .and() - .csrf().disable() - .formLogin().disable(); + .and() + .csrf() + .disable() + .formLogin() + .disable(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.jdbcAuthentication() - .dataSource(dataSource) - .usersByUsernameQuery("select login, password, true from users where login=?") - .authoritiesByUsernameQuery("select login, role from users where login=?"); + .dataSource(dataSource) + .usersByUsernameQuery("select login, password, true from users where login=?") + .authoritiesByUsernameQuery("select login, role from users where login=?"); } } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java index 56c4d1e7c9..b86edc0dee 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/services/UserCache.java @@ -1,12 +1,14 @@ package com.baeldung.customlogouthandler.services; -import com.baeldung.customlogouthandler.user.User; -import org.springframework.stereotype.Service; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; + +import org.springframework.stereotype.Service; + +import com.baeldung.customlogouthandler.user.User; @Service public class UserCache { @@ -16,18 +18,18 @@ public class UserCache { private final ConcurrentMap store = new ConcurrentHashMap<>(256); - public User getByLogin(String login) { - return store.computeIfAbsent(login, k -> entityManager.createQuery("from User where login=:login", User.class) - .setParameter("login", k) - .getSingleResult()); + public User getByUserName(String userName) { + return store.computeIfAbsent(userName, k -> entityManager.createQuery("from User where login=:login", User.class) + .setParameter("login", k) + .getSingleResult()); } - public void evictUser(String login) { - store.remove(login); + public void evictUser(String userName) { + store.remove(userName); } public int size() { - return this.store.size(); + return store.size(); } } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java index 195497f7ba..aa9a521b01 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/user/UserUtils.java @@ -5,8 +5,9 @@ import org.springframework.security.core.context.SecurityContextHolder; public class UserUtils { - public static String getAuthenticatedUserLogin() { - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + public static String getAuthenticatedUserName() { + Authentication auth = SecurityContextHolder.getContext() + .getAuthentication(); return auth != null ? ((org.springframework.security.core.userdetails.User) auth.getPrincipal()).getUsername() : null; } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java index 2a335cd122..a89c9a570d 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/CustomLogoutHandler.java @@ -1,13 +1,14 @@ package com.baeldung.customlogouthandler.web; -import com.baeldung.customlogouthandler.services.UserCache; -import com.baeldung.customlogouthandler.user.UserUtils; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.logout.LogoutHandler; import org.springframework.stereotype.Service; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import com.baeldung.customlogouthandler.services.UserCache; +import com.baeldung.customlogouthandler.user.UserUtils; @Service public class CustomLogoutHandler implements LogoutHandler { @@ -20,8 +21,8 @@ public class CustomLogoutHandler implements LogoutHandler { @Override public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) { - String login = UserUtils.getAuthenticatedUserLogin(); - userCache.evictUser(login); + String userName = UserUtils.getAuthenticatedUserName(); + userCache.evictUser(userName); } } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java index 18cd8dda98..b2d332a1bb 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/web/UserController.java @@ -1,13 +1,13 @@ package com.baeldung.customlogouthandler.web; -import com.baeldung.customlogouthandler.services.UserCache; -import com.baeldung.customlogouthandler.user.User; -import com.baeldung.customlogouthandler.user.UserUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; +import com.baeldung.customlogouthandler.services.UserCache; +import com.baeldung.customlogouthandler.user.User; +import com.baeldung.customlogouthandler.user.UserUtils; @Controller @RequestMapping(path = "/user") @@ -22,8 +22,8 @@ public class UserController { @GetMapping(path = "/language") @ResponseBody public String getLanguage() { - String login = UserUtils.getAuthenticatedUserLogin(); - User user = userCache.getByLogin(login); + String userName = UserUtils.getAuthenticatedUserName(); + User user = userCache.getByUserName(userName); return user.getLanguage(); } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java b/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java index 3c325a2006..cd8a1a72d6 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/test/java/com/baeldung/customlogouthandler/CustomLogoutHandlerIntegrationTest.java @@ -1,6 +1,7 @@ package com.baeldung.customlogouthandler; -import com.baeldung.customlogouthandler.services.UserCache; +import static org.assertj.core.api.Assertions.assertThat; + import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; @@ -11,96 +12,97 @@ import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; import org.springframework.test.context.jdbc.Sql; import org.springframework.test.context.jdbc.SqlGroup; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.customlogouthandler.services.UserCache; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(classes = {LogoutDemoApplication.class, MvcConfiguration.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) -@SqlGroup({ - @Sql(value = "classpath:customlogouthandler/before.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD), - @Sql(value = "classpath:customlogouthandler/after.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) -}) +@SpringBootTest(classes = { CustomLogoutApplication.class }, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@SqlGroup({ @Sql(value = "classpath:customlogouthandler/before.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD), @Sql(value = "classpath:customlogouthandler/after.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) }) +@TestPropertySource(locations="classpath:customlogouthandler/application.properties") class CustomLogoutHandlerIntegrationTest { - @Autowired - private TestRestTemplate restTemplate; + @Autowired + private TestRestTemplate restTemplate; - @Autowired - private UserCache userCache; + @Autowired + private UserCache userCache; - @LocalServerPort - private int port; + @LocalServerPort + private int port; - @Test - public void whenLogin_thenUseUserCache() throws Exception { - // User cache should be empty on start - assertThat(userCache.size()).isEqualTo(0); + @Test + public void whenLogin_thenUseUserCache() { + // User cache should be empty on start + assertThat(userCache.size()).isEqualTo(0); - // Request using first login - ResponseEntity response = restTemplate - .withBasicAuth("user", "pass") - .getForEntity(getLanguageUrl(), String.class); + // Request using first login + ResponseEntity response = restTemplate.withBasicAuth("user", "pass") + .getForEntity(getLanguageUrl(), String.class); - assertThat(response.getBody()).contains("english"); + assertThat(response.getBody()).contains("english"); - // User cache must contain the user - assertThat(userCache.size()).isEqualTo(1); + // User cache must contain the user + assertThat(userCache.size()).isEqualTo(1); - // Getting the session cookie - HttpHeaders requestHeaders = new HttpHeaders(); - requestHeaders.add("Cookie", response.getHeaders().getFirst(HttpHeaders.SET_COOKIE)); + // Getting the session cookie + HttpHeaders requestHeaders = new HttpHeaders(); + requestHeaders.add("Cookie", response.getHeaders() + .getFirst(HttpHeaders.SET_COOKIE)); - // Request with the session cookie - response = restTemplate - .exchange(getLanguageUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); - assertThat(response.getBody()).contains("english"); + // Request with the session cookie + response = restTemplate.exchange(getLanguageUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getBody()).contains("english"); - // Logging out using the session cookies - response = restTemplate.exchange(getLogoutUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); - assertThat(response.getStatusCode().value()).isEqualTo(200); - } + // Logging out using the session cookies + response = restTemplate.exchange(getLogoutUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getStatusCode() + .value()).isEqualTo(200); + } - @Test - public void whenLogout_thenCacheIsEmpty() throws Exception { - // User cache should be empty on start - assertThat(userCache.size()).isEqualTo(0); + @Test + public void whenLogout_thenCacheIsEmpty() { + // User cache should be empty on start + assertThat(userCache.size()).isEqualTo(0); - // Request using first login - ResponseEntity response = restTemplate - .withBasicAuth("user", "pass") - .getForEntity(getLanguageUrl(), String.class); + // Request using first login + ResponseEntity response = restTemplate.withBasicAuth("user", "pass") + .getForEntity(getLanguageUrl(), String.class); - assertThat(response.getBody()).contains("english"); + assertThat(response.getBody()).contains("english"); - // User cache must contain the user - assertThat(userCache.size()).isEqualTo(1); + // User cache must contain the user + assertThat(userCache.size()).isEqualTo(1); - // Getting the session cookie - HttpHeaders requestHeaders = new HttpHeaders(); - requestHeaders.add("Cookie", response.getHeaders().getFirst(HttpHeaders.SET_COOKIE)); + // Getting the session cookie + HttpHeaders requestHeaders = new HttpHeaders(); + requestHeaders.add("Cookie", response.getHeaders() + .getFirst(HttpHeaders.SET_COOKIE)); - // Logging out using the session cookies - response = restTemplate.exchange(getLogoutUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); - assertThat(response.getStatusCode().value()).isEqualTo(200); + // Logging out using the session cookies + response = restTemplate.exchange(getLogoutUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getStatusCode() + .value()).isEqualTo(200); - // User cache must be empty now - // this is the reaction on custom logout filter execution - assertThat(userCache.size()).isEqualTo(0); + // User cache must be empty now + // this is the reaction on custom logout filter execution + assertThat(userCache.size()).isEqualTo(0); - // Assert unathorized request - response = restTemplate.exchange(getLanguageUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); - assertThat(response.getStatusCode().value()).isEqualTo(401); - } + // Assert unauthorized request + response = restTemplate.exchange(getLanguageUrl(), HttpMethod.GET, new HttpEntity(requestHeaders), String.class); + assertThat(response.getStatusCode() + .value()).isEqualTo(401); + } - private String getLanguageUrl() { - return "http://localhost:" + port + "/user/language"; - } + private String getLanguageUrl() { + return "http://localhost:" + port + "/user/language"; + } - private String getLogoutUrl() { - return "http://localhost:" + port + "/user/logout"; - } + private String getLogoutUrl() { + return "http://localhost:" + port + "/user/logout"; + } } diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties index 8b6d47ebe9..9edd853f2c 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties +++ b/spring-security-modules/spring-security-mvc-boot-2/src/test/resources/customlogouthandler/application.properties @@ -1,5 +1,5 @@ -spring.datasource.url=jdbc:postgresql://localhost:5432/develop -spring.datasource.username=develop -spring.datasource.password=develop +spring.datasource.url=jdbc:postgresql://localhost:5432/test +spring.datasource.username=test +spring.datasource.password=test spring.jpa.hibernate.ddl-auto=create From 63027fd269c46259d39e56b9ddd87380e99a5232 Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Tue, 14 Apr 2020 00:43:27 -0600 Subject: [PATCH 028/157] BAEL-3961 Using a list of values in a JDBCTemplate IN clause --- .../main/java/com/baeldung/jdbc/Employee.java | 7 +++ .../java/com/baeldung/jdbc/EmployeeDAO.java | 43 ++++++++++++- .../baeldung/jdbc/EmployeeDAOUnitTest.java | 63 +++++++++++++++++-- 3 files changed, 106 insertions(+), 7 deletions(-) diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java index a43eb265c7..d5f87ca3df 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java @@ -9,6 +9,13 @@ public class Employee { private String address; + public Employee(int id, String firstName, String lastName, String address) { + setId(id); + setFirstName(firstName); + setLastName(lastName); + setAddress(address); + } + public int getId() { return id; } diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java index b5bf9452ed..dec88ee1f6 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java @@ -1,21 +1,62 @@ package com.baeldung.jdbc; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; +import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; +import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.stereotype.Repository; @Repository public class EmployeeDAO { private JdbcTemplate jdbcTemplate; + private NamedParameterJdbcTemplate namedJdbcTemplate; public void setDataSource(DataSource dataSource) { jdbcTemplate = new JdbcTemplate(dataSource); + namedJdbcTemplate = new NamedParameterJdbcTemplate(dataSource); } public int getCountOfEmployees() { return jdbcTemplate.queryForObject("SELECT COUNT(*) FROM EMPLOYEE", Integer.class); } - + public List getEmployeesFromIdListNamed(List ids) { + SqlParameterSource parameters = new MapSqlParameterSource("ids", ids); + List employees = namedJdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (:ids)", + parameters, + (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"), rs.getString("address"))); + + return employees; + } + + public List getEmployeesFromIdList(List ids) { + String inSql = String.join(",", Collections.nCopies(ids.size(), "?")); + List employees = jdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (" + inSql +")", + ids.toArray(), + (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"), rs.getString("address"))); + + return employees; + } + + public List getEmployeesFromLargeIdList(List ids) { + jdbcTemplate.execute("CREATE TEMPORARY TABLE employee_tmp (id INT NOT NULL)"); + + List employeeIds = new ArrayList<>(); + for (Integer id : ids) { + employeeIds.add(new Object[] { id }); + } + jdbcTemplate.batchUpdate("INSERT INTO employee_tmp VALUES(?)", employeeIds); + + List employees = jdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (SELECT id FROM employee_tmp)", + (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"), rs.getString("address"))); + + return employees; + } + } diff --git a/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java b/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java index 71e8fb4263..f21704221b 100644 --- a/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java +++ b/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java @@ -2,8 +2,12 @@ package com.baeldung.jdbc; import static org.junit.jupiter.api.Assertions.assertEquals; +import java.util.ArrayList; +import java.util.List; + import javax.sql.DataSource; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; @@ -14,13 +18,24 @@ import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseBuilder; import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseType; import org.springframework.test.util.ReflectionTestUtils; - @RunWith(MockitoJUnitRunner.class) public class EmployeeDAOUnitTest { @Mock JdbcTemplate jdbcTemplate; + DataSource dataSource; + + @Before + public void setup() { + dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2) + .generateUniqueName(true) + .addScript("classpath:jdbc/schema.sql") + .addScript("classpath:jdbc/test-data.sql") + .build(); + + } + @Test public void whenMockJdbcTemplate_thenReturnCorrectEmployeeCount() { EmployeeDAO employeeDAO = new EmployeeDAO(); @@ -38,14 +53,50 @@ public class EmployeeDAOUnitTest { @Test public void whenInjectInMemoryDataSource_thenReturnCorrectEmployeeCount() { - DataSource dataSource = new EmbeddedDatabaseBuilder().setType(EmbeddedDatabaseType.H2) - .addScript("classpath:jdbc/schema.sql") - .addScript("classpath:jdbc/test-data.sql") - .build(); - EmployeeDAO employeeDAO = new EmployeeDAO(); employeeDAO.setDataSource(dataSource); assertEquals(4, employeeDAO.getCountOfEmployees()); } + + @Test + public void givenSmallIdList_whenGetEmployeesFromIdList_thenReturnCorrectEmployees() { + List ids = new ArrayList<>(); + ids.add(1); + ids.add(3); + ids.add(4); + EmployeeDAO employeeDAO = new EmployeeDAO(); + employeeDAO.setDataSource(dataSource); + + List employees = employeeDAO.getEmployeesFromIdList(ids); + + assertEquals(3, employees.size()); + assertEquals(1, employees.get(0).getId()); + assertEquals(3, employees.get(1).getId()); + assertEquals(4, employees.get(2).getId()); + + employees = employeeDAO.getEmployeesFromIdListNamed(ids); + + assertEquals(3, employees.size()); + assertEquals(1, employees.get(0).getId()); + assertEquals(3, employees.get(1).getId()); + assertEquals(4, employees.get(2).getId()); + } + + @Test + public void givenLargeIdList_whenGetEmployeesFromIdList_thenReturnCorrectEmployees() { + List ids = new ArrayList<>(); + ids.add(1); + ids.add(3); + ids.add(4); + EmployeeDAO employeeDAO = new EmployeeDAO(); + employeeDAO.setDataSource(dataSource); + + List employees = employeeDAO.getEmployeesFromLargeIdList(ids); + + assertEquals(3, employees.size()); + assertEquals(1, employees.get(0).getId()); + assertEquals(3, employees.get(1).getId()); + assertEquals(4, employees.get(2).getId()); + } } From 78e180f35d3a6de9a05bd122df6614075332a6ac Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Tue, 14 Apr 2020 19:23:11 -0600 Subject: [PATCH 029/157] BAEL-3961 Make the program more robust by only create the table when necessary and clean all data in the temp table. --- .../src/main/java/com/baeldung/jdbc/EmployeeDAO.java | 3 ++- .../src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java index dec88ee1f6..25d280ad12 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java @@ -45,7 +45,8 @@ public class EmployeeDAO { } public List getEmployeesFromLargeIdList(List ids) { - jdbcTemplate.execute("CREATE TEMPORARY TABLE employee_tmp (id INT NOT NULL)"); + jdbcTemplate.execute("CREATE TEMPORARY TABLE IF NOT EXISTS employee_tmp (id INT NOT NULL)"); + jdbcTemplate.update("DELETE FROM employee_tmp"); List employeeIds = new ArrayList<>(); for (Integer id : ids) { diff --git a/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java b/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java index f21704221b..369725bafd 100644 --- a/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java +++ b/persistence-modules/spring-persistence-simple-2/src/test/java/com/baeldung/jdbc/EmployeeDAOUnitTest.java @@ -98,5 +98,10 @@ public class EmployeeDAOUnitTest { assertEquals(1, employees.get(0).getId()); assertEquals(3, employees.get(1).getId()); assertEquals(4, employees.get(2).getId()); + + ids.clear(); + ids.add(2); + employees = employeeDAO.getEmployeesFromLargeIdList(ids); + assertEquals(1, employees.size()); } } From 36d7572276e4ec5d142f496b92d954911e06951e Mon Sep 17 00:00:00 2001 From: Kostas Karavitis Date: Fri, 17 Apr 2020 19:24:01 +0300 Subject: [PATCH 030/157] [BAEL-3936] Fixed formatting --- .../java/com/baeldung/jpa/unrelated/entities/Cocktail.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java index fdccad6bd7..96310c1cc5 100644 --- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Cocktail.java @@ -28,8 +28,7 @@ public class Cocktail { referencedColumnName = "cocktail", insertable = false, updatable = false, foreignKey = @javax.persistence - .ForeignKey(value = ConstraintMode.NO_CONSTRAINT) - ) + .ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private Recipe recipe; @OneToMany(fetch = FetchType.LAZY) @@ -40,7 +39,7 @@ public class Cocktail { insertable = false, updatable = false, foreignKey = @javax.persistence - .ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) + .ForeignKey(value = ConstraintMode.NO_CONSTRAINT)) private List recipeList; public Cocktail() { From 7678f4a0cc7feb670715f7f3c3124bbdebc9bec5 Mon Sep 17 00:00:00 2001 From: Kirill Vlasov Date: Sat, 18 Apr 2020 08:00:52 +0500 Subject: [PATCH 031/157] Code review --- .../java/com/baeldung/customlogouthandler/MvcConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java index 3e17a7c397..c363effb4e 100644 --- a/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java +++ b/spring-security-modules/spring-security-mvc-boot-2/src/main/java/com/baeldung/customlogouthandler/MvcConfiguration.java @@ -35,7 +35,7 @@ public class MvcConfiguration extends WebSecurityConfigurerAdapter { .logout() .logoutUrl("/user/logout") .addLogoutHandler(logoutHandler) - .logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK))) + .logoutSuccessHandler(new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)) .permitAll() .and() .csrf() From 374905467e7ed9769c9cd6d834652a7198a22350 Mon Sep 17 00:00:00 2001 From: Justin Albano Date: Sat, 18 Apr 2020 11:48:26 -0400 Subject: [PATCH 032/157] BAEL-3965: Created examples for instance and static factory methods. --- .../java/com/baeldung/factorymethod/Bar.java | 18 ++++++++++++++ .../java/com/baeldung/factorymethod/Foo.java | 5 ++++ .../factorymethod/InstanceBarFactory.java | 8 +++++++ .../factorymethod/InstanceFooFactory.java | 8 +++++++ .../factorymethod/SingletonBarFactory.java | 11 +++++++++ .../factorymethod/SingletonFooFactory.java | 10 ++++++++ .../InstanceBarFactoryIntegrationTest.java | 24 +++++++++++++++++++ .../InstanceFooFactoryIntegrationTest.java | 22 +++++++++++++++++ .../SingletonBarFactoryIntegrationTest.java | 24 +++++++++++++++++++ .../SingletonFooFactoryIntegrationTest.java | 22 +++++++++++++++++ .../factorymethod/instance-bar-config.xml | 20 ++++++++++++++++ .../factorymethod/instance-foo-config.xml | 18 ++++++++++++++ .../factorymethod/static-bar-config.xml | 20 ++++++++++++++++ .../factorymethod/static-foo-config.xml | 18 ++++++++++++++ 14 files changed, 228 insertions(+) create mode 100644 spring-core-3/src/main/java/com/baeldung/factorymethod/Bar.java create mode 100644 spring-core-3/src/main/java/com/baeldung/factorymethod/Foo.java create mode 100644 spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java create mode 100644 spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java create mode 100644 spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java create mode 100644 spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java create mode 100644 spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java create mode 100644 spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java create mode 100644 spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java create mode 100644 spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java create mode 100644 spring-core-3/src/test/resources/factorymethod/instance-bar-config.xml create mode 100644 spring-core-3/src/test/resources/factorymethod/instance-foo-config.xml create mode 100644 spring-core-3/src/test/resources/factorymethod/static-bar-config.xml create mode 100644 spring-core-3/src/test/resources/factorymethod/static-foo-config.xml diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/Bar.java b/spring-core-3/src/main/java/com/baeldung/factorymethod/Bar.java new file mode 100644 index 0000000000..22ef5b3429 --- /dev/null +++ b/spring-core-3/src/main/java/com/baeldung/factorymethod/Bar.java @@ -0,0 +1,18 @@ +package com.baeldung.factorymethod; + +public class Bar { + + private String name; + + public Bar(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/Foo.java b/spring-core-3/src/main/java/com/baeldung/factorymethod/Foo.java new file mode 100644 index 0000000000..54bd0c9ff4 --- /dev/null +++ b/spring-core-3/src/main/java/com/baeldung/factorymethod/Foo.java @@ -0,0 +1,5 @@ +package com.baeldung.factorymethod; + +public class Foo { + +} diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java b/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java new file mode 100644 index 0000000000..f834b82aee --- /dev/null +++ b/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java @@ -0,0 +1,8 @@ +package com.baeldung.factorymethod; + +public class InstanceBarFactory { + + public Bar createInstance(String name) { + return new Bar(name); + } +} diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java b/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java new file mode 100644 index 0000000000..c3125d3339 --- /dev/null +++ b/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java @@ -0,0 +1,8 @@ +package com.baeldung.factorymethod; + +public class InstanceFooFactory { + + public Foo createInstance() { + return new Foo(); + } +} diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java b/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java new file mode 100644 index 0000000000..93802819b1 --- /dev/null +++ b/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java @@ -0,0 +1,11 @@ +package com.baeldung.factorymethod; + +public class SingletonBarFactory { + + private static final Bar INSTANCE = new Bar("unnamed"); + + public static Bar createInstance(String name) { + INSTANCE.setName(name); + return INSTANCE; + } +} diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java b/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java new file mode 100644 index 0000000000..77d56cc7f6 --- /dev/null +++ b/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java @@ -0,0 +1,10 @@ +package com.baeldung.factorymethod; + +public class SingletonFooFactory { + + private static final Foo INSTANCE = new Foo(); + + public static Foo createInstance() { + return INSTANCE; + } +} diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java new file mode 100644 index 0000000000..b5728316e7 --- /dev/null +++ b/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java @@ -0,0 +1,24 @@ +package com.baeldung.factorymethod; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +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; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("/factorymethod/instance-bar-config.xml") +public class InstanceBarFactoryIntegrationTest { + + @Autowired + private Bar instance; + + @Test + public void givenValidInstanceFactoryConfig_whenCreateInstance_thenNameIsCorrect() { + assertNotNull(instance); + assertEquals("someName", instance.getName()); + } +} diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java new file mode 100644 index 0000000000..6b1857c2f2 --- /dev/null +++ b/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java @@ -0,0 +1,22 @@ +package com.baeldung.factorymethod; + +import static org.junit.Assert.assertNotNull; + +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; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("/factorymethod/instance-foo-config.xml") +public class InstanceFooFactoryIntegrationTest { + + @Autowired + private Foo foo; + + @Test + public void givenValidInstanceFactoryConfig_whenCreateFooInstance_thenInstanceIsNotNull() { + assertNotNull(foo); + } +} diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java new file mode 100644 index 0000000000..403b46156b --- /dev/null +++ b/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java @@ -0,0 +1,24 @@ +package com.baeldung.factorymethod; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +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; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("/factorymethod/static-bar-config.xml") +public class SingletonBarFactoryIntegrationTest { + + @Autowired + private Bar instance; + + @Test + public void givenValidStaticFactoryConfig_whenCreateInstance_thenNameIsCorrect() { + assertNotNull(instance); + assertEquals("someName", instance.getName()); + } +} diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java b/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java new file mode 100644 index 0000000000..52154b81ab --- /dev/null +++ b/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java @@ -0,0 +1,22 @@ +package com.baeldung.factorymethod; + +import static org.junit.Assert.assertNotNull; + +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; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration("/factorymethod/static-foo-config.xml") +public class SingletonFooFactoryIntegrationTest { + + @Autowired + private Foo singleton; + + @Test + public void givenValidStaticFactoryConfig_whenCreateInstance_thenInstanceIsNotNull() { + assertNotNull(singleton); + } +} diff --git a/spring-core-3/src/test/resources/factorymethod/instance-bar-config.xml b/spring-core-3/src/test/resources/factorymethod/instance-bar-config.xml new file mode 100644 index 0000000000..40d2f33683 --- /dev/null +++ b/spring-core-3/src/test/resources/factorymethod/instance-bar-config.xml @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file diff --git a/spring-core-3/src/test/resources/factorymethod/instance-foo-config.xml b/spring-core-3/src/test/resources/factorymethod/instance-foo-config.xml new file mode 100644 index 0000000000..c45bef6a85 --- /dev/null +++ b/spring-core-3/src/test/resources/factorymethod/instance-foo-config.xml @@ -0,0 +1,18 @@ + + + + + + + + \ No newline at end of file diff --git a/spring-core-3/src/test/resources/factorymethod/static-bar-config.xml b/spring-core-3/src/test/resources/factorymethod/static-bar-config.xml new file mode 100644 index 0000000000..4d1befc645 --- /dev/null +++ b/spring-core-3/src/test/resources/factorymethod/static-bar-config.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/spring-core-3/src/test/resources/factorymethod/static-foo-config.xml b/spring-core-3/src/test/resources/factorymethod/static-foo-config.xml new file mode 100644 index 0000000000..83e61a656c --- /dev/null +++ b/spring-core-3/src/test/resources/factorymethod/static-foo-config.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file From c68c7648a3361ee26f35356e618ddc9ab189d3f0 Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Sat, 18 Apr 2020 12:48:37 -0600 Subject: [PATCH 033/157] BAEL-3961 Remove address field of Employee class. --- .../main/java/com/baeldung/jdbc/Employee.java | 17 ++++------------- .../java/com/baeldung/jdbc/EmployeeDAO.java | 11 ++++++----- .../src/main/resources/jdbc/schema.sql | 3 +-- .../src/main/resources/jdbc/test-data.sql | 8 ++++---- 4 files changed, 15 insertions(+), 24 deletions(-) diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java index d5f87ca3df..bd6fe0fb15 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/Employee.java @@ -7,13 +7,11 @@ public class Employee { private String lastName; - private String address; - public Employee(int id, String firstName, String lastName, String address) { - setId(id); - setFirstName(firstName); - setLastName(lastName); - setAddress(address); + public Employee(int id, String firstName, String lastName) { + this.id = id; + this.firstName = firstName; + this.lastName = lastName; } public int getId() { @@ -40,12 +38,5 @@ public class Employee { this.lastName = lastName; } - public String getAddress() { - return address; - } - - public void setAddress(final String address) { - this.address = address; - } } diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java index 25d280ad12..8637f6f851 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java @@ -30,23 +30,22 @@ public class EmployeeDAO { SqlParameterSource parameters = new MapSqlParameterSource("ids", ids); List employees = namedJdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (:ids)", parameters, - (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"), rs.getString("address"))); + (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"))); return employees; } public List getEmployeesFromIdList(List ids) { String inSql = String.join(",", Collections.nCopies(ids.size(), "?")); - List employees = jdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (" + inSql +")", + List employees = jdbcTemplate.query(String.format("SELECT * FROM EMPLOYEE WHERE id IN (%s)", inSql), ids.toArray(), - (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"), rs.getString("address"))); + (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"))); return employees; } public List getEmployeesFromLargeIdList(List ids) { jdbcTemplate.execute("CREATE TEMPORARY TABLE IF NOT EXISTS employee_tmp (id INT NOT NULL)"); - jdbcTemplate.update("DELETE FROM employee_tmp"); List employeeIds = new ArrayList<>(); for (Integer id : ids) { @@ -55,7 +54,9 @@ public class EmployeeDAO { jdbcTemplate.batchUpdate("INSERT INTO employee_tmp VALUES(?)", employeeIds); List employees = jdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (SELECT id FROM employee_tmp)", - (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"), rs.getString("address"))); + (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"))); + + jdbcTemplate.update("DELETE FROM employee_tmp"); return employees; } diff --git a/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql index 3401c5d963..be102431ca 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql +++ b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/schema.sql @@ -2,6 +2,5 @@ CREATE TABLE EMPLOYEE ( ID int NOT NULL PRIMARY KEY, FIRST_NAME varchar(255), - LAST_NAME varchar(255), - ADDRESS varchar(255) + LAST_NAME varchar(255) ); \ No newline at end of file diff --git a/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql index c1669c156d..5421c09849 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql +++ b/persistence-modules/spring-persistence-simple-2/src/main/resources/jdbc/test-data.sql @@ -1,4 +1,4 @@ -INSERT INTO EMPLOYEE VALUES (1, 'James', 'Gosling', 'Canada'); -INSERT INTO EMPLOYEE VALUES (2, 'Donald', 'Knuth', 'USA'); -INSERT INTO EMPLOYEE VALUES (3, 'Linus', 'Torvalds', 'Finland'); -INSERT INTO EMPLOYEE VALUES (4, 'Dennis', 'Ritchie', 'USA'); \ No newline at end of file +INSERT INTO EMPLOYEE VALUES (1, 'James', 'Gosling'); +INSERT INTO EMPLOYEE VALUES (2, 'Donald', 'Knuth'); +INSERT INTO EMPLOYEE VALUES (3, 'Linus', 'Torvalds'); +INSERT INTO EMPLOYEE VALUES (4, 'Dennis', 'Ritchie'); \ No newline at end of file From 95578f92ea2e77deca0d76a08be98675943df8db Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 19 Apr 2020 18:09:24 +0530 Subject: [PATCH 034/157] update pom version from RC to GA --- core-java-modules/core-java-time-measurements/pom.xml | 2 +- jhipster/jhipster-uaa/gateway/pom.xml | 2 +- jhipster/jhipster-uaa/quotes/pom.xml | 2 +- jhipster/jhipster-uaa/uaa/pom.xml | 2 +- persistence-modules/java-jpa-2/pom.xml | 2 +- persistence-modules/java-jpa/pom.xml | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core-java-modules/core-java-time-measurements/pom.xml b/core-java-modules/core-java-time-measurements/pom.xml index 71a012ca2b..b751cc0d74 100644 --- a/core-java-modules/core-java-time-measurements/pom.xml +++ b/core-java-modules/core-java-time-measurements/pom.xml @@ -96,7 +96,7 @@ 3.6.1 1.8.9 - 2.0.0-RC.4 + 2.0.0 1.44 2.22.1 diff --git a/jhipster/jhipster-uaa/gateway/pom.xml b/jhipster/jhipster-uaa/gateway/pom.xml index 1b85877a9b..b417bd7b57 100644 --- a/jhipster/jhipster-uaa/gateway/pom.xml +++ b/jhipster/jhipster-uaa/gateway/pom.xml @@ -1013,7 +1013,7 @@ 1.0.0 - 0.24.0-RC.0 + 0.24.0 3.0.0 1.8 diff --git a/jhipster/jhipster-uaa/quotes/pom.xml b/jhipster/jhipster-uaa/quotes/pom.xml index aacc6f8e36..f088ad2fd1 100644 --- a/jhipster/jhipster-uaa/quotes/pom.xml +++ b/jhipster/jhipster-uaa/quotes/pom.xml @@ -910,6 +910,6 @@ ${project.basedir}/src/test/ - 0.24.0-RC.0 + 0.24.0 diff --git a/jhipster/jhipster-uaa/uaa/pom.xml b/jhipster/jhipster-uaa/uaa/pom.xml index 27a056820d..f9c1f226bb 100644 --- a/jhipster/jhipster-uaa/uaa/pom.xml +++ b/jhipster/jhipster-uaa/uaa/pom.xml @@ -835,7 +835,7 @@ 1.0.0 - 0.24.0-RC.0 + 0.24.0 3.0.0 1.8 diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml index f79f6f1633..76b1033dac 100644 --- a/persistence-modules/java-jpa-2/pom.xml +++ b/persistence-modules/java-jpa-2/pom.xml @@ -111,7 +111,7 @@ 5.4.0.Final - 2.7.4-RC1 + 2.7.4 42.2.5 2.2 3.11.1 diff --git a/persistence-modules/java-jpa/pom.xml b/persistence-modules/java-jpa/pom.xml index 762c541d96..3601721dac 100644 --- a/persistence-modules/java-jpa/pom.xml +++ b/persistence-modules/java-jpa/pom.xml @@ -106,7 +106,7 @@ 5.4.0.Final - 2.7.4-RC1 + 2.7.4 42.2.5 2.2 3.3.3 From ffc79e7edd3d9825ce3f9ab3aaedd73efb15564b Mon Sep 17 00:00:00 2001 From: dupirefr Date: Fri, 17 Apr 2020 21:25:03 +0200 Subject: [PATCH 035/157] [JAVA-630] vavr-2 module * Creation * Moved https://www.baeldung.com/vavr-either code * Moved https://www.baeldung.com/java-vavr code --- pom.xml | 6 +++-- vavr-2/README.md | 8 ++++++ vavr-2/pom.xml | 27 +++++++++++++++++++ .../com/baeldung/vavr/either/EitherDemo.java | 0 .../baeldung/vavr/either/EitherUnitTest.java | 0 .../CollectionsInteroperabilityUnitTest.java | 0 vavr/README.md | 3 +-- 7 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 vavr-2/README.md create mode 100644 vavr-2/pom.xml rename {vavr => vavr-2}/src/main/java/com/baeldung/vavr/either/EitherDemo.java (100%) rename {vavr => vavr-2}/src/test/java/com/baeldung/vavr/either/EitherUnitTest.java (100%) rename {vavr => vavr-2}/src/test/java/com/baeldung/vavr/interoperability/CollectionsInteroperabilityUnitTest.java (100%) diff --git a/pom.xml b/pom.xml index 02d1ab6cd2..1b3c98994f 100644 --- a/pom.xml +++ b/pom.xml @@ -812,7 +812,8 @@ libraries vaadin - vavr + vavr + vavr-2 @@ -1310,7 +1311,8 @@ libraries vaadin - vavr + vavr + vavr-2 diff --git a/vavr-2/README.md b/vavr-2/README.md new file mode 100644 index 0000000000..71814a08fd --- /dev/null +++ b/vavr-2/README.md @@ -0,0 +1,8 @@ +## Vavr + +This module contains articles about Vavr. + +### Relevant Articles: +- [Introduction to Vavr’s Either](https://www.baeldung.com/vavr-either) +- [Interoperability Between Java and Vavr](https://www.baeldung.com/java-vavr) +- [[<-- prev]](/vavr) diff --git a/vavr-2/pom.xml b/vavr-2/pom.xml new file mode 100644 index 0000000000..d20dd9afef --- /dev/null +++ b/vavr-2/pom.xml @@ -0,0 +1,27 @@ + + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + 4.0.0 + + vavr-2 + vavr-2 + jar + + + + io.vavr + vavr-test + ${vavr.version} + + + + + 0.9.1 + + \ No newline at end of file diff --git a/vavr/src/main/java/com/baeldung/vavr/either/EitherDemo.java b/vavr-2/src/main/java/com/baeldung/vavr/either/EitherDemo.java similarity index 100% rename from vavr/src/main/java/com/baeldung/vavr/either/EitherDemo.java rename to vavr-2/src/main/java/com/baeldung/vavr/either/EitherDemo.java diff --git a/vavr/src/test/java/com/baeldung/vavr/either/EitherUnitTest.java b/vavr-2/src/test/java/com/baeldung/vavr/either/EitherUnitTest.java similarity index 100% rename from vavr/src/test/java/com/baeldung/vavr/either/EitherUnitTest.java rename to vavr-2/src/test/java/com/baeldung/vavr/either/EitherUnitTest.java diff --git a/vavr/src/test/java/com/baeldung/vavr/interoperability/CollectionsInteroperabilityUnitTest.java b/vavr-2/src/test/java/com/baeldung/vavr/interoperability/CollectionsInteroperabilityUnitTest.java similarity index 100% rename from vavr/src/test/java/com/baeldung/vavr/interoperability/CollectionsInteroperabilityUnitTest.java rename to vavr-2/src/test/java/com/baeldung/vavr/interoperability/CollectionsInteroperabilityUnitTest.java diff --git a/vavr/README.md b/vavr/README.md index 2b8bb25356..e04e02069f 100644 --- a/vavr/README.md +++ b/vavr/README.md @@ -13,5 +13,4 @@ This module contains articles about Vavr. - [Guide to Collections API in Vavr](https://www.baeldung.com/vavr-collections) - [Collection Factory Methods for Vavr](https://www.baeldung.com/vavr-collection-factory-methods) - [Introduction to Future in Vavr](https://www.baeldung.com/vavr-future) -- [Introduction to Vavr’s Either](https://www.baeldung.com/vavr-either) -- [Interoperability Between Java and Vavr](https://www.baeldung.com/java-vavr) +- [[next -->]](/vavr-2) From c4ed1770e266a0b9395a05fd47a2b04f82d47215 Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sun, 19 Apr 2020 21:46:19 +0530 Subject: [PATCH 036/157] "first commit in new fork" --- .../baeldung/composite/BookApplication.java | 12 ++++ .../com/baeldung/composite/entity/Book.java | 47 ++++++++++++++ .../com/baeldung/composite/entity/BookId.java | 51 +++++++++++++++ .../composite/repository/BookRepository.java | 16 +++++ .../repository/BookRepositoryTest.java | 63 +++++++++++++++++++ 5 files changed, 189 insertions(+) create mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java create mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java create mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java create mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java create mode 100644 persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java new file mode 100644 index 0000000000..52f06058aa --- /dev/null +++ b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.composite; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class BookApplication { + + public static void main(String[] args) { + SpringApplication.run(BookApplication.class); + } +} diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java new file mode 100644 index 0000000000..e4f1727654 --- /dev/null +++ b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java @@ -0,0 +1,47 @@ +package com.baeldung.composite.entity; + +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; + +@Entity +public class Book { + + @EmbeddedId + private BookId id; + private String genre; + private Integer price; + + public Book() { + } + + public Book(String author, String name, String genre, Integer price) { + BookId id = new BookId(author, name); + this.id = id; + this.genre = genre; + this.price = price; + } + + public BookId getId() { + return id; + } + + public void setId(BookId id) { + this.id = id; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public Integer getPrice() { + return price; + } + + public void setPrice(Integer price) { + this.price = price; + } +} diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java new file mode 100644 index 0000000000..1524452412 --- /dev/null +++ b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java @@ -0,0 +1,51 @@ +package com.baeldung.composite.entity; + +import javax.persistence.Embeddable; +import java.io.Serializable; +import java.util.Objects; + +@Embeddable +public class BookId implements Serializable { + + private String author; + private String name; + + public BookId() { + } + + public BookId(String author, String name) { + this.author = author; + this.name = name; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + BookId bookId = (BookId) o; + return Objects.equals(author, bookId.author) && Objects.equals(name, bookId.name); + } + + @Override + public int hashCode() { + return Objects.hash(author, name); + } +} diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java new file mode 100644 index 0000000000..3c09f909f0 --- /dev/null +++ b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java @@ -0,0 +1,16 @@ +package com.baeldung.composite.repository; + +import com.baeldung.composite.entity.Book; +import com.baeldung.composite.entity.BookId; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface BookRepository extends JpaRepository { + + List findByIdName(String name); + + List findByIdAuthor(String author); +} diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java b/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java new file mode 100644 index 0000000000..590593982d --- /dev/null +++ b/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java @@ -0,0 +1,63 @@ +package com.baeldung.composite.repository; + +import com.baeldung.composite.BookApplication; +import com.baeldung.composite.entity.Book; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = BookApplication.class) +public class BookRepositoryTest { + + public static final String JAVA_101 = "Java101"; + public static final String JANE = "Jane"; + @Autowired + BookRepository repository; + + @Before + public void setUp() { + Book book1 = new Book("John", JAVA_101, "Tech", 20); + Book book2 = new Book(JANE, JAVA_101, "Arch", 25); + Book book3 = new Book(JANE, "Scala101", "Tech", 23); + + repository.saveAll(Arrays.asList(book1, book2, book3)); + } + + @After + public void tearDown() { + repository.deleteAll(); + } + + @Test + public void testFindByName() { + List books = repository.findByIdName(JAVA_101); + + assertEquals(2, books.size()); + } + + @Test + public void testFindByAuthor() { + List books = repository.findByIdAuthor(JANE); + + assertEquals(2, books.size()); + } + + @Test + public void testFindByGenre() { + List books = repository.findByIdAuthor(JANE); + + assertEquals(2, books.size()); + } +} \ No newline at end of file From 60b00e38b6c5e1940bdbb7bae6baf38925765f1b Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sun, 19 Apr 2020 23:03:39 +0530 Subject: [PATCH 037/157] "first commit in new fork" --- ...okRepositoryTest.java => BookRepositoryIntegrationTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/{BookRepositoryTest.java => BookRepositoryIntegrationTest.java} (97%) diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java b/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java similarity index 97% rename from persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java rename to persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java index 590593982d..362950bea9 100644 --- a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryTest.java +++ b/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java @@ -19,7 +19,7 @@ import static org.junit.Assert.assertEquals; @RunWith(SpringRunner.class) @SpringBootTest(classes = BookApplication.class) -public class BookRepositoryTest { +public class BookRepositoryIntegrationTest { public static final String JAVA_101 = "Java101"; public static final String JANE = "Jane"; From 0a42d945f85a0418e7e8de9980ff601f5ecb3ccf Mon Sep 17 00:00:00 2001 From: Sasa M Date: Sun, 19 Apr 2020 21:02:17 +0200 Subject: [PATCH 038/157] Source project for the draft article --- model-mapper/src/Main.java | 58 +++++++++++++++ model-mapper/src/com/baeldung/model/User.java | 70 +++++++++++++++++++ .../src/com/baeldung/model/UserDTO.java | 49 +++++++++++++ .../src/com/baeldung/model/UserList.java | 21 ++++++ .../src/com/baeldung/util/MapperUtil.java | 47 +++++++++++++ .../com/baeldung/util/UserPropertyMap.java | 36 ++++++++++ 6 files changed, 281 insertions(+) create mode 100644 model-mapper/src/Main.java create mode 100644 model-mapper/src/com/baeldung/model/User.java create mode 100644 model-mapper/src/com/baeldung/model/UserDTO.java create mode 100644 model-mapper/src/com/baeldung/model/UserList.java create mode 100644 model-mapper/src/com/baeldung/util/MapperUtil.java create mode 100644 model-mapper/src/com/baeldung/util/UserPropertyMap.java diff --git a/model-mapper/src/Main.java b/model-mapper/src/Main.java new file mode 100644 index 0000000000..a6deb49168 --- /dev/null +++ b/model-mapper/src/Main.java @@ -0,0 +1,58 @@ +import com.baeldung.model.User; +import com.baeldung.model.UserDTO; +import com.baeldung.model.UserList; +import com.baeldung.util.MapperUtil; +import com.baeldung.util.UserPropertyMap; +import org.modelmapper.ModelMapper; +import org.modelmapper.TypeToken; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ + +public class Main { + + public static void main(String[] args) { + + //Instantiate ModelMapper + + ModelMapper mapper = new ModelMapper(); + mapper.addMappings(new UserPropertyMap()); + + // Mapping lists using TypeToken generic class + + List integers = new ArrayList(); + + integers.add(1); + integers.add(2); + integers.add(3); + + List characters = mapper.map(integers, new TypeToken>() {}.getType()); + + System.out.println("Character list: " + characters); + + // Mapping lists using generic type methods + + List users = new ArrayList(); + users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); + users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); + users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); + + List userDtoList = MapperUtil.mapList(users, UserDTO.class); + userDtoList.stream().map(userDto -> userDto.getEmail()).forEachOrdered(System.out::println); + + // Mapping lists using PropertyMap and Converter + + UserList userList = new UserList(); + userList.setUsers(users); + UserDTO dto = new UserDTO(); + + mapper.map(userList, dto); + dto.getUsernames().forEach(System.out::println); + + } +} diff --git a/model-mapper/src/com/baeldung/model/User.java b/model-mapper/src/com/baeldung/model/User.java new file mode 100644 index 0000000000..73e4baafb5 --- /dev/null +++ b/model-mapper/src/com/baeldung/model/User.java @@ -0,0 +1,70 @@ +package com.baeldung.model; + +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ +public class User { + + private String userId; + private String userName; + private String email; + private String contactNumber; + private String userType; + + // Standard constructors, getters and setters + + public User(){} + + public User(String userId, String userName, String email, String contactNumber, String userType) { + this.userId = userId; + this.userName = userName; + this.email = email; + this.contactNumber = contactNumber; + this.userType = userType; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + 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 String getContactNumber() { + return contactNumber; + } + + public void setContactNumber(String contactNumber) { + this.contactNumber = contactNumber; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + +} diff --git a/model-mapper/src/com/baeldung/model/UserDTO.java b/model-mapper/src/com/baeldung/model/UserDTO.java new file mode 100644 index 0000000000..ed056ace8c --- /dev/null +++ b/model-mapper/src/com/baeldung/model/UserDTO.java @@ -0,0 +1,49 @@ +package com.baeldung.model; + +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ +public class UserDTO { + + private String userId; + private String userName; + private String email; + private List usernames; + + // getters and setters + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + 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 List getUsernames() { + return usernames; + } + + public void setUsernames(List usernames) { + this.usernames = usernames; + } +} diff --git a/model-mapper/src/com/baeldung/model/UserList.java b/model-mapper/src/com/baeldung/model/UserList.java new file mode 100644 index 0000000000..b30d5507d5 --- /dev/null +++ b/model-mapper/src/com/baeldung/model/UserList.java @@ -0,0 +1,21 @@ +package com.baeldung.model; + +import java.util.Collection; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ + +public class UserList { + + private Collection users; + + public Collection getUsers() { + return users; + } + + public void setUsers(Collection users) { + this.users = users; + } +} diff --git a/model-mapper/src/com/baeldung/util/MapperUtil.java b/model-mapper/src/com/baeldung/util/MapperUtil.java new file mode 100644 index 0000000000..fe10b7777d --- /dev/null +++ b/model-mapper/src/com/baeldung/util/MapperUtil.java @@ -0,0 +1,47 @@ +package com.baeldung.util; + +import org.modelmapper.ModelMapper; +import org.modelmapper.convention.MatchingStrategies; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ +public class MapperUtil { + + + private static ModelMapper modelMapper = new ModelMapper(); + + + static { + + modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + + } + + private MapperUtil() { + + + } + + public static T mapTo(final S source, final Class target) { + + return modelMapper.map(source, target); + } + + public static List mapList(final List sourceList, final Class target) { + + List targetList = new ArrayList(); + + for (S source : sourceList) { + + targetList.add(modelMapper.map(source, target)); + } + + return targetList; + } + +} diff --git a/model-mapper/src/com/baeldung/util/UserPropertyMap.java b/model-mapper/src/com/baeldung/util/UserPropertyMap.java new file mode 100644 index 0000000000..4346174440 --- /dev/null +++ b/model-mapper/src/com/baeldung/util/UserPropertyMap.java @@ -0,0 +1,36 @@ +package com.baeldung.util; + +import com.baeldung.model.User; +import com.baeldung.model.UserDTO; +import com.baeldung.model.UserList; +import org.modelmapper.AbstractConverter; +import org.modelmapper.Converter; +import org.modelmapper.PropertyMap; +import java.util.ArrayList; +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ + +public class UserPropertyMap extends PropertyMap { + + + Converter, List> converter = new AbstractConverter, List>() { + + List usernames = new ArrayList<>(); + + protected List convert(List users) { + + users.forEach(user -> usernames.add(user.getUserName())); + return usernames; + } + + }; + + @Override + protected void configure() { + using(converter).map(source.getUsers(), destination.getUsernames()); + } +} From 9d993fc5bbf4ac4ce22b042b0104aa8affb3ea0f Mon Sep 17 00:00:00 2001 From: Kostas Karavitis Date: Mon, 20 Apr 2020 00:29:56 +0300 Subject: [PATCH 039/157] [BAEL-3936] Changed test methods names to follow BDD naming conventions --- .../unrelated/entities/UnrelatedEntitiesUnitTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java index 8733b3e7da..569b093db6 100644 --- a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java @@ -40,7 +40,7 @@ public class UnrelatedEntitiesUnitTest { @Test - public void whenQueryingForCocktailThatHasRecipe_thenTheExpectedCocktailReturned() { + public void givenCocktailsWithRecipe_whenQuerying_thenTheExpectedCocktailsReturned() { // JPA Cocktail cocktail = entityManager.createQuery("select c " + "from Cocktail c join c.recipe", Cocktail.class) @@ -67,7 +67,7 @@ public class UnrelatedEntitiesUnitTest { } @Test - public void whenQueryingForCocktailThatHasNotARecipe_thenTheExpectedCocktailReturned() { + public void givenCocktailsWithoutRecipe_whenQuerying_thenTheExpectedCocktailsReturned() { Cocktail cocktail = entityManager.createQuery("select c " + "from Cocktail c left join c.recipe r " + "where r is null", Cocktail.class) @@ -97,7 +97,7 @@ public class UnrelatedEntitiesUnitTest { } @Test - public void whenQueringForCocktailThatHasRecipes_thenTheExpectedCocktailReturned() { + public void givenCocktailsWithMultipleRecipes_whenQuerying_thenTheExpectedCocktailsReturned() { // JPQL Cocktail cocktail = entityManager.createQuery("select c " + "from Cocktail c join c.recipeList", Cocktail.class) @@ -124,7 +124,7 @@ public class UnrelatedEntitiesUnitTest { } @Test - public void whenQueryingForCocktailThatHasNotRecipes_thenTheExpectedCocktailReturned() { + public void givenCocktailsWithoutMultipleRecipes_whenQuerying_thenTheExpectedCocktailsReturned() { // JPQL Cocktail cocktail = entityManager.createQuery("select c " + "from Cocktail c left join c.recipeList r " @@ -156,7 +156,7 @@ public class UnrelatedEntitiesUnitTest { } @Test - public void whenQueryingForMultipleRecipes_thenTheExpectedRecipesReturned() { + public void givenMultipleRecipesWithCocktails_whenQuerying_thenTheExpectedMultipleRecipesReturned() { Consumer> verifyResult = recipes -> { assertEquals(2, recipes.size()); recipes.forEach(r -> assertEquals(mojito.getName(), r.getCocktail())); From 1639ead274ffbb256016ec36f6fa6f7a1c08cd58 Mon Sep 17 00:00:00 2001 From: Donato Rimenti Date: Mon, 20 Apr 2020 19:36:51 +0200 Subject: [PATCH 040/157] [BAEL-3489] Added Java-R integration examples. --- libraries-data-2/pom.xml | 43 +++++++++++++++++++ .../main/java/com/baeldung/r/FastRMean.java | 28 ++++++++++++ .../main/java/com/baeldung/r/RCallerMean.java | 36 ++++++++++++++++ .../src/main/java/com/baeldung/r/RUtils.java | 30 +++++++++++++ .../main/java/com/baeldung/r/RenjinMean.java | 36 ++++++++++++++++ .../main/java/com/baeldung/r/RserveMean.java | 29 +++++++++++++ .../com/baeldung/r/FastRMeanUnitTest.java | 29 +++++++++++++ .../r/RCallerMeanIntegrationTest.java | 37 ++++++++++++++++ .../com/baeldung/r/RenjinMeanUnitTest.java | 37 ++++++++++++++++ libraries-data-2/src/test/resources/script.R | 3 ++ 10 files changed, 308 insertions(+) create mode 100644 libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java create mode 100644 libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java create mode 100644 libraries-data-2/src/main/java/com/baeldung/r/RUtils.java create mode 100644 libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java create mode 100644 libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java create mode 100644 libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java create mode 100644 libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java create mode 100644 libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java create mode 100644 libraries-data-2/src/test/resources/script.R diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml index e6106c0fe3..ce15ef6c07 100644 --- a/libraries-data-2/pom.xml +++ b/libraries-data-2/pom.xml @@ -128,6 +128,24 @@ ${awaitility.version} test + + + org.rosuda.REngine + Rserve + ${rserve.version} + + + + com.github.jbytecode + RCaller + ${rcaller.version} + + + + org.renjin + renjin-script-engine + ${renjin.version} + @@ -137,6 +155,13 @@ http://repo.numericalmethod.com/maven/ default + + + + bedatadriven + bedatadriven public repo + https://nexus.bedatadriven.com/content/groups/public/ + @@ -153,6 +178,24 @@ 3.6.2 1.7.25 3.0.0 + RELEASE + 3.0 + 1.8.1 + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + com/baeldung/r/FastRMean.java + + + + + + \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java b/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java new file mode 100644 index 0000000000..52fb2d1506 --- /dev/null +++ b/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java @@ -0,0 +1,28 @@ +package com.baeldung.r; + +import java.io.IOException; +import java.net.URISyntaxException; + +/** + * FastR showcase. + * + * @author Donato Rimenti + */ +public class FastRMean { + + /** + * Invokes the customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + */ + public double mean(int[] values) { + Context polyglot = Context.newBuilder().allowAllAccess(true).build(); + String meanScriptContent = RUtils.getMeanScriptContent(); + polyglot.eval("R", meanScriptContent); + Value rBindings = polyglot.getBindings("R"); + Value rInput = rBindings.getMember("c").execute(values); + return rBindings.getMember("customMean").execute(rInput).asDouble(); + } + +} \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java b/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java new file mode 100644 index 0000000000..53e0ab9e31 --- /dev/null +++ b/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java @@ -0,0 +1,36 @@ +package com.baeldung.r; + +import java.io.IOException; +import java.net.URISyntaxException; + +import com.github.rcaller.rstuff.RCaller; +import com.github.rcaller.rstuff.RCallerOptions; +import com.github.rcaller.rstuff.RCode; + +/** + * RCaller showcase. + * + * @author Donato Rimenti + */ +public class RCallerMean { + + /** + * Invokes the customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + * @throws IOException if any error occurs + * @throws URISyntaxException if any error occurs + */ + public double mean(int[] values) throws IOException, URISyntaxException { + String fileContent = RUtils.getMeanScriptContent(); + RCode code = RCode.create(); + code.addRCode(fileContent); + code.addIntArray("input", values); + code.addRCode("result <- customMean(input)"); + RCaller caller = RCaller.create(code, RCallerOptions.create()); + caller.runAndReturnResult("result"); + return caller.getParser().getAsDoubleArray("result")[0]; + } + +} \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java b/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java new file mode 100644 index 0000000000..ad16fd5602 --- /dev/null +++ b/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java @@ -0,0 +1,30 @@ +package com.baeldung.r; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.stream.Collectors; + +/** + * Utility class for loading the script.R content. + * + * @author Donato Rimenti + */ +public class RUtils { + + /** + * Loads the script.R and returns its content as a string. + * + * @return the script.R content as a string + * @throws IOException if any error occurs + * @throws URISyntaxException if any error occurs + */ + static String getMeanScriptContent() throws IOException, URISyntaxException { + URI rScriptUri = RUtils.class.getClassLoader().getResource("script.R").toURI(); + Path inputScript = Paths.get(rScriptUri); + return Files.lines(inputScript).collect(Collectors.joining()); + } +} \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java b/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java new file mode 100644 index 0000000000..befb7d522f --- /dev/null +++ b/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java @@ -0,0 +1,36 @@ +package com.baeldung.r; + +import java.io.IOException; +import java.net.URISyntaxException; + +import javax.script.ScriptException; + +import org.renjin.script.RenjinScriptEngine; +import org.renjin.sexp.DoubleArrayVector; + +/** + * Renjin showcase. + * + * @author Donato Rimenti + */ +public class RenjinMean { + + /** + * Invokes the customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + * @throws IOException if any error occurs + * @throws URISyntaxException if any error occurs + * @throws ScriptException if any error occurs + */ + public double mean(int[] values) throws IOException, URISyntaxException, ScriptException { + RenjinScriptEngine engine = new RenjinScriptEngine(); + String meanScriptContent = RUtils.getMeanScriptContent(); + engine.put("input", values); + engine.eval(meanScriptContent); + DoubleArrayVector result = (DoubleArrayVector) engine.eval("customMean(input)"); + return result.asReal(); + } + +} \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java b/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java new file mode 100644 index 0000000000..51aaa90648 --- /dev/null +++ b/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java @@ -0,0 +1,29 @@ +package com.baeldung.r; + +import org.rosuda.REngine.REXPMismatchException; +import org.rosuda.REngine.REngineException; +import org.rosuda.REngine.Rserve.RConnection; + +/** + * Rserve showcase. + * + * @author Donato Rimenti + */ +public class RserveMean { + + /** + * Connects to the Rserve istance listening on 127.0.0.1:6311 and invokes the + * customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + * @throws REngineException if any error occurs + * @throws REXPMismatchException if any error occurs + */ + public double mean(int[] values) throws REngineException, REXPMismatchException { + RConnection c = new RConnection(); + c.assign("input", values); + return c.eval("customMean(input)").asDouble(); + } + +} \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java new file mode 100644 index 0000000000..5cf8c63a56 --- /dev/null +++ b/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.r; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Test for {@link FastRMean}. + * + * @author Donato Rimenti + */ +@Ignore +public class FastRMeanUnitTest { + + /** + * Object to test. + */ + private FastRMean fastrMean = new FastRMean(); + + /** + * Test for {@link FastRMeanUnitTest#mean(int[])}. + */ + @Test + public void givenValues_whenMean_thenCorrect() { + int[] input = { 1, 2, 3, 4, 5 }; + double result = fastrMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } +} \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java new file mode 100644 index 0000000000..b68f259edd --- /dev/null +++ b/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java @@ -0,0 +1,37 @@ +package com.baeldung.r; + +import java.io.IOException; +import java.net.URISyntaxException; + +import javax.script.ScriptException; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; + +/** + * Test for {@link RCallerMean}. + * + * @author Donato Rimenti + */ +@Ignore +public class RCallerMeanIntegrationTest { + + /** + * Object to test. + */ + private RCallerMean rcallerMean = new RCallerMean(); + + /** + * Test for {@link RCallerMeanIntegrationTest#mean(int[])}. + * + * @throws ScriptException if an error occurs + * @throws URISyntaxException if an error occurs + */ + @Test + public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException { + int[] input = { 1, 2, 3, 4, 5 }; + double result = rcallerMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } +} \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java new file mode 100644 index 0000000000..e364d54632 --- /dev/null +++ b/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java @@ -0,0 +1,37 @@ +package com.baeldung.r; + +import java.io.IOException; +import java.net.URISyntaxException; + +import javax.script.ScriptException; + +import org.junit.Test; + +import org.junit.Assert; + +/** + * Test for {@link RenjinMean}. + * + * @author Donato Rimenti + */ +public class RenjinMeanUnitTest { + + /** + * Object to test. + */ + private RenjinMean renjinMean = new RenjinMean(); + + /** + * Test for {@link RenjinMeanUnitTest#mean(int[])}. + * + * @throws ScriptException if an error occurs + * @throws URISyntaxException if an error occurs + * @throws IOException if an error occurs + */ + @Test + public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException, ScriptException { + int[] input = { 1, 2, 3, 4, 5 }; + double result = renjinMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } +} \ No newline at end of file diff --git a/libraries-data-2/src/test/resources/script.R b/libraries-data-2/src/test/resources/script.R new file mode 100644 index 0000000000..08f859cc3d --- /dev/null +++ b/libraries-data-2/src/test/resources/script.R @@ -0,0 +1,3 @@ +customMean <- function(vector) { + mean(vector) +} \ No newline at end of file From 16ca52363cef9a05a32113654ae290854cb27866 Mon Sep 17 00:00:00 2001 From: Donato Rimenti Date: Mon, 20 Apr 2020 20:11:06 +0200 Subject: [PATCH 041/157] Fixed test exclusions and added missing tests. --- libraries-data-2/pom.xml | 5 ++- .../baeldung/r/RserveMeanIntegrationTest.java | 34 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml index ce15ef6c07..0dadcbd8d4 100644 --- a/libraries-data-2/pom.xml +++ b/libraries-data-2/pom.xml @@ -189,10 +189,13 @@ org.apache.maven.plugins maven-compiler-plugin - + com/baeldung/r/FastRMean.java + + com/baeldung/r/FastRMeanUnitTest.java + diff --git a/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java new file mode 100644 index 0000000000..95b344cb02 --- /dev/null +++ b/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java @@ -0,0 +1,34 @@ +package com.baeldung.r; + +import org.junit.Assert; +import org.junit.Ignore; +import org.junit.Test; +import org.rosuda.REngine.REXPMismatchException; +import org.rosuda.REngine.REngineException; + +/** + * Test for {@link RserveMean}. + * + * @author Donato Rimenti + */ +@Ignore +public class RserveMeanIntegrationTest { + + /** + * Object to test. + */ + private RserveMean rserveMean = new RserveMean(); + + /** + * Test for {@link RserveMeanIntegrationTest#mean(int[])}. + * + * @throws REXPMismatchException if an error occurs + * @throws REngineException if an error occurs + */ + @Test + public void givenValues_whenMean_thenCorrect() throws REngineException, REXPMismatchException { + int[] input = { 1, 2, 3, 4, 5 }; + double result = rserveMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } +} \ No newline at end of file From fdce9657e353378c627c5effde51c5cc36380ad2 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:15:56 +0800 Subject: [PATCH 042/157] Update README.md --- netty/README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/netty/README.md b/netty/README.md index b006c1c686..8b13789179 100644 --- a/netty/README.md +++ b/netty/README.md @@ -1,6 +1 @@ -## Netty - -This module contains articles about Netty. - -### Relevant Articles: From c367c05c53fdcc1c45642ae053143d5e91df961c Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:16:07 +0800 Subject: [PATCH 043/157] Delete README.md --- netty/README.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 netty/README.md diff --git a/netty/README.md b/netty/README.md deleted file mode 100644 index 8b13789179..0000000000 --- a/netty/README.md +++ /dev/null @@ -1 +0,0 @@ - From b5603f9fce1721bafb94d3442360ede620e68d62 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:17:56 +0800 Subject: [PATCH 044/157] Update README.md --- java-collections-maps-3/README.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/java-collections-maps-3/README.md b/java-collections-maps-3/README.md index ed68eb00a0..8b13789179 100644 --- a/java-collections-maps-3/README.md +++ b/java-collections-maps-3/README.md @@ -1,8 +1 @@ -## Java Collections Cookbooks and Examples -This module contains articles about Map data structures in Java. - -### Relevant Articles: - -- More articles: [[<-- prev>]](/../java-collections-maps) -- More articles: [[<-- prev>]](/../java-collections-maps-2) From c9c48fda086801eb260c4e92facca1c6b7ad08a0 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:18:04 +0800 Subject: [PATCH 045/157] Delete README.md --- java-collections-maps-3/README.md | 1 - 1 file changed, 1 deletion(-) delete mode 100644 java-collections-maps-3/README.md diff --git a/java-collections-maps-3/README.md b/java-collections-maps-3/README.md deleted file mode 100644 index 8b13789179..0000000000 --- a/java-collections-maps-3/README.md +++ /dev/null @@ -1 +0,0 @@ - From 6a41016938929ad22c46c9c1708d4dc1f9524aea Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:30:05 +0800 Subject: [PATCH 046/157] Update README.md --- guava/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/guava/README.md b/guava/README.md index 71f76c1360..9c650dbc1d 100644 --- a/guava/README.md +++ b/guava/README.md @@ -13,3 +13,4 @@ This module contains articles a Google Guava - [Bloom Filter in Java using Guava](https://www.baeldung.com/guava-bloom-filter) - [Quick Guide to the Guava RateLimiter](https://www.baeldung.com/guava-rate-limiter) - [Introduction to Guava Throwables](https://www.baeldung.com/guava-throwables) +- [Guava Cache](https://www.baeldung.com/guava-cache) From 458c4d8505fe12160769b5208eb5b5e4c68b0b51 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:33:38 +0800 Subject: [PATCH 047/157] Update README.md --- core-kotlin-modules/core-kotlin/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-kotlin-modules/core-kotlin/README.md b/core-kotlin-modules/core-kotlin/README.md index 151da607ac..90caccf5c8 100644 --- a/core-kotlin-modules/core-kotlin/README.md +++ b/core-kotlin-modules/core-kotlin/README.md @@ -3,7 +3,7 @@ This module contains articles about Kotlin core features. ### Relevant articles: -- [Introduction to the Kotlin Language](https://www.baeldung.com/kotlin/tutorial) +- [Introduction to the Kotlin Language](https://www.baeldung.com/kotlin-intro) - [Kotlin Java Interoperability](https://www.baeldung.com/kotlin-java-interoperability) - [Get a Random Number in Kotlin](https://www.baeldung.com/kotlin-random-number) - [Create a Java and Kotlin Project with Maven](https://www.baeldung.com/kotlin-maven-java-project) From 8c151edb1e887572eb77d05ae55f7f5766f65f87 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 12:36:40 +0800 Subject: [PATCH 048/157] Update README.md --- spring-boot-modules/spring-boot-testing/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-testing/README.md b/spring-boot-modules/spring-boot-testing/README.md index 9bbaf337d7..192f5cee99 100644 --- a/spring-boot-modules/spring-boot-testing/README.md +++ b/spring-boot-modules/spring-boot-testing/README.md @@ -13,4 +13,4 @@ The "REST With Spring" Classes: http://bit.ly/restwithspring - [Setting the Log Level in Spring Boot when Testing](https://www.baeldung.com/spring-boot-testing-log-level) - [Embedded Redis Server with Spring Boot Test](https://www.baeldung.com/spring-embedded-redis) - [Testing Spring Boot @ConfigurationProperties](https://www.baeldung.com/spring-boot-testing-configurationproperties) -- [Prevent ApplicationRunner or CommandLineRunner Beans From Executing During Junit Testing]() +- [Prevent ApplicationRunner or CommandLineRunner Beans From Executing During Junit Testing](https://www.baeldung.com/spring-junit-prevent-runner-beans-testing-execution) From e9450dacbb5e8709188aed1e1cf33b0e01dddd15 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:11:41 +0800 Subject: [PATCH 049/157] Update README.md --- core-java-modules/core-java-string-operations-2/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md index bc00c6a915..45b02a3e10 100644 --- a/core-java-modules/core-java-string-operations-2/README.md +++ b/core-java-modules/core-java-string-operations-2/README.md @@ -9,7 +9,6 @@ This module contains articles about string operations. - [String toLowerCase and toUpperCase Methods in Java](https://www.baeldung.com/java-string-convert-case) - [Java String equalsIgnoreCase()](https://www.baeldung.com/java-string-equalsignorecase) - [Case-Insensitive String Matching in Java](https://www.baeldung.com/java-case-insensitive-string-matching) -- [L-Trim and R-Trim in Java](https://www.baeldung.com/l-trim-and-r-trim-in-java) - [L-Trim and R-Trim Alternatives in Java](https://www.baeldung.com/java-trim-alternatives) - [Java Convert PDF to Base64](https://www.baeldung.com/java-convert-pdf-to-base64) - More articles: [[<-- prev]](../core-java-string-operations) From b58db90f3bc2333a1b34ddbac2024f30bb358b84 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:13:43 +0800 Subject: [PATCH 050/157] Delete README.md --- maven-all/versions-maven-plugin/original/README.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 maven-all/versions-maven-plugin/original/README.md diff --git a/maven-all/versions-maven-plugin/original/README.md b/maven-all/versions-maven-plugin/original/README.md deleted file mode 100644 index 5652a9b7e4..0000000000 --- a/maven-all/versions-maven-plugin/original/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: - -- [Use the Latest Version of a Dependency in Maven](https://www.baeldung.com/maven-dependency-latest-version) From 4a75b130579bd8e5641ed9b71f8d7aa13eb8c338 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:15:57 +0800 Subject: [PATCH 051/157] Update README.md --- persistence-modules/spring-jpa/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-jpa/README.md b/persistence-modules/spring-jpa/README.md index 27a2fe8368..599a667a13 100644 --- a/persistence-modules/spring-jpa/README.md +++ b/persistence-modules/spring-jpa/README.md @@ -10,7 +10,7 @@ - [Self-Contained Testing Using an In-Memory Database](https://www.baeldung.com/spring-jpa-test-in-memory-database) - [A Guide to Spring AbstractRoutingDatasource](https://www.baeldung.com/spring-abstract-routing-data-source) - [Obtaining Auto-generated Keys in Spring JDBC](https://www.baeldung.com/spring-jdbc-autogenerated-keys) -- [Transactions with Spring 4 and JPA](https://www.baeldung.com/transaction-configuration-with-jpa-and-spring) +- [Transactions with Spring and JPA](https://www.baeldung.com/transaction-configuration-with-jpa-and-spring) - [Use Criteria Queries in a Spring Data Application](https://www.baeldung.com/spring-data-criteria-queries) - [Many-To-Many Relationship in JPA](https://www.baeldung.com/jpa-many-to-many) - [Spring Persistence (Hibernate and JPA) with a JNDI datasource](https://www.baeldung.com/spring-persistence-hibernate-and-jpa-with-a-jndi-datasource/) From d17e2b5b93c5b6b1e247c894088d1027a760ebbe Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:18:12 +0800 Subject: [PATCH 052/157] Delete README.md --- spring-core-3/src/main/java/com/baeldung/factorybean/README.md | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 spring-core-3/src/main/java/com/baeldung/factorybean/README.md diff --git a/spring-core-3/src/main/java/com/baeldung/factorybean/README.md b/spring-core-3/src/main/java/com/baeldung/factorybean/README.md deleted file mode 100644 index 13f9f379e0..0000000000 --- a/spring-core-3/src/main/java/com/baeldung/factorybean/README.md +++ /dev/null @@ -1,2 +0,0 @@ -### Relevant Articles: -- [How to use the Spring FactoryBean?](http://www.baeldung.com/spring-factorybean) From 62ccb01325e5c44a0de557ac071e157c491b8235 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:19:47 +0800 Subject: [PATCH 053/157] Delete README.md --- maven-all/maven/custom-rule/README.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 maven-all/maven/custom-rule/README.md diff --git a/maven-all/maven/custom-rule/README.md b/maven-all/maven/custom-rule/README.md deleted file mode 100644 index 44d43050e7..0000000000 --- a/maven-all/maven/custom-rule/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: - -- [Maven Enforcer Plugin](https://www.baeldung.com/maven-enforcer-plugin) From b2af10c98ba1934ce0c6fda08b03e34cb4e97284 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:26:20 +0800 Subject: [PATCH 054/157] Delete README.md --- ddd-modules/README.md | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 ddd-modules/README.md diff --git a/ddd-modules/README.md b/ddd-modules/README.md deleted file mode 100644 index ba6b8d5016..0000000000 --- a/ddd-modules/README.md +++ /dev/null @@ -1,3 +0,0 @@ -### Relevant Articles: - -- [DDD Bounded Contexts and Java Modules](https://www.baeldung.com/java-modules-ddd-bounded-contexts) From 3266970b400419ed5967b64f141e67038c51c061 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:27:38 +0800 Subject: [PATCH 055/157] Create README.md --- ddd-modules/README.md | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 ddd-modules/README.md diff --git a/ddd-modules/README.md b/ddd-modules/README.md new file mode 100644 index 0000000000..ba6b8d5016 --- /dev/null +++ b/ddd-modules/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: + +- [DDD Bounded Contexts and Java Modules](https://www.baeldung.com/java-modules-ddd-bounded-contexts) From bbb0511669cf61ef04b5dd1d4593f53dfa277137 Mon Sep 17 00:00:00 2001 From: johnA1331 <53036378+johnA1331@users.noreply.github.com> Date: Tue, 21 Apr 2020 14:29:19 +0800 Subject: [PATCH 056/157] Update README.md --- maven-all/maven/README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/maven-all/maven/README.md b/maven-all/maven/README.md index ced4a52703..c5f46ca184 100644 --- a/maven-all/maven/README.md +++ b/maven-all/maven/README.md @@ -7,7 +7,6 @@ have their own dedicated modules. - [Guide to the Core Maven Plugins](https://www.baeldung.com/core-maven-plugins) - [Maven Resources Plugin](https://www.baeldung.com/maven-resources-plugin) -- [Maven Compiler Plugin](https://www.baeldung.com/maven-compiler-plugin) - [Quick Guide to the Maven Surefire Plugin](https://www.baeldung.com/maven-surefire-plugin) - [The Maven Failsafe Plugin](https://www.baeldung.com/maven-failsafe-plugin) - [The Maven Verifier Plugin](https://www.baeldung.com/maven-verifier-plugin) From 64e47e7f77a887e29da95cc1443d66cddc9c73c6 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Tue, 21 Apr 2020 10:25:27 -0600 Subject: [PATCH 057/157] BAEL-3972: check user roles in Java --- .../app/controller/TaskController.java | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java index a084f14eca..95f855c1e5 100644 --- a/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java @@ -1,8 +1,15 @@ package com.baeldung.app.controller; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -10,6 +17,8 @@ import org.springframework.web.bind.annotation.RequestMethod; import com.baeldung.app.entity.Task; import com.baeldung.app.service.TaskService; +import javax.servlet.http.HttpServletRequest; + @Controller @RequestMapping("api/tasks") public class TaskController { @@ -17,6 +26,9 @@ public class TaskController { @Autowired private TaskService taskService; + @Autowired(required = false) + private UserDetailsService userDetailsService; + @RequestMapping(method = RequestMethod.GET) public ResponseEntity> findAllTasks() { Iterable tasks = taskService.findAll(); @@ -30,4 +42,66 @@ public class TaskController { return ResponseEntity.ok().body(tasks); } + + /** + * Example of restricting specific endpoints to specific roles using @PreAuthorize. + */ + @GetMapping("/manager") + @PreAuthorize("hasRole('ROLE_MANAGER')") + public ResponseEntity> getAlManagerTasks() + { + Iterable tasks = taskService.findAll(); + + return ResponseEntity.ok().body(tasks); + } + + /** + * Example of restricting specific endpoints to specific roles using SecurityContext. + */ + @GetMapping("/actuator") + public ResponseEntity> getAlActuatorTasks() + { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null && auth.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ACTUATOR"))) + { + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + + Iterable tasks = taskService.findAll(); + + return ResponseEntity.ok().body(tasks); + } + + /** + * Example of restricting specific endpoints to specific roles using UserDetailsService. + */ + @GetMapping("/admin") + public ResponseEntity> getAlAdminTasks() + { + if(userDetailsService != null) { + UserDetails details = userDetailsService.loadUserByUsername("pam"); + if (details != null && details.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ADMIN"))) { + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + } + + Iterable tasks = taskService.findAll(); + + return ResponseEntity.ok().body(tasks); + } + + /** + * Example of restricting specific endpoints to specific roles using HttpServletRequest. + */ + @GetMapping("/admin2") + public ResponseEntity> getAlAdminTasksUsingServlet(HttpServletRequest request) + { + if (!request.isUserInRole("ROLE_ADMIN")) { + return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); + } + + Iterable tasks = taskService.findAll(); + + return ResponseEntity.ok().body(tasks); + } } From 43852c4303b90e0ee4e11f15c7a52a1de1e7f8d8 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Tue, 21 Apr 2020 18:46:45 +0200 Subject: [PATCH 058/157] Moving com.baeldung.modelmmaper package to java-collections-conversations module --- java-collections-conversions-2/pom.xml | 17 ++++ .../com/baeldung/modelmapper}/MapperUtil.java | 9 +- .../java/com/baeldung/modelmapper}/User.java | 6 +- .../com/baeldung/modelmapper}/UserDTO.java | 13 +-- .../com/baeldung/modelmapper}/UserList.java | 5 +- .../com/baeldung/modelmapper/UserListDTO.java | 20 +++++ .../modelmapper}/UserPropertyMap.java | 12 ++- .../baeldung/modelmapper/UserMappingTest.java | 85 +++++++++++++++++++ model-mapper/src/Main.java | 58 ------------- parent-java/pom.xml | 3 + 10 files changed, 140 insertions(+), 88 deletions(-) rename {model-mapper/src/com/baeldung/util => java-collections-conversions-2/src/main/java/com/baeldung/modelmapper}/MapperUtil.java (76%) rename {model-mapper/src/com/baeldung/model => java-collections-conversions-2/src/main/java/com/baeldung/modelmapper}/User.java (94%) rename {model-mapper/src/com/baeldung/model => java-collections-conversions-2/src/main/java/com/baeldung/modelmapper}/UserDTO.java (68%) rename {model-mapper/src/com/baeldung/model => java-collections-conversions-2/src/main/java/com/baeldung/modelmapper}/UserList.java (74%) create mode 100644 java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java rename {model-mapper/src/com/baeldung/util => java-collections-conversions-2/src/main/java/com/baeldung/modelmapper}/UserPropertyMap.java (68%) create mode 100644 java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java delete mode 100644 model-mapper/src/Main.java diff --git a/java-collections-conversions-2/pom.xml b/java-collections-conversions-2/pom.xml index b04d764719..ca4ed882dd 100644 --- a/java-collections-conversions-2/pom.xml +++ b/java-collections-conversions-2/pom.xml @@ -20,6 +20,23 @@ commons-lang3 ${commons-lang3.version} + + org.modelmapper + modelmapper + ${modelmapper.version} + + + junit + junit + ${junit.version} + test + + + org.hamcrest + hamcrest-all + ${hamcrest.version} + test + diff --git a/model-mapper/src/com/baeldung/util/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java similarity index 76% rename from model-mapper/src/com/baeldung/util/MapperUtil.java rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java index fe10b7777d..c02f012126 100644 --- a/model-mapper/src/com/baeldung/util/MapperUtil.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java @@ -1,4 +1,4 @@ -package com.baeldung.util; +package com.baeldung.modelmapper; import org.modelmapper.ModelMapper; import org.modelmapper.convention.MatchingStrategies; @@ -8,7 +8,9 @@ import java.util.List; /** * @author sasam0320 - * @date 4/18/2020 + * @description + * This is a helper class that contains methods for generic mapping of the users list. + * Initially, an instance of ModelMapper was created. In the static block we set the matching configuration to STRICT. */ public class MapperUtil { @@ -28,16 +30,13 @@ public class MapperUtil { } public static T mapTo(final S source, final Class target) { - return modelMapper.map(source, target); } public static List mapList(final List sourceList, final Class target) { - List targetList = new ArrayList(); for (S source : sourceList) { - targetList.add(modelMapper.map(source, target)); } diff --git a/model-mapper/src/com/baeldung/model/User.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java similarity index 94% rename from model-mapper/src/com/baeldung/model/User.java rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java index 73e4baafb5..8f13b44894 100644 --- a/model-mapper/src/com/baeldung/model/User.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java @@ -1,10 +1,8 @@ -package com.baeldung.model; - -import java.util.List; +package com.baeldung.modelmapper; /** * @author sasam0320 - * @date 4/18/2020 + * @description User model entity class */ public class User { diff --git a/model-mapper/src/com/baeldung/model/UserDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java similarity index 68% rename from model-mapper/src/com/baeldung/model/UserDTO.java rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java index ed056ace8c..ce75eecefc 100644 --- a/model-mapper/src/com/baeldung/model/UserDTO.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java @@ -1,17 +1,14 @@ -package com.baeldung.model; - -import java.util.List; +package com.baeldung.modelmapper; /** * @author sasam0320 - * @date 4/18/2020 + * @description UserDTO model class */ public class UserDTO { private String userId; private String userName; private String email; - private List usernames; // getters and setters @@ -39,11 +36,5 @@ public class UserDTO { this.email = email; } - public List getUsernames() { - return usernames; - } - public void setUsernames(List usernames) { - this.usernames = usernames; - } } diff --git a/model-mapper/src/com/baeldung/model/UserList.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java similarity index 74% rename from model-mapper/src/com/baeldung/model/UserList.java rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java index b30d5507d5..02361da469 100644 --- a/model-mapper/src/com/baeldung/model/UserList.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java @@ -1,12 +1,11 @@ -package com.baeldung.model; +package com.baeldung.modelmapper; import java.util.Collection; /** * @author sasam0320 - * @date 4/18/2020 + * @description UserList class that contain collection of users */ - public class UserList { private Collection users; diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java new file mode 100644 index 0000000000..fba311c1a3 --- /dev/null +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java @@ -0,0 +1,20 @@ +package com.baeldung.modelmapper; + +import java.util.List; + +/** + * @author sasam0320 + * @description UserListDTO class that contain list of username properties + */ +public class UserListDTO { + + private List usernames; + + public List getUsernames() { + return usernames; + } + + public void setUsernames(List usernames) { + this.usernames = usernames; + } +} diff --git a/model-mapper/src/com/baeldung/util/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java similarity index 68% rename from model-mapper/src/com/baeldung/util/UserPropertyMap.java rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 4346174440..9fa945ce32 100644 --- a/model-mapper/src/com/baeldung/util/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -1,8 +1,5 @@ -package com.baeldung.util; +package com.baeldung.modelmapper; -import com.baeldung.model.User; -import com.baeldung.model.UserDTO; -import com.baeldung.model.UserList; import org.modelmapper.AbstractConverter; import org.modelmapper.Converter; import org.modelmapper.PropertyMap; @@ -11,10 +8,11 @@ import java.util.List; /** * @author sasam0320 - * @date 4/18/2020 + * @description + * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. + * In the configuration method, we call a converter to do the mapping. */ - -public class UserPropertyMap extends PropertyMap { +public class UserPropertyMap extends PropertyMap { Converter, List> converter = new AbstractConverter, List>() { diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java new file mode 100644 index 0000000000..44a929621b --- /dev/null +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java @@ -0,0 +1,85 @@ +package com.baeldung.modelmapper; + +import org.hamcrest.Matchers; +import org.junit.Before; +import org.junit.Test; +import org.modelmapper.ModelMapper; +import org.modelmapper.TypeToken; + +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasItems; +import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.collection.IsCollectionWithSize.hasSize; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; + + +/** + * @sasam0320 + * @description + * This class has test methods of mapping Integer to Character list, + * mapping user list to DTO list using MapperUtil generic methods and Converter + */ +public class UserMappingTest { + + private ModelMapper mapper; + private List users; + + @Before + public void init() { + + mapper = new ModelMapper(); + mapper.addMappings(new UserPropertyMap()); + users = new ArrayList(); + users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); + users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); + users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); + + } + + @Test + public void testMapIntegerList() { + + List integers = new ArrayList(); + + integers.add(1); + integers.add(2); + integers.add(3); + + List characters = mapper.map(integers, new TypeToken>() { + }.getType()); + + assertThat(characters, hasItems('1','2','3')); + + } + + @Test + public void testMapGenericTypeLists() { + + // Mapping lists using generic type methods + + List userDtoList = MapperUtil.mapList(users, UserDTO.class); + + assertThat(userDtoList, Matchers.hasItem( + Matchers.both(hasProperty("userId", equalTo("b100"))) + .and(hasProperty("email", equalTo("user1@baeldung.com"))) + .and(hasProperty("userName", equalTo("user1"))))); + + // Mapping lists using PropertyMap and Converter + + UserList userList = new UserList(); + userList.setUsers(users); + UserListDTO dto = new UserListDTO(); + mapper.map(userList, dto); + + assertNotNull(dto); + assertThat(dto, Matchers.hasProperty("usernames")); + assertThat(dto.getUsernames(), hasSize(3)); + + } + +} \ No newline at end of file diff --git a/model-mapper/src/Main.java b/model-mapper/src/Main.java deleted file mode 100644 index a6deb49168..0000000000 --- a/model-mapper/src/Main.java +++ /dev/null @@ -1,58 +0,0 @@ -import com.baeldung.model.User; -import com.baeldung.model.UserDTO; -import com.baeldung.model.UserList; -import com.baeldung.util.MapperUtil; -import com.baeldung.util.UserPropertyMap; -import org.modelmapper.ModelMapper; -import org.modelmapper.TypeToken; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author sasam0320 - * @date 4/18/2020 - */ - -public class Main { - - public static void main(String[] args) { - - //Instantiate ModelMapper - - ModelMapper mapper = new ModelMapper(); - mapper.addMappings(new UserPropertyMap()); - - // Mapping lists using TypeToken generic class - - List integers = new ArrayList(); - - integers.add(1); - integers.add(2); - integers.add(3); - - List characters = mapper.map(integers, new TypeToken>() {}.getType()); - - System.out.println("Character list: " + characters); - - // Mapping lists using generic type methods - - List users = new ArrayList(); - users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); - users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); - users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); - - List userDtoList = MapperUtil.mapList(users, UserDTO.class); - userDtoList.stream().map(userDto -> userDto.getEmail()).forEachOrdered(System.out::println); - - // Mapping lists using PropertyMap and Converter - - UserList userList = new UserList(); - userList.setUsers(users); - UserDTO dto = new UserDTO(); - - mapper.map(userList, dto); - dto.getUsernames().forEach(System.out::println); - - } -} diff --git a/parent-java/pom.xml b/parent-java/pom.xml index 4828bc2abb..ba786d912c 100644 --- a/parent-java/pom.xml +++ b/parent-java/pom.xml @@ -45,6 +45,9 @@ 23.0 2.6 1.19 + 2.3.6 + 4.12 + 1.3 From 553e4f1a0454f64390e5aeec4de6347a7a354ab7 Mon Sep 17 00:00:00 2001 From: Justin Albano Date: Tue, 21 Apr 2020 14:27:42 -0400 Subject: [PATCH 059/157] BAEL-3965: Moved examples to new spring-core module --- pom.xml | 2 + spring-core-4/README.md | 7 ++ spring-core-4/pom.xml | 88 +++++++++++++++++++ .../java/com/baeldung/factorymethod/Bar.java | 0 .../java/com/baeldung/factorymethod/Foo.java | 0 .../factorymethod/InstanceBarFactory.java | 0 .../factorymethod/InstanceFooFactory.java | 0 .../factorymethod/SingletonBarFactory.java | 0 .../factorymethod/SingletonFooFactory.java | 0 .../InstanceBarFactoryIntegrationTest.java | 0 .../InstanceFooFactoryIntegrationTest.java | 0 .../SingletonBarFactoryIntegrationTest.java | 0 .../SingletonFooFactoryIntegrationTest.java | 0 .../factorymethod/instance-bar-config.xml | 0 .../factorymethod/instance-foo-config.xml | 0 .../factorymethod/static-bar-config.xml | 18 ++-- .../factorymethod/static-foo-config.xml | 0 17 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 spring-core-4/README.md create mode 100644 spring-core-4/pom.xml rename {spring-core-3 => spring-core-4}/src/main/java/com/baeldung/factorymethod/Bar.java (100%) rename {spring-core-3 => spring-core-4}/src/main/java/com/baeldung/factorymethod/Foo.java (100%) rename {spring-core-3 => spring-core-4}/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java (100%) rename {spring-core-3 => spring-core-4}/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java (100%) rename {spring-core-3 => spring-core-4}/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java (100%) rename {spring-core-3 => spring-core-4}/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java (100%) rename {spring-core-3 => spring-core-4}/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java (100%) rename {spring-core-3 => spring-core-4}/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java (100%) rename {spring-core-3 => spring-core-4}/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java (100%) rename {spring-core-3 => spring-core-4}/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java (100%) rename {spring-core-3 => spring-core-4}/src/test/resources/factorymethod/instance-bar-config.xml (100%) rename {spring-core-3 => spring-core-4}/src/test/resources/factorymethod/instance-foo-config.xml (100%) rename {spring-core-3 => spring-core-4}/src/test/resources/factorymethod/static-bar-config.xml (54%) rename {spring-core-3 => spring-core-4}/src/test/resources/factorymethod/static-foo-config.xml (100%) diff --git a/pom.xml b/pom.xml index 9e3b354d74..ab6870c780 100644 --- a/pom.xml +++ b/pom.xml @@ -651,6 +651,7 @@ spring-core spring-core-2 spring-core-3 + spring-core-4 spring-cucumber spring-data-rest @@ -1155,6 +1156,7 @@ spring-core spring-core-2 spring-core-3 + spring-core-4 spring-cucumber spring-data-rest diff --git a/spring-core-4/README.md b/spring-core-4/README.md new file mode 100644 index 0000000000..f882c77179 --- /dev/null +++ b/spring-core-4/README.md @@ -0,0 +1,7 @@ +## Spring Core + +This module contains articles about core Spring functionality + +## Relevant Articles: + +- More articles: [[<-- prev]](/spring-core-3) diff --git a/spring-core-4/pom.xml b/spring-core-4/pom.xml new file mode 100644 index 0000000000..06598fb41e --- /dev/null +++ b/spring-core-4/pom.xml @@ -0,0 +1,88 @@ + + + 4.0.0 + spring-core-4 + spring-core-4 + + + com.baeldung + parent-spring-5 + 0.0.1-SNAPSHOT + ../parent-spring-5 + + + + + org.springframework + spring-beans + ${spring.version} + + + org.springframework + spring-tx + ${spring.version} + + + org.springframework + spring-jdbc + ${spring.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring.boot.version} + + + org.springframework + spring-context + ${spring.version} + + + org.springframework + spring-core + ${spring.version} + + + javax.annotation + javax.annotation-api + ${annotation-api.version} + + + org.springframework + spring-test + ${spring.version} + test + + + org.junit.jupiter + junit-jupiter-engine + ${junit-jupiter.version} + test + + + org.junit.jupiter + junit-jupiter-api + ${junit-jupiter.version} + test + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven.surefire.version} + + + + + + 2.22.1 + 1.3.2 + 2.2.2.RELEASE + + + \ No newline at end of file diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/Bar.java b/spring-core-4/src/main/java/com/baeldung/factorymethod/Bar.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/factorymethod/Bar.java rename to spring-core-4/src/main/java/com/baeldung/factorymethod/Bar.java diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/Foo.java b/spring-core-4/src/main/java/com/baeldung/factorymethod/Foo.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/factorymethod/Foo.java rename to spring-core-4/src/main/java/com/baeldung/factorymethod/Foo.java diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java b/spring-core-4/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java rename to spring-core-4/src/main/java/com/baeldung/factorymethod/InstanceBarFactory.java diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java b/spring-core-4/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java rename to spring-core-4/src/main/java/com/baeldung/factorymethod/InstanceFooFactory.java diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java b/spring-core-4/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java rename to spring-core-4/src/main/java/com/baeldung/factorymethod/SingletonBarFactory.java diff --git a/spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java b/spring-core-4/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java similarity index 100% rename from spring-core-3/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java rename to spring-core-4/src/main/java/com/baeldung/factorymethod/SingletonFooFactory.java diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/factorymethod/InstanceBarFactoryIntegrationTest.java diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/factorymethod/InstanceFooFactoryIntegrationTest.java diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/factorymethod/SingletonBarFactoryIntegrationTest.java diff --git a/spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java b/spring-core-4/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java similarity index 100% rename from spring-core-3/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java rename to spring-core-4/src/test/java/com/baeldung/factorymethod/SingletonFooFactoryIntegrationTest.java diff --git a/spring-core-3/src/test/resources/factorymethod/instance-bar-config.xml b/spring-core-4/src/test/resources/factorymethod/instance-bar-config.xml similarity index 100% rename from spring-core-3/src/test/resources/factorymethod/instance-bar-config.xml rename to spring-core-4/src/test/resources/factorymethod/instance-bar-config.xml diff --git a/spring-core-3/src/test/resources/factorymethod/instance-foo-config.xml b/spring-core-4/src/test/resources/factorymethod/instance-foo-config.xml similarity index 100% rename from spring-core-3/src/test/resources/factorymethod/instance-foo-config.xml rename to spring-core-4/src/test/resources/factorymethod/instance-foo-config.xml diff --git a/spring-core-3/src/test/resources/factorymethod/static-bar-config.xml b/spring-core-4/src/test/resources/factorymethod/static-bar-config.xml similarity index 54% rename from spring-core-3/src/test/resources/factorymethod/static-bar-config.xml rename to spring-core-4/src/test/resources/factorymethod/static-bar-config.xml index 4d1befc645..e709da36a1 100644 --- a/spring-core-3/src/test/resources/factorymethod/static-bar-config.xml +++ b/spring-core-4/src/test/resources/factorymethod/static-bar-config.xml @@ -1,9 +1,9 @@ - - - + + + \ No newline at end of file diff --git a/spring-core-3/src/test/resources/factorymethod/static-foo-config.xml b/spring-core-4/src/test/resources/factorymethod/static-foo-config.xml similarity index 100% rename from spring-core-3/src/test/resources/factorymethod/static-foo-config.xml rename to spring-core-4/src/test/resources/factorymethod/static-foo-config.xml From d1b282220d4c4671343424b5737312a25dd2e2b1 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Tue, 21 Apr 2020 21:29:38 +0200 Subject: [PATCH 060/157] Renaming test methods and formatting --- java-collections-conversions-2/pom.xml | 14 +++++++------- .../java/com/baeldung/modelmapper/MapperUtil.java | 4 ++-- .../main/java/com/baeldung/modelmapper/User.java | 2 +- .../java/com/baeldung/modelmapper/UserDTO.java | 2 +- .../java/com/baeldung/modelmapper/UserList.java | 2 +- .../java/com/baeldung/modelmapper/UserListDTO.java | 2 +- .../com/baeldung/modelmapper/UserPropertyMap.java | 3 +-- ...pingTest.java => UsersListMappingUnitTest.java} | 13 ++++++------- parent-java/pom.xml | 12 ++++++------ 9 files changed, 26 insertions(+), 28 deletions(-) rename java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/{UserMappingTest.java => UsersListMappingUnitTest.java} (90%) diff --git a/java-collections-conversions-2/pom.xml b/java-collections-conversions-2/pom.xml index ca4ed882dd..892d73cb2b 100644 --- a/java-collections-conversions-2/pom.xml +++ b/java-collections-conversions-2/pom.xml @@ -20,23 +20,23 @@ commons-lang3 ${commons-lang3.version} - + org.modelmapper modelmapper ${modelmapper.version} - - + + junit junit ${junit.version} - test - - + test + + org.hamcrest hamcrest-all ${hamcrest.version} test - + diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java index c02f012126..bbc2153c63 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java @@ -7,10 +7,10 @@ import java.util.ArrayList; import java.util.List; /** - * @author sasam0320 - * @description * This is a helper class that contains methods for generic mapping of the users list. * Initially, an instance of ModelMapper was created. In the static block we set the matching configuration to STRICT. + * + * @author sasam0320 */ public class MapperUtil { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java index 8f13b44894..7fe22fb262 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java @@ -1,8 +1,8 @@ package com.baeldung.modelmapper; /** + * User model entity class * @author sasam0320 - * @description User model entity class */ public class User { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java index ce75eecefc..d36b829232 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java @@ -1,8 +1,8 @@ package com.baeldung.modelmapper; /** + * UserDTO model class * @author sasam0320 - * @description UserDTO model class */ public class UserDTO { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java index 02361da469..7c410727fd 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java @@ -3,8 +3,8 @@ package com.baeldung.modelmapper; import java.util.Collection; /** + * UserList class that contain collection of users * @author sasam0320 - * @description UserList class that contain collection of users */ public class UserList { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java index fba311c1a3..ac25185635 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java @@ -3,8 +3,8 @@ package com.baeldung.modelmapper; import java.util.List; /** + * UserListDTO class that contain list of username properties * @author sasam0320 - * @description UserListDTO class that contain list of username properties */ public class UserListDTO { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 9fa945ce32..3d9059c520 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -7,10 +7,9 @@ import java.util.ArrayList; import java.util.List; /** - * @author sasam0320 - * @description * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. * In the configuration method, we call a converter to do the mapping. + * @author sasam0320 */ public class UserPropertyMap extends PropertyMap { diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java similarity index 90% rename from java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java rename to java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java index 44a929621b..e03ddf81cf 100644 --- a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java @@ -13,18 +13,17 @@ import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasItems; import static org.hamcrest.Matchers.hasProperty; import static org.hamcrest.collection.IsCollectionWithSize.hasSize; - import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; /** - * @sasam0320 - * @description * This class has test methods of mapping Integer to Character list, * mapping user list to DTO list using MapperUtil generic methods and Converter + * + * @author sasam0320 */ -public class UserMappingTest { +public class UsersListMappingUnitTest { private ModelMapper mapper; private List users; @@ -42,7 +41,7 @@ public class UserMappingTest { } @Test - public void testMapIntegerList() { + public void whenMapIntegerToCharList() { List integers = new ArrayList(); @@ -53,12 +52,12 @@ public class UserMappingTest { List characters = mapper.map(integers, new TypeToken>() { }.getType()); - assertThat(characters, hasItems('1','2','3')); + assertThat(characters, hasItems('1', '2', '3')); } @Test - public void testMapGenericTypeLists() { + public void givenUsersList_whenUseGenericType_thenMapToDto() { // Mapping lists using generic type methods diff --git a/parent-java/pom.xml b/parent-java/pom.xml index ba786d912c..5c347ef176 100644 --- a/parent-java/pom.xml +++ b/parent-java/pom.xml @@ -1,8 +1,8 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 parent-java 0.0.1-SNAPSHOT @@ -45,9 +45,9 @@ 23.0 2.6 1.19 - 2.3.6 - 4.12 - 1.3 + 2.3.6 + 4.12 + 1.3 From 32d1cc8a13f87217f906dabcc68afbf47fe466fe Mon Sep 17 00:00:00 2001 From: Sasa M Date: Tue, 21 Apr 2020 22:26:22 +0200 Subject: [PATCH 061/157] changes in build pom.xml --- .../src/main/java/com/baeldung/modelmapper/MapperUtil.java | 2 +- .../src/main/java/com/baeldung/modelmapper/User.java | 6 ++++-- .../src/main/java/com/baeldung/modelmapper/UserDTO.java | 3 ++- .../src/main/java/com/baeldung/modelmapper/UserList.java | 3 ++- .../src/main/java/com/baeldung/modelmapper/UserListDTO.java | 3 ++- .../main/java/com/baeldung/modelmapper/UserPropertyMap.java | 4 +++- .../com/baeldung/modelmapper/UsersListMappingUnitTest.java | 2 +- parent-java/pom.xml | 2 +- 8 files changed, 16 insertions(+), 9 deletions(-) diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java index bbc2153c63..546e415755 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java @@ -10,7 +10,7 @@ import java.util.List; * This is a helper class that contains methods for generic mapping of the users list. * Initially, an instance of ModelMapper was created. In the static block we set the matching configuration to STRICT. * - * @author sasam0320 + * @author Sasa Milenkovic */ public class MapperUtil { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java index 7fe22fb262..23a424dedd 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java @@ -2,7 +2,8 @@ package com.baeldung.modelmapper; /** * User model entity class - * @author sasam0320 + * + * @author Sasa Milenkovic */ public class User { @@ -14,7 +15,8 @@ public class User { // Standard constructors, getters and setters - public User(){} + public User() { + } public User(String userId, String userName, String email, String contactNumber, String userType) { this.userId = userId; diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java index d36b829232..e31414b629 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java @@ -2,7 +2,8 @@ package com.baeldung.modelmapper; /** * UserDTO model class - * @author sasam0320 + * + * @author Sasa Milenkovic */ public class UserDTO { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java index 7c410727fd..7b6bed807b 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserList.java @@ -4,7 +4,8 @@ import java.util.Collection; /** * UserList class that contain collection of users - * @author sasam0320 + * + * @author Sasa Milenkovic */ public class UserList { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java index ac25185635..c001cbbc3c 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserListDTO.java @@ -4,7 +4,8 @@ import java.util.List; /** * UserListDTO class that contain list of username properties - * @author sasam0320 + * + * @author Sasa Milenkovic */ public class UserListDTO { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 3d9059c520..d2c32a307d 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -3,13 +3,15 @@ package com.baeldung.modelmapper; import org.modelmapper.AbstractConverter; import org.modelmapper.Converter; import org.modelmapper.PropertyMap; + import java.util.ArrayList; import java.util.List; /** * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. * In the configuration method, we call a converter to do the mapping. - * @author sasam0320 + * + * @author Sasa Milenkovic */ public class UserPropertyMap extends PropertyMap { diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java index e03ddf81cf..05792fda38 100644 --- a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java @@ -21,7 +21,7 @@ import static org.junit.Assert.assertThat; * This class has test methods of mapping Integer to Character list, * mapping user list to DTO list using MapperUtil generic methods and Converter * - * @author sasam0320 + * @author Sasa Milenkovic */ public class UsersListMappingUnitTest { diff --git a/parent-java/pom.xml b/parent-java/pom.xml index 5c347ef176..3b2b5f59de 100644 --- a/parent-java/pom.xml +++ b/parent-java/pom.xml @@ -45,7 +45,7 @@ 23.0 2.6 1.19 - 2.3.6 + 2.3.7 4.12 1.3 From 56153d65d8134d26ef0f6a2a2759b822b3c6ca9f Mon Sep 17 00:00:00 2001 From: Justin Albano Date: Wed, 22 Apr 2020 06:18:31 -0400 Subject: [PATCH 062/157] BAEL-3965: Corrected XML formatting in code examples --- .../factorymethod/instance-bar-config.xml | 20 +++++++++--------- .../factorymethod/instance-foo-config.xml | 20 +++++++++--------- .../factorymethod/static-bar-config.xml | 21 ++++++++----------- .../factorymethod/static-foo-config.xml | 21 ++++++++----------- 4 files changed, 38 insertions(+), 44 deletions(-) diff --git a/spring-core-4/src/test/resources/factorymethod/instance-bar-config.xml b/spring-core-4/src/test/resources/factorymethod/instance-bar-config.xml index 40d2f33683..a4281aee4e 100644 --- a/spring-core-4/src/test/resources/factorymethod/instance-bar-config.xml +++ b/spring-core-4/src/test/resources/factorymethod/instance-bar-config.xml @@ -1,19 +1,19 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util + http://www.springframework.org/schema/util/spring-util.xsd"> + class="com.baeldung.factorymethod.InstanceBarFactory" /> + factory-bean="instanceBarFactory" + factory-method="createInstance"> diff --git a/spring-core-4/src/test/resources/factorymethod/instance-foo-config.xml b/spring-core-4/src/test/resources/factorymethod/instance-foo-config.xml index c45bef6a85..0f21f06f5a 100644 --- a/spring-core-4/src/test/resources/factorymethod/instance-foo-config.xml +++ b/spring-core-4/src/test/resources/factorymethod/instance-foo-config.xml @@ -1,18 +1,18 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util + http://www.springframework.org/schema/util/spring-util.xsd"> + class="com.baeldung.factorymethod.InstanceFooFactory" /> + factory-bean="instanceFooFactory" + factory-method="createInstance" /> \ No newline at end of file diff --git a/spring-core-4/src/test/resources/factorymethod/static-bar-config.xml b/spring-core-4/src/test/resources/factorymethod/static-bar-config.xml index e709da36a1..2cacc293bc 100644 --- a/spring-core-4/src/test/resources/factorymethod/static-bar-config.xml +++ b/spring-core-4/src/test/resources/factorymethod/static-bar-config.xml @@ -1,19 +1,16 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util + http://www.springframework.org/schema/util/spring-util.xsd"> + class="com.baeldung.factorymethod.SingletonBarFactory" + factory-method="createInstance"> diff --git a/spring-core-4/src/test/resources/factorymethod/static-foo-config.xml b/spring-core-4/src/test/resources/factorymethod/static-foo-config.xml index 83e61a656c..ffe1480638 100644 --- a/spring-core-4/src/test/resources/factorymethod/static-foo-config.xml +++ b/spring-core-4/src/test/resources/factorymethod/static-foo-config.xml @@ -1,18 +1,15 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:util="http://www.springframework.org/schema/util" + xsi:schemaLocation=" + http://www.springframework.org/schema/beans + http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/util + http://www.springframework.org/schema/util/spring-util.xsd"> + class="com.baeldung.factorymethod.SingletonFooFactory" + factory-method="createInstance" /> \ No newline at end of file From 8985f601a7c9b32951f2fb369092f8ab89ca0741 Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Wed, 22 Apr 2020 22:15:54 -0600 Subject: [PATCH 063/157] BAEL-3961 move the sql string into a new line to improve readability. --- .../src/main/java/com/baeldung/jdbc/EmployeeDAO.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java index 8637f6f851..45f206a2b9 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java @@ -37,7 +37,8 @@ public class EmployeeDAO { public List getEmployeesFromIdList(List ids) { String inSql = String.join(",", Collections.nCopies(ids.size(), "?")); - List employees = jdbcTemplate.query(String.format("SELECT * FROM EMPLOYEE WHERE id IN (%s)", inSql), + List employees = jdbcTemplate.query( + String.format("SELECT * FROM EMPLOYEE WHERE id IN (%s)", inSql), ids.toArray(), (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"))); @@ -53,7 +54,8 @@ public class EmployeeDAO { } jdbcTemplate.batchUpdate("INSERT INTO employee_tmp VALUES(?)", employeeIds); - List employees = jdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (SELECT id FROM employee_tmp)", + List employees = jdbcTemplate.query( + "SELECT * FROM EMPLOYEE WHERE id IN (SELECT id FROM employee_tmp)", (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"))); jdbcTemplate.update("DELETE FROM employee_tmp"); From 38f62ad24d646f18d66019eb808861462868ad80 Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Wed, 22 Apr 2020 22:36:18 -0600 Subject: [PATCH 064/157] BAEL-3961 move the sql string into a new line to improve readability. --- .../src/main/java/com/baeldung/jdbc/EmployeeDAO.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java index 45f206a2b9..2ea42381eb 100644 --- a/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java +++ b/persistence-modules/spring-persistence-simple-2/src/main/java/com/baeldung/jdbc/EmployeeDAO.java @@ -28,7 +28,8 @@ public class EmployeeDAO { public List getEmployeesFromIdListNamed(List ids) { SqlParameterSource parameters = new MapSqlParameterSource("ids", ids); - List employees = namedJdbcTemplate.query("SELECT * FROM EMPLOYEE WHERE id IN (:ids)", + List employees = namedJdbcTemplate.query( + "SELECT * FROM EMPLOYEE WHERE id IN (:ids)", parameters, (rs, rowNum) -> new Employee(rs.getInt("id"), rs.getString("first_name"), rs.getString("last_name"))); From 62842f97cf2c1e1ce1ba94c5505d769acb0632a6 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Thu, 23 Apr 2020 13:10:29 +0530 Subject: [PATCH 065/157] JAVA-923: Migrate spring-data-dynamodb to parent-boot-2 --- persistence-modules/spring-data-dynamodb/pom.xml | 8 ++++---- .../spring/data/dynamodb/config/DynamoDBConfig.java | 4 ++-- .../data/dynamodb/repositories/ProductInfoRepository.java | 7 ++++--- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/persistence-modules/spring-data-dynamodb/pom.xml b/persistence-modules/spring-data-dynamodb/pom.xml index fceceb40ba..377e35b635 100644 --- a/persistence-modules/spring-data-dynamodb/pom.xml +++ b/persistence-modules/spring-data-dynamodb/pom.xml @@ -9,9 +9,9 @@ com.baeldung - parent-boot-1 + parent-boot-2 0.0.1-SNAPSHOT - ../../parent-boot-1 + ../../parent-boot-2 @@ -19,7 +19,7 @@ org.springframework.data spring-data-releasetrain - Hopper-SR10 + Lovelace-SR16 pom import @@ -174,7 +174,7 @@ com.baeldung.Application 4.3.4.RELEASE 4.5.2 - 4.4.1 + 5.1.0 1.11.64 3.3.7-1 1.0.392 diff --git a/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java b/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java index 9278c0a12e..7e97e6b383 100644 --- a/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java +++ b/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/config/DynamoDBConfig.java @@ -44,8 +44,8 @@ public class DynamoDBConfig { return new BasicAWSCredentials(amazonAWSAccessKey, amazonAWSSecretKey); } - @Bean(name = "mvcHandlerMappingIntrospector") - public HandlerMappingIntrospector mvcHandlerMappingIntrospector() { + @Bean(name = "mvcHandlerMappingIntrospectorCustom") + public HandlerMappingIntrospector mvcHandlerMappingIntrospectorCustom() { return new HandlerMappingIntrospector(context); } } diff --git a/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java b/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java index da47f033b6..6e8b493c3b 100644 --- a/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java +++ b/persistence-modules/spring-data-dynamodb/src/main/java/com/baeldung/spring/data/dynamodb/repositories/ProductInfoRepository.java @@ -1,12 +1,13 @@ package com.baeldung.spring.data.dynamodb.repositories; -import com.baeldung.spring.data.dynamodb.model.ProductInfo; +import java.util.Optional; + import org.socialsignin.spring.data.dynamodb.repository.EnableScan; import org.springframework.data.repository.CrudRepository; -import java.util.List; +import com.baeldung.spring.data.dynamodb.model.ProductInfo; @EnableScan public interface ProductInfoRepository extends CrudRepository { - List findById(String id); + Optional findById(String id); } From acf4fa5af9ad36f7273c11ee4be36dbe95434056 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Thu, 23 Apr 2020 22:18:45 +0200 Subject: [PATCH 066/157] JAVA-73: Move scripts under live-test-resources --- persistence-modules/spring-data-mongodb/LIVE-TEST.md | 9 --------- persistence-modules/spring-data-mongodb/README.md | 9 +++++++++ .../{ => src/live-test/resources}/live-test-setup.sh | 2 +- .../{ => src/live-test/resources}/live-test-teardown.sh | 0 .../{ => src/live-test/resources}/live-test.sh | 0 5 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 persistence-modules/spring-data-mongodb/LIVE-TEST.md rename persistence-modules/spring-data-mongodb/{ => src/live-test/resources}/live-test-setup.sh (58%) rename persistence-modules/spring-data-mongodb/{ => src/live-test/resources}/live-test-teardown.sh (100%) rename persistence-modules/spring-data-mongodb/{ => src/live-test/resources}/live-test.sh (100%) mode change 100755 => 100644 diff --git a/persistence-modules/spring-data-mongodb/LIVE-TEST.md b/persistence-modules/spring-data-mongodb/LIVE-TEST.md deleted file mode 100644 index 9da1ea249e..0000000000 --- a/persistence-modules/spring-data-mongodb/LIVE-TEST.md +++ /dev/null @@ -1,9 +0,0 @@ -========= - -## Spring Data MongoDB Live Testing - - -There are 3 scripts to simplify running live tests: -1. `live-test-setup.sh` builds a docker image with the necessary setup and runs it. The environment is ready, when the log stops - it takes approximately 30 seconds. -2. `live-test.sh` runs the live tests (but no other tests). -3. `live-test-setup.sh` stops and removes the docker image. diff --git a/persistence-modules/spring-data-mongodb/README.md b/persistence-modules/spring-data-mongodb/README.md index c4f21dffc0..381bf83fa8 100644 --- a/persistence-modules/spring-data-mongodb/README.md +++ b/persistence-modules/spring-data-mongodb/README.md @@ -13,3 +13,12 @@ - [Spring Data Annotations](http://www.baeldung.com/spring-data-annotations) - [Spring Data MongoDB Transactions](https://www.baeldung.com/spring-data-mongodb-transactions ) - [ZonedDateTime with Spring Data MongoDB](https://www.baeldung.com/spring-data-mongodb-zoneddatetime) + + +## Spring Data MongoDB Live Testing + + +There are 3 scripts to simplify running live tests: +1. [`live-test-setup.sh`](src/live-test/resources/live-test-setup.sh) builds a docker image with the necessary setup and runs it. The environment is ready, when the log stops - it takes approximately 30 seconds. +2. [`live-test.sh`](src/live-test/resources/live-test.sh) runs the live tests (but no other tests). +3. [`live-test-teardown.sh`](src/live-test/resources/live-test-teardown.sh) stops and removes the docker image. diff --git a/persistence-modules/spring-data-mongodb/live-test-setup.sh b/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test-setup.sh similarity index 58% rename from persistence-modules/spring-data-mongodb/live-test-setup.sh rename to persistence-modules/spring-data-mongodb/src/live-test/resources/live-test-setup.sh index e8e0437083..78968d51aa 100644 --- a/persistence-modules/spring-data-mongodb/live-test-setup.sh +++ b/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test-setup.sh @@ -1,5 +1,5 @@ #!/bin/bash -docker image build -t spring-data-mongodb:live-test src/live-test/resources/ +docker image build -t spring-data-mongodb:live-test . docker run -p 27017:27017 --name spring-data-mongodb-live-test spring-data-mongodb:live-test diff --git a/persistence-modules/spring-data-mongodb/live-test-teardown.sh b/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test-teardown.sh similarity index 100% rename from persistence-modules/spring-data-mongodb/live-test-teardown.sh rename to persistence-modules/spring-data-mongodb/src/live-test/resources/live-test-teardown.sh diff --git a/persistence-modules/spring-data-mongodb/live-test.sh b/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test.sh old mode 100755 new mode 100644 similarity index 100% rename from persistence-modules/spring-data-mongodb/live-test.sh rename to persistence-modules/spring-data-mongodb/src/live-test/resources/live-test.sh From ffa8e0839df894019e1b3cc501728c9c0f5d9aa6 Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Thu, 23 Apr 2020 22:38:10 +0200 Subject: [PATCH 067/157] JAVA-73: Fix live-test.sh and cleanup pom.xml --- .../spring-data-mongodb/src/live-test/resources/live-test.sh | 2 +- pom.xml | 5 +---- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test.sh b/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test.sh index 5a079bdac8..307a68a3bd 100644 --- a/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test.sh +++ b/persistence-modules/spring-data-mongodb/src/live-test/resources/live-test.sh @@ -1,3 +1,3 @@ #!/bin/bash -mvn clean compile test -P live-all +mvn clean compile test -P live-all -f ../../../pom.xml diff --git a/pom.xml b/pom.xml index f94c89a5c0..314a6a9f43 100644 --- a/pom.xml +++ b/pom.xml @@ -1341,10 +1341,7 @@ - - - - + From 6a08fca7aae349c4219809e8caa25e7ec42ca64a Mon Sep 17 00:00:00 2001 From: kkaravitis Date: Fri, 24 Apr 2020 15:04:44 +0300 Subject: [PATCH 068/157] [BAEL-3936] Fixed format to use 2-space indenting for line continuations. --- .../unrelated/entities/MultipleRecipe.java | 9 +- .../jpa/unrelated/entities/Recipe.java | 10 +- .../entities/UnrelatedEntitiesUnitTest.java | 117 +++++++++--------- 3 files changed, 70 insertions(+), 66 deletions(-) diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java index d628af1eaf..8664d6fd7f 100644 --- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/MultipleRecipe.java @@ -56,15 +56,16 @@ public class MultipleRecipe { if (o == null || getClass() != o.getClass()) return false; MultipleRecipe that = (MultipleRecipe) o; + return Objects.equals(id, that.id) && - Objects.equals(cocktail, that.cocktail) && - Objects.equals(instructions, that.instructions) && - Objects.equals(baseIngredient, that.baseIngredient); + Objects.equals(cocktail, that.cocktail) && + Objects.equals(instructions, that.instructions) && + Objects.equals(baseIngredient, that.baseIngredient); } @Override public int hashCode() { return Objects.hash(id, cocktail, - instructions, baseIngredient); + instructions, baseIngredient); } } diff --git a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java index 585c6abec3..4b3d200b60 100644 --- a/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java +++ b/persistence-modules/java-jpa-2/src/main/java/com/baeldung/jpa/unrelated/entities/Recipe.java @@ -34,11 +34,13 @@ public class Recipe { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; Recipe recipe = (Recipe) o; - return Objects.equals(cocktail, recipe.cocktail) && - Objects.equals(instructions, recipe.instructions); + return Objects.equals(cocktail, recipe.cocktail) + && Objects.equals(instructions, recipe.instructions); } @Override diff --git a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java index 569b093db6..044e59b16e 100644 --- a/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java +++ b/persistence-modules/java-jpa-2/src/test/java/com/baeldung/jpa/unrelated/entities/UnrelatedEntitiesUnitTest.java @@ -27,9 +27,9 @@ public class UnrelatedEntitiesUnitTest { entityManager.persist(ginTonic); entityManager.persist(new Recipe(mojito.getName(), "Some instructions")); entityManager.persist(new MultipleRecipe(1L, mojito.getName(), - "some instructions", mojito.getCategory())); + "some instructions", mojito.getCategory())); entityManager.persist(new MultipleRecipe(2L, mojito.getName(), - "some other instructions", mojito.getCategory())); + "some other instructions", mojito.getCategory())); entityManager.getTransaction().commit(); } @@ -43,56 +43,56 @@ public class UnrelatedEntitiesUnitTest { public void givenCocktailsWithRecipe_whenQuerying_thenTheExpectedCocktailsReturned() { // JPA Cocktail cocktail = entityManager.createQuery("select c " - + "from Cocktail c join c.recipe", Cocktail.class) - .getSingleResult(); + + "from Cocktail c join c.recipe", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); cocktail = entityManager.createQuery("select c " - + "from Cocktail c join Recipe r " - + "on c.name = r.cocktail", Cocktail.class) - .getSingleResult(); + + "from Cocktail c join Recipe r " + + "on c.name = r.cocktail", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); // QueryDSL cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .join(QCocktail.cocktail.recipe) - .fetchOne(); + .join(QCocktail.cocktail.recipe) + .fetchOne(); verifyResult(mojito, cocktail); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .join(QRecipe.recipe) - .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) - .fetchOne(); + .join(QRecipe.recipe) + .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) + .fetchOne(); verifyResult(mojito, cocktail); } @Test public void givenCocktailsWithoutRecipe_whenQuerying_thenTheExpectedCocktailsReturned() { Cocktail cocktail = entityManager.createQuery("select c " - + "from Cocktail c left join c.recipe r " - + "where r is null", Cocktail.class) - .getSingleResult(); + + "from Cocktail c left join c.recipe r " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); cocktail = entityManager.createQuery("select c " - + "from Cocktail c left join Recipe r " - + "on c.name = r.cocktail " - + "where r is null", Cocktail.class) - .getSingleResult(); + + "from Cocktail c left join Recipe r " + + "on c.name = r.cocktail " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); QRecipe recipe = new QRecipe("alias"); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .leftJoin(QCocktail.cocktail.recipe, recipe) - .where(recipe.isNull()) - .fetchOne(); + .leftJoin(QCocktail.cocktail.recipe, recipe) + .where(recipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .leftJoin(QRecipe.recipe) - .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) - .where(QRecipe.recipe.isNull()) - .fetchOne(); + .leftJoin(QRecipe.recipe) + .on(QCocktail.cocktail.name.eq(QRecipe.recipe.cocktail)) + .where(QRecipe.recipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); } @@ -100,26 +100,26 @@ public class UnrelatedEntitiesUnitTest { public void givenCocktailsWithMultipleRecipes_whenQuerying_thenTheExpectedCocktailsReturned() { // JPQL Cocktail cocktail = entityManager.createQuery("select c " - + "from Cocktail c join c.recipeList", Cocktail.class) - .getSingleResult(); + + "from Cocktail c join c.recipeList", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); cocktail = entityManager.createQuery("select c " - + "from Cocktail c join MultipleRecipe mr " - + "on mr.cocktail = c.name", Cocktail.class) - .getSingleResult(); + + "from Cocktail c join MultipleRecipe mr " + + "on mr.cocktail = c.name", Cocktail.class) + .getSingleResult(); verifyResult(mojito, cocktail); // QueryDSL cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .join(QCocktail.cocktail.recipeList) - .fetchOne(); + .join(QCocktail.cocktail.recipeList) + .fetchOne(); verifyResult(mojito, cocktail); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .join(QMultipleRecipe.multipleRecipe) - .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) - .fetchOne(); + .join(QMultipleRecipe.multipleRecipe) + .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) + .fetchOne(); verifyResult(mojito, cocktail); } @@ -127,31 +127,31 @@ public class UnrelatedEntitiesUnitTest { public void givenCocktailsWithoutMultipleRecipes_whenQuerying_thenTheExpectedCocktailsReturned() { // JPQL Cocktail cocktail = entityManager.createQuery("select c " - + "from Cocktail c left join c.recipeList r " - + "where r is null", Cocktail.class) - .getSingleResult(); + + "from Cocktail c left join c.recipeList r " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); cocktail = entityManager.createQuery("select c " - + "from Cocktail c left join MultipleRecipe r " - + "on c.name = r.cocktail " - + "where r is null", Cocktail.class) - .getSingleResult(); + + "from Cocktail c left join MultipleRecipe r " + + "on c.name = r.cocktail " + + "where r is null", Cocktail.class) + .getSingleResult(); verifyResult(ginTonic, cocktail); // QueryDSL QMultipleRecipe multipleRecipe = new QMultipleRecipe("alias"); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .leftJoin(QCocktail.cocktail.recipeList, multipleRecipe) - .where(multipleRecipe.isNull()) - .fetchOne(); + .leftJoin(QCocktail.cocktail.recipeList, multipleRecipe) + .where(multipleRecipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); cocktail = new JPAQuery(entityManager).from(QCocktail.cocktail) - .leftJoin(QMultipleRecipe.multipleRecipe) - .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) - .where(QMultipleRecipe.multipleRecipe.isNull()) - .fetchOne(); + .leftJoin(QMultipleRecipe.multipleRecipe) + .on(QCocktail.cocktail.name.eq(QMultipleRecipe.multipleRecipe.cocktail)) + .where(QMultipleRecipe.multipleRecipe.isNull()) + .fetchOne(); verifyResult(ginTonic, cocktail); } @@ -164,20 +164,21 @@ public class UnrelatedEntitiesUnitTest { // JPQL List recipes = entityManager.createQuery("select distinct r " - + "from MultipleRecipe r " - + "join Cocktail c " - + "on r.baseIngredient = c.category", - MultipleRecipe.class) - .getResultList(); + + "from MultipleRecipe r " + + "join Cocktail c " + + "on r.baseIngredient = c.category", + MultipleRecipe.class).getResultList(); + verifyResult.accept(recipes); // QueryDSL QCocktail cocktail = QCocktail.cocktail; QMultipleRecipe multipleRecipe = QMultipleRecipe.multipleRecipe; recipes = new JPAQuery(entityManager).from(multipleRecipe) - .join(cocktail) - .on(multipleRecipe.baseIngredient.eq(cocktail.category)) - .fetch(); + .join(cocktail) + .on(multipleRecipe.baseIngredient.eq(cocktail.category)) + .fetch(); + verifyResult.accept(recipes); } From 1278f63d03fd9e761e33f1ee0d4366596320016a Mon Sep 17 00:00:00 2001 From: Kostas Karavitis Date: Fri, 24 Apr 2020 15:38:39 +0300 Subject: [PATCH 069/157] [BAEL-3936] Upgrade hibernate and querydsl to the latest stable versions --- persistence-modules/java-jpa-2/pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/persistence-modules/java-jpa-2/pom.xml b/persistence-modules/java-jpa-2/pom.xml index b41cdccb07..d4532c32b8 100644 --- a/persistence-modules/java-jpa-2/pom.xml +++ b/persistence-modules/java-jpa-2/pom.xml @@ -138,7 +138,7 @@ - 5.4.0.Final + 5.4.14.Final 2.7.4-RC1 42.2.5 2.2 @@ -146,7 +146,7 @@ 3.5.1 3.3.3 3.0.0 - 4.2.2 + 4.3.1 From b31b84d475f77972c2fb512707489e0354c4169a Mon Sep 17 00:00:00 2001 From: Gergo Petrik Date: Fri, 24 Apr 2020 16:00:30 +0200 Subject: [PATCH 070/157] Mockint objectmapper with mockito (#9017) * Mockint objectmapper with mockito * enforcing naming convention for test classes * removed Spring * removed unattended changes * modified example * simplified call stack in flower validator --- spring-mockito/pom.xml | 2 +- testing-modules/mockito-2/pom.xml | 15 ++++++ .../baeldung/mockito/objectmapper/Flower.java | 32 +++++++++++ .../FlowerJsonStringValidator.java | 17 ++++++ .../FlowerJsonStringValidatorUnitTest.java | 53 +++++++++++++++++++ 5 files changed, 118 insertions(+), 1 deletion(-) create mode 100644 testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/Flower.java create mode 100644 testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidator.java create mode 100644 testing-modules/mockito-2/src/test/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidatorUnitTest.java diff --git a/spring-mockito/pom.xml b/spring-mockito/pom.xml index f3e0b04808..5d2cd7c445 100644 --- a/spring-mockito/pom.xml +++ b/spring-mockito/pom.xml @@ -28,7 +28,7 @@ - 2.21.0 + 2.24.0 diff --git a/testing-modules/mockito-2/pom.xml b/testing-modules/mockito-2/pom.xml index 76608a3039..340af89c82 100644 --- a/testing-modules/mockito-2/pom.xml +++ b/testing-modules/mockito-2/pom.xml @@ -14,8 +14,23 @@ ../../ + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + org.mockito + mockito-junit-jupiter + ${mockito.version} + test + + + 2.21.0 + 2.10.3 diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/Flower.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/Flower.java new file mode 100644 index 0000000000..bc366a39f9 --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/Flower.java @@ -0,0 +1,32 @@ +package com.baeldung.mockito.objectmapper; + +public class Flower { + + private String name; + private Integer petals; + + public Flower(String name, Integer petals) { + this.name = name; + this.petals = petals; + } + + public Flower() { + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Integer getPetals() { + return petals; + } + + public void setPetals(Integer petals) { + this.petals = petals; + } + +} diff --git a/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidator.java b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidator.java new file mode 100644 index 0000000000..91bad66e6d --- /dev/null +++ b/testing-modules/mockito-2/src/main/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidator.java @@ -0,0 +1,17 @@ +package com.baeldung.mockito.objectmapper; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +public class FlowerJsonStringValidator { + private ObjectMapper objectMapper; + + public FlowerJsonStringValidator(ObjectMapper objectMapper) { + this.objectMapper = objectMapper; + } + + public boolean flowerHasPetals(String jsonFlowerAsString) throws JsonProcessingException { + Flower flower = objectMapper.readValue(jsonFlowerAsString, Flower.class); + return flower.getPetals() > 0; + } +} diff --git a/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidatorUnitTest.java b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidatorUnitTest.java new file mode 100644 index 0000000000..31c3f0d01d --- /dev/null +++ b/testing-modules/mockito-2/src/test/java/com/baeldung/mockito/objectmapper/FlowerJsonStringValidatorUnitTest.java @@ -0,0 +1,53 @@ +package com.baeldung.mockito.objectmapper; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.anyString; +import static org.mockito.Mockito.eq; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class FlowerJsonStringValidatorUnitTest { + + @Mock + private ObjectMapper objectMapper; + + private FlowerJsonStringValidator flowerJsonStringValidator; + + @BeforeEach + public void setUp() { + flowerJsonStringValidator = new FlowerJsonStringValidator(objectMapper); + } + + @Test + public void whenCallingHasPetalsWithPetals_thenReturnsTrue() throws JsonProcessingException { + Flower rose = new Flower("testFlower", 100); + + when(objectMapper.readValue(anyString(), eq(Flower.class))).thenReturn(rose); + + assertTrue(flowerJsonStringValidator.flowerHasPetals("this can be a very long json flower")); + + verify(objectMapper, times(1)).readValue(anyString(), eq(Flower.class)); + } + + @Test + public void whenCallingHasPetalsWithZeroPetal_thenReturnsFalse() throws JsonProcessingException { + Flower rose = new Flower("testFlowerWithoutPetal", 0); + + when(objectMapper.readValue(anyString(), eq(Flower.class))).thenReturn(rose); + + assertFalse(flowerJsonStringValidator.flowerHasPetals("this can be a very long json flower")); + + verify(objectMapper, times(1)).readValue(anyString(), eq(Flower.class)); + } +} From 35f1a3eba55288d0141e6394a616691a6ed1c124 Mon Sep 17 00:00:00 2001 From: Roque Santos Date: Fri, 24 Apr 2020 11:10:44 -0300 Subject: [PATCH 071/157] BAEL-3927 : Encode a String to UTF-8 in Java (#8954) * BAEL-3927 : Encode a String to UTF-8 in Java * Update core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/encode/StringEncodeUnitTest.java Co-Authored-By: KevinGilmore * BAEL-3927 : Applying suggested adjustments * BAEL-3927 : Simplifying the code snippets * BAEL-3927 : Coding styles adjustements * BAEL-3927 : Test adjustements to fit changes in article Co-authored-by: KevinGilmore --- .../encodetoutf8/StringEncodeUnitTest.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/encodetoutf8/StringEncodeUnitTest.java diff --git a/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/encodetoutf8/StringEncodeUnitTest.java b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/encodetoutf8/StringEncodeUnitTest.java new file mode 100644 index 0000000000..a73104b234 --- /dev/null +++ b/core-java-modules/core-java-string-operations-2/src/test/java/com/baeldung/encodetoutf8/StringEncodeUnitTest.java @@ -0,0 +1,73 @@ +package com.baeldung.encodetoutf8; + +import static org.junit.Assert.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.codec.binary.StringUtils; +import org.junit.Test; + +public class StringEncodeUnitTest { + + @Test + public void givenGermanAsciiString_whenComparing_thenCompareNotEquals() { + String germanString = "Entwickeln Sie mit Vergnügen"; + byte[] germanBytes = germanString.getBytes(); + + String asciiEncodedString = new String(germanBytes, StandardCharsets.US_ASCII); + + assertNotEquals(germanString, asciiEncodedString); + } + + @Test + public void givenUsAsciiString_whenComparing_thenCompareNotEquals() { + String englishString = "Develop with pleasure"; + byte[] englishBytes = englishString.getBytes(); + + String asciiEncondedEnglishString = new String(englishBytes, StandardCharsets.US_ASCII); + + assertEquals(englishString, asciiEncondedEnglishString); + } + + /* + * ApacheCommonsCodecEncode + */ + @Test + public void givenSomeUnencodedString_whenApacheCommonsCodecEncode_thenCompareEquals() { + String rawString = "Entwickeln Sie mit Vergnügen"; + byte[] bytes = StringUtils.getBytesUtf8(rawString); + + String utf8EncodedString = StringUtils.newStringUtf8(bytes); + + assertEquals(rawString, utf8EncodedString); + } + + /* + * CoreJavaEncode + */ + @Test + public void givenSomeUnencodedString_whenCoreJavaEncode_thenCompareEquals() { + String rawString = "Entwickeln Sie mit Vergnügen"; + byte[] bytes = rawString.getBytes(StandardCharsets.UTF_8); + + String utf8EncodedString = new String(bytes, StandardCharsets.UTF_8); + + assertEquals(rawString, utf8EncodedString); + } + + /* + * Java7StandardCharsetsEncode + */ + @Test + public void givenSomeUnencodedString_whenJava7StandardCharsetsEncode_thenCompareEquals() { + String rawString = "Entwickeln Sie mit Vergnügen"; + ByteBuffer buffer = StandardCharsets.UTF_8.encode(rawString); + + String utf8EncodedString = StandardCharsets.UTF_8.decode(buffer) + .toString(); + + assertEquals(rawString, utf8EncodedString); + } +} From 7d6e096d28e9c1585f52bb464e9150ebbd2ca3b1 Mon Sep 17 00:00:00 2001 From: Donato Rimenti Date: Fri, 24 Apr 2020 16:51:50 +0200 Subject: [PATCH 072/157] Fixed whitespace formatting. --- libraries-data-2/pom.xml | 77 +++++++++---------- .../main/java/com/baeldung/r/FastRMean.java | 33 ++++---- .../main/java/com/baeldung/r/RCallerMean.java | 37 ++++----- .../src/main/java/com/baeldung/r/RUtils.java | 27 ++++--- .../main/java/com/baeldung/r/RenjinMean.java | 34 ++++---- .../main/java/com/baeldung/r/RserveMean.java | 29 +++---- .../com/baeldung/r/FastRMeanUnitTest.java | 26 +++---- .../r/RCallerMeanIntegrationTest.java | 32 ++++---- .../com/baeldung/r/RenjinMeanUnitTest.java | 34 ++++---- .../baeldung/r/RserveMeanIntegrationTest.java | 32 ++++---- 10 files changed, 184 insertions(+), 177 deletions(-) diff --git a/libraries-data-2/pom.xml b/libraries-data-2/pom.xml index 0dadcbd8d4..73c5452f77 100644 --- a/libraries-data-2/pom.xml +++ b/libraries-data-2/pom.xml @@ -128,24 +128,21 @@ ${awaitility.version} test - - - org.rosuda.REngine - Rserve - ${rserve.version} - - - - com.github.jbytecode - RCaller - ${rcaller.version} - - - - org.renjin - renjin-script-engine - ${renjin.version} - + + org.rosuda.REngine + Rserve + ${rserve.version} + + + com.github.jbytecode + RCaller + ${rcaller.version} + + + org.renjin + renjin-script-engine + ${renjin.version} + @@ -157,11 +154,11 @@ - - bedatadriven - bedatadriven public repo - https://nexus.bedatadriven.com/content/groups/public/ - + + bedatadriven + bedatadriven public repo + https://nexus.bedatadriven.com/content/groups/public/ + @@ -183,22 +180,22 @@ 1.8.1 - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - com/baeldung/r/FastRMean.java - - - com/baeldung/r/FastRMeanUnitTest.java - - - - - + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + com/baeldung/r/FastRMean.java + + + com/baeldung/r/FastRMeanUnitTest.java + + + + + \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java b/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java index 52fb2d1506..8348bfa403 100644 --- a/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java +++ b/libraries-data-2/src/main/java/com/baeldung/r/FastRMean.java @@ -10,19 +10,24 @@ import java.net.URISyntaxException; */ public class FastRMean { - /** - * Invokes the customMean R function passing the given values as arguments. - * - * @param values the input to the mean script - * @return the result of the R script - */ - public double mean(int[] values) { - Context polyglot = Context.newBuilder().allowAllAccess(true).build(); - String meanScriptContent = RUtils.getMeanScriptContent(); - polyglot.eval("R", meanScriptContent); - Value rBindings = polyglot.getBindings("R"); - Value rInput = rBindings.getMember("c").execute(values); - return rBindings.getMember("customMean").execute(rInput).asDouble(); - } + /** + * Invokes the customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + */ + public double mean(int[] values) { + Context polyglot = Context.newBuilder() + .allowAllAccess(true) + .build(); + String meanScriptContent = RUtils.getMeanScriptContent(); + polyglot.eval("R", meanScriptContent); + Value rBindings = polyglot.getBindings("R"); + Value rInput = rBindings.getMember("c") + .execute(values); + return rBindings.getMember("customMean") + .execute(rInput) + .asDouble(); + } } \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java b/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java index 53e0ab9e31..99edb8c043 100644 --- a/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java +++ b/libraries-data-2/src/main/java/com/baeldung/r/RCallerMean.java @@ -14,23 +14,24 @@ import com.github.rcaller.rstuff.RCode; */ public class RCallerMean { - /** - * Invokes the customMean R function passing the given values as arguments. - * - * @param values the input to the mean script - * @return the result of the R script - * @throws IOException if any error occurs - * @throws URISyntaxException if any error occurs - */ - public double mean(int[] values) throws IOException, URISyntaxException { - String fileContent = RUtils.getMeanScriptContent(); - RCode code = RCode.create(); - code.addRCode(fileContent); - code.addIntArray("input", values); - code.addRCode("result <- customMean(input)"); - RCaller caller = RCaller.create(code, RCallerOptions.create()); - caller.runAndReturnResult("result"); - return caller.getParser().getAsDoubleArray("result")[0]; - } + /** + * Invokes the customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + * @throws IOException if any error occurs + * @throws URISyntaxException if any error occurs + */ + public double mean(int[] values) throws IOException, URISyntaxException { + String fileContent = RUtils.getMeanScriptContent(); + RCode code = RCode.create(); + code.addRCode(fileContent); + code.addIntArray("input", values); + code.addRCode("result <- customMean(input)"); + RCaller caller = RCaller.create(code, RCallerOptions.create()); + caller.runAndReturnResult("result"); + return caller.getParser() + .getAsDoubleArray("result")[0]; + } } \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java b/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java index ad16fd5602..a9393cdcc2 100644 --- a/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java +++ b/libraries-data-2/src/main/java/com/baeldung/r/RUtils.java @@ -15,16 +15,19 @@ import java.util.stream.Collectors; */ public class RUtils { - /** - * Loads the script.R and returns its content as a string. - * - * @return the script.R content as a string - * @throws IOException if any error occurs - * @throws URISyntaxException if any error occurs - */ - static String getMeanScriptContent() throws IOException, URISyntaxException { - URI rScriptUri = RUtils.class.getClassLoader().getResource("script.R").toURI(); - Path inputScript = Paths.get(rScriptUri); - return Files.lines(inputScript).collect(Collectors.joining()); - } + /** + * Loads the script.R and returns its content as a string. + * + * @return the script.R content as a string + * @throws IOException if any error occurs + * @throws URISyntaxException if any error occurs + */ + static String getMeanScriptContent() throws IOException, URISyntaxException { + URI rScriptUri = RUtils.class.getClassLoader() + .getResource("script.R") + .toURI(); + Path inputScript = Paths.get(rScriptUri); + return Files.lines(inputScript) + .collect(Collectors.joining()); + } } \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java b/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java index befb7d522f..4576ec5fb4 100644 --- a/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java +++ b/libraries-data-2/src/main/java/com/baeldung/r/RenjinMean.java @@ -15,22 +15,22 @@ import org.renjin.sexp.DoubleArrayVector; */ public class RenjinMean { - /** - * Invokes the customMean R function passing the given values as arguments. - * - * @param values the input to the mean script - * @return the result of the R script - * @throws IOException if any error occurs - * @throws URISyntaxException if any error occurs - * @throws ScriptException if any error occurs - */ - public double mean(int[] values) throws IOException, URISyntaxException, ScriptException { - RenjinScriptEngine engine = new RenjinScriptEngine(); - String meanScriptContent = RUtils.getMeanScriptContent(); - engine.put("input", values); - engine.eval(meanScriptContent); - DoubleArrayVector result = (DoubleArrayVector) engine.eval("customMean(input)"); - return result.asReal(); - } + /** + * Invokes the customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + * @throws IOException if any error occurs + * @throws URISyntaxException if any error occurs + * @throws ScriptException if any error occurs + */ + public double mean(int[] values) throws IOException, URISyntaxException, ScriptException { + RenjinScriptEngine engine = new RenjinScriptEngine(); + String meanScriptContent = RUtils.getMeanScriptContent(); + engine.put("input", values); + engine.eval(meanScriptContent); + DoubleArrayVector result = (DoubleArrayVector) engine.eval("customMean(input)"); + return result.asReal(); + } } \ No newline at end of file diff --git a/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java b/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java index 51aaa90648..1aaa7fa847 100644 --- a/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java +++ b/libraries-data-2/src/main/java/com/baeldung/r/RserveMean.java @@ -11,19 +11,20 @@ import org.rosuda.REngine.Rserve.RConnection; */ public class RserveMean { - /** - * Connects to the Rserve istance listening on 127.0.0.1:6311 and invokes the - * customMean R function passing the given values as arguments. - * - * @param values the input to the mean script - * @return the result of the R script - * @throws REngineException if any error occurs - * @throws REXPMismatchException if any error occurs - */ - public double mean(int[] values) throws REngineException, REXPMismatchException { - RConnection c = new RConnection(); - c.assign("input", values); - return c.eval("customMean(input)").asDouble(); - } + /** + * Connects to the Rserve istance listening on 127.0.0.1:6311 and invokes the + * customMean R function passing the given values as arguments. + * + * @param values the input to the mean script + * @return the result of the R script + * @throws REngineException if any error occurs + * @throws REXPMismatchException if any error occurs + */ + public double mean(int[] values) throws REngineException, REXPMismatchException { + RConnection c = new RConnection(); + c.assign("input", values); + return c.eval("customMean(input)") + .asDouble(); + } } \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java index 5cf8c63a56..4e7426b75a 100644 --- a/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java +++ b/libraries-data-2/src/test/java/com/baeldung/r/FastRMeanUnitTest.java @@ -12,18 +12,18 @@ import org.junit.Test; @Ignore public class FastRMeanUnitTest { - /** - * Object to test. - */ - private FastRMean fastrMean = new FastRMean(); + /** + * Object to test. + */ + private FastRMean fastrMean = new FastRMean(); - /** - * Test for {@link FastRMeanUnitTest#mean(int[])}. - */ - @Test - public void givenValues_whenMean_thenCorrect() { - int[] input = { 1, 2, 3, 4, 5 }; - double result = fastrMean.mean(input); - Assert.assertEquals(3.0, result, 0.000001); - } + /** + * Test for {@link FastRMeanUnitTest#mean(int[])}. + */ + @Test + public void givenValues_whenMean_thenCorrect() { + int[] input = { 1, 2, 3, 4, 5 }; + double result = fastrMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } } \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java index b68f259edd..ce6b3a4332 100644 --- a/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java +++ b/libraries-data-2/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java @@ -17,21 +17,21 @@ import org.junit.Test; @Ignore public class RCallerMeanIntegrationTest { - /** - * Object to test. - */ - private RCallerMean rcallerMean = new RCallerMean(); + /** + * Object to test. + */ + private RCallerMean rcallerMean = new RCallerMean(); - /** - * Test for {@link RCallerMeanIntegrationTest#mean(int[])}. - * - * @throws ScriptException if an error occurs - * @throws URISyntaxException if an error occurs - */ - @Test - public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException { - int[] input = { 1, 2, 3, 4, 5 }; - double result = rcallerMean.mean(input); - Assert.assertEquals(3.0, result, 0.000001); - } + /** + * Test for {@link RCallerMeanIntegrationTest#mean(int[])}. + * + * @throws ScriptException if an error occurs + * @throws URISyntaxException if an error occurs + */ + @Test + public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException { + int[] input = { 1, 2, 3, 4, 5 }; + double result = rcallerMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } } \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java b/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java index e364d54632..f52d37d614 100644 --- a/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java +++ b/libraries-data-2/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java @@ -16,22 +16,22 @@ import org.junit.Assert; */ public class RenjinMeanUnitTest { - /** - * Object to test. - */ - private RenjinMean renjinMean = new RenjinMean(); + /** + * Object to test. + */ + private RenjinMean renjinMean = new RenjinMean(); - /** - * Test for {@link RenjinMeanUnitTest#mean(int[])}. - * - * @throws ScriptException if an error occurs - * @throws URISyntaxException if an error occurs - * @throws IOException if an error occurs - */ - @Test - public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException, ScriptException { - int[] input = { 1, 2, 3, 4, 5 }; - double result = renjinMean.mean(input); - Assert.assertEquals(3.0, result, 0.000001); - } + /** + * Test for {@link RenjinMeanUnitTest#mean(int[])}. + * + * @throws ScriptException if an error occurs + * @throws URISyntaxException if an error occurs + * @throws IOException if an error occurs + */ + @Test + public void givenValues_whenMean_thenCorrect() throws IOException, URISyntaxException, ScriptException { + int[] input = { 1, 2, 3, 4, 5 }; + double result = renjinMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } } \ No newline at end of file diff --git a/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java b/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java index 95b344cb02..23d42bd8e9 100644 --- a/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java +++ b/libraries-data-2/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java @@ -14,21 +14,21 @@ import org.rosuda.REngine.REngineException; @Ignore public class RserveMeanIntegrationTest { - /** - * Object to test. - */ - private RserveMean rserveMean = new RserveMean(); + /** + * Object to test. + */ + private RserveMean rserveMean = new RserveMean(); - /** - * Test for {@link RserveMeanIntegrationTest#mean(int[])}. - * - * @throws REXPMismatchException if an error occurs - * @throws REngineException if an error occurs - */ - @Test - public void givenValues_whenMean_thenCorrect() throws REngineException, REXPMismatchException { - int[] input = { 1, 2, 3, 4, 5 }; - double result = rserveMean.mean(input); - Assert.assertEquals(3.0, result, 0.000001); - } + /** + * Test for {@link RserveMeanIntegrationTest#mean(int[])}. + * + * @throws REXPMismatchException if an error occurs + * @throws REngineException if an error occurs + */ + @Test + public void givenValues_whenMean_thenCorrect() throws REngineException, REXPMismatchException { + int[] input = { 1, 2, 3, 4, 5 }; + double result = rserveMean.mean(input); + Assert.assertEquals(3.0, result, 0.000001); + } } \ No newline at end of file From 73f96969da098b873415b475f3ad1463dc4f45cd Mon Sep 17 00:00:00 2001 From: Paturi Radhe Sravan Date: Sat, 25 Apr 2020 03:06:41 +0530 Subject: [PATCH 073/157] BAEL-3567 An Introduction to Kaniko (#9150) * BAEL-3597 Cactoos * BAEL-3597 Cactoos * BAEL-3597 Cactoos * BAEL-3597 Cactoos * BAEL-3567 An Introduction to Kaniko * BAEL-3597 Cactoos * BAEL-3597 Cactoos * BAEL-3597 Cactoos * BAEL-3597 Cactoos * BAEL-3567 An Introduction to Kaniko * BAEL-3567 An Introduction to Kaniko --- kaniko/dockerfile | 2 ++ kaniko/pod.yaml | 19 +++++++++++++++++++ kaniko/volume-claim.yaml | 11 +++++++++++ kaniko/volume.yaml | 14 ++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 kaniko/dockerfile create mode 100644 kaniko/pod.yaml create mode 100644 kaniko/volume-claim.yaml create mode 100644 kaniko/volume.yaml diff --git a/kaniko/dockerfile b/kaniko/dockerfile new file mode 100644 index 0000000000..0290bf16ed --- /dev/null +++ b/kaniko/dockerfile @@ -0,0 +1,2 @@ +FROM ubuntu +ENTRYPOINT ["/bin/bash", "-c", "echo hello"] diff --git a/kaniko/pod.yaml b/kaniko/pod.yaml new file mode 100644 index 0000000000..17f9a81b6d --- /dev/null +++ b/kaniko/pod.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Pod +metadata: + name: kaniko +spec: + containers: + - name: kaniko + image: gcr.io/kaniko-project/executor:latest + args: ["--dockerfile=/workspace/dockerfile", + "--context=dir://workspace", + "--no-push"] + volumeMounts: + - name: dockerfile-storage + mountPath: /workspace + restartPolicy: Never + volumes: + - name: dockerfile-storage + persistentVolumeClaim: + claimName: dockerfile-claim diff --git a/kaniko/volume-claim.yaml b/kaniko/volume-claim.yaml new file mode 100644 index 0000000000..7a1abbf05c --- /dev/null +++ b/kaniko/volume-claim.yaml @@ -0,0 +1,11 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: dockerfile-claim +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 8Gi + storageClassName: local-storage diff --git a/kaniko/volume.yaml b/kaniko/volume.yaml new file mode 100644 index 0000000000..e44663ec5a --- /dev/null +++ b/kaniko/volume.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: dockerfile + labels: + type: local +spec: + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + storageClassName: local-storage + hostPath: + path: /home/docker/kaniko # Path to the local mount directory that was setup From d090c9b059c5e3d2752a6d7422fe344cca8b1dd5 Mon Sep 17 00:00:00 2001 From: KevinGilmore Date: Fri, 24 Apr 2020 22:28:04 -0500 Subject: [PATCH 074/157] BAEL-2893 BAEL-3927 update README files (#9171) * BAEL-3336 BAEL-3058 add links * BAEL-3319: add link * BAEL-3284: add link * BAEL-3198: add link to article * BAEL-3479: add link to article * BAEL-3485: add article link * SCALA-38: move to new package and add link back to article * SCALA-38: add imports back into unit test * BAEL-3908: add link back to article * BAEL-2893 BAEL-3927 add link back to article --- core-java-modules/core-java-string-operations-2/README.md | 1 + testing-modules/mockito-2/README.md | 1 + 2 files changed, 2 insertions(+) diff --git a/core-java-modules/core-java-string-operations-2/README.md b/core-java-modules/core-java-string-operations-2/README.md index 45b02a3e10..2f54aa9467 100644 --- a/core-java-modules/core-java-string-operations-2/README.md +++ b/core-java-modules/core-java-string-operations-2/README.md @@ -11,4 +11,5 @@ This module contains articles about string operations. - [Case-Insensitive String Matching in Java](https://www.baeldung.com/java-case-insensitive-string-matching) - [L-Trim and R-Trim Alternatives in Java](https://www.baeldung.com/java-trim-alternatives) - [Java Convert PDF to Base64](https://www.baeldung.com/java-convert-pdf-to-base64) +- [Encode a String to UTF-8 in Java](https://www.baeldung.com/java-string-encode-utf-8) - More articles: [[<-- prev]](../core-java-string-operations) diff --git a/testing-modules/mockito-2/README.md b/testing-modules/mockito-2/README.md index 064366dfd5..6c9ddee01d 100644 --- a/testing-modules/mockito-2/README.md +++ b/testing-modules/mockito-2/README.md @@ -4,3 +4,4 @@ - [Lazy Verification with Mockito 2](https://www.baeldung.com/mockito-2-lazy-verification) - [Mockito Strict Stubbing and The UnnecessaryStubbingException](https://www.baeldung.com/mockito-unnecessary-stubbing-exception) - [Mockito and Fluent APIs](https://www.baeldung.com/mockito-fluent-apis) +- [Mocking the ObjectMapper readValue() Method](https://www.baeldung.com/mockito-mock-jackson-read-value) From 89fd7872c476c05a1a362f502910f31b59c4a916 Mon Sep 17 00:00:00 2001 From: sasam0320 <63002713+sasam0320@users.noreply.github.com> Date: Sat, 25 Apr 2020 07:32:20 +0200 Subject: [PATCH 075/157] BAEL-3973 (#9061) --- gradle/gradle-employee-app/.gitignore | 3 ++ gradle/gradle-employee-app/build.gradle | 38 +++++++++++++++++++ .../src/main/java/employee/Employee.java | 9 +++++ .../src/main/java/employee/EmployeeApp.java | 16 ++++++++ .../test/java/employee/EmployeeAppTest.java | 31 +++++++++++++++ gradle/settings.gradle | 2 +- 6 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 gradle/gradle-employee-app/.gitignore create mode 100644 gradle/gradle-employee-app/build.gradle create mode 100644 gradle/gradle-employee-app/src/main/java/employee/Employee.java create mode 100644 gradle/gradle-employee-app/src/main/java/employee/EmployeeApp.java create mode 100644 gradle/gradle-employee-app/src/test/java/employee/EmployeeAppTest.java diff --git a/gradle/gradle-employee-app/.gitignore b/gradle/gradle-employee-app/.gitignore new file mode 100644 index 0000000000..d347f664af --- /dev/null +++ b/gradle/gradle-employee-app/.gitignore @@ -0,0 +1,3 @@ +/.idea +/.gradle +/build diff --git a/gradle/gradle-employee-app/build.gradle b/gradle/gradle-employee-app/build.gradle new file mode 100644 index 0000000000..19b80c0c4a --- /dev/null +++ b/gradle/gradle-employee-app/build.gradle @@ -0,0 +1,38 @@ + +plugins { + id 'java-library' + id 'application' +} + +apply plugin: 'application' +mainClassName = 'employee.EmployeeApp' + +java { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 +} + +println 'This is executed during configuration phase' + +task configured { + println 'The project is configured' +} + +task wrapper(type: Wrapper){ + gradleVersion = '5.3.1' +} + +repositories { + jcenter() +} + +dependencies { + + compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.10' + testImplementation('junit:junit:4.13') + testRuntime('junit:junit:4.13') +} +test { + useJUnit() +} + diff --git a/gradle/gradle-employee-app/src/main/java/employee/Employee.java b/gradle/gradle-employee-app/src/main/java/employee/Employee.java new file mode 100644 index 0000000000..6940c8c28c --- /dev/null +++ b/gradle/gradle-employee-app/src/main/java/employee/Employee.java @@ -0,0 +1,9 @@ +package employee; + +public class Employee { + + String name; + String emailAddress; + int yearOfBirth; + +} \ No newline at end of file diff --git a/gradle/gradle-employee-app/src/main/java/employee/EmployeeApp.java b/gradle/gradle-employee-app/src/main/java/employee/EmployeeApp.java new file mode 100644 index 0000000000..48ef9f5d61 --- /dev/null +++ b/gradle/gradle-employee-app/src/main/java/employee/EmployeeApp.java @@ -0,0 +1,16 @@ +package employee; + +public class EmployeeApp { + + public static void main(String[] args){ + + Employee employee = new Employee(); + employee.name = "John"; + employee.emailAddress = "john@baeldung.com"; + employee.yearOfBirth = 1978; + System.out.println("Name: " + employee.name); + System.out.println("Email Address: " + employee.emailAddress); + System.out.println("Year Of Birth:" + employee.yearOfBirth); + } + +} diff --git a/gradle/gradle-employee-app/src/test/java/employee/EmployeeAppTest.java b/gradle/gradle-employee-app/src/test/java/employee/EmployeeAppTest.java new file mode 100644 index 0000000000..013bcc35b6 --- /dev/null +++ b/gradle/gradle-employee-app/src/test/java/employee/EmployeeAppTest.java @@ -0,0 +1,31 @@ +package employee; + +import employee.Employee; +import org.junit.*; +import static org.junit.Assert.*; + +public class EmployeeAppTest { + + @Test + public void testData(){ + + Employee testEmp = this.getEmployeeTest(); + + assertEquals(testEmp.name, "John"); + assertEquals(testEmp.emailAddress, "john@baeldung.com"); + assertEquals(testEmp.yearOfBirth, 1978); + + + } + + private Employee getEmployeeTest(){ + + Employee employee = new Employee(); + employee.name = "John"; + employee.emailAddress = "john@baeldung.com"; + employee.yearOfBirth = 1978; + + return employee; + } + +} \ No newline at end of file diff --git a/gradle/settings.gradle b/gradle/settings.gradle index f1d64de58a..59300f9281 100644 --- a/gradle/settings.gradle +++ b/gradle/settings.gradle @@ -1,10 +1,10 @@ rootProject.name = 'gradletutorial' - include 'greeting-library' include 'greeting-library-java' include 'greeter' include 'gradletaskdemo' include 'junit5' +include 'gradle-employee-app' println 'This will be executed during the initialization phase.' From fab18f2126b26d0dbe8f0e492e4d075f5a49bd57 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Sat, 25 Apr 2020 18:12:08 +0530 Subject: [PATCH 076/157] JAVA-926: Migrate spring-boot-custom-starter to parent-boot-2 --- .../test/java/{org => com}/baeldung/SpringContextTest.java | 0 .../greeter-spring-boot-sample-app/pom.xml | 4 ++-- .../test/java/{org => com}/baeldung/SpringContextTest.java | 0 .../spring-boot-custom-starter/greeter/pom.xml | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) rename spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/{org => com}/baeldung/SpringContextTest.java (100%) rename spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/{org => com}/baeldung/SpringContextTest.java (100%) diff --git a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/org/baeldung/SpringContextTest.java b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/org/baeldung/SpringContextTest.java rename to spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml index 818ce5c107..8d328b88be 100644 --- a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml +++ b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/pom.xml @@ -8,9 +8,9 @@ com.baeldung - parent-boot-1 + parent-boot-2 0.0.1-SNAPSHOT - ../../../parent-boot-1 + ../../../parent-boot-2 diff --git a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/org/baeldung/SpringContextTest.java b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/org/baeldung/SpringContextTest.java rename to spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-sample-app/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-boot-modules/spring-boot-custom-starter/greeter/pom.xml b/spring-boot-modules/spring-boot-custom-starter/greeter/pom.xml index 89119e2e99..47296990aa 100644 --- a/spring-boot-modules/spring-boot-custom-starter/greeter/pom.xml +++ b/spring-boot-modules/spring-boot-custom-starter/greeter/pom.xml @@ -8,9 +8,9 @@ com.baeldung - parent-boot-1 + parent-boot-2 0.0.1-SNAPSHOT - ../../../parent-boot-1 + ../../../parent-boot-2 \ No newline at end of file From b7588a7a3335ade294b463b98c6775269701a885 Mon Sep 17 00:00:00 2001 From: Sampada <46674082+sampada07@users.noreply.github.com> Date: Sat, 25 Apr 2020 22:14:35 +0530 Subject: [PATCH 077/157] BAEL-3989: Calling a SOAP web service from Spring (#9174) --- spring-soap/pom.xml | 22 +++ .../springsoap/client/CountryClient.java | 26 ++++ .../client/CountryClientConfig.java | 25 +++ .../springsoap/client/gen/Country.java | 146 ++++++++++++++++++ .../springsoap/client/gen/Currency.java | 47 ++++++ .../client/gen/GetCountryRequest.java | 71 +++++++++ .../client/gen/GetCountryResponse.java | 71 +++++++++ .../springsoap/client/gen/ObjectFactory.java | 63 ++++++++ .../springsoap/client/gen/package-info.java | 9 ++ spring-soap/src/main/resources/countries.wsdl | 74 +++++++++ .../client/CountryClientLiveTest.java | 36 +++++ 11 files changed, 590 insertions(+) create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClient.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClientConfig.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java create mode 100644 spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java create mode 100644 spring-soap/src/main/resources/countries.wsdl create mode 100644 spring-soap/src/test/java/com/baeldung/springsoap/client/CountryClientLiveTest.java diff --git a/spring-soap/pom.xml b/spring-soap/pom.xml index 9403b70636..d0987329c0 100644 --- a/spring-soap/pom.xml +++ b/spring-soap/pom.xml @@ -58,6 +58,28 @@ + + + org.jvnet.jaxb2.maven2 + maven-jaxb2-plugin + 0.14.0 + + + + generate + + + + + WSDL + ${project.basedir}/src/main/java + com.baeldung.springsoap.client.gen + ${project.basedir}/src/main/resources + + countries.wsdl + + + diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClient.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClient.java new file mode 100644 index 0000000000..e0b9172ece --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClient.java @@ -0,0 +1,26 @@ +package com.baeldung.springsoap.client; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.ws.client.core.support.WebServiceGatewaySupport; + +import com.baeldung.springsoap.client.gen.GetCountryRequest; +import com.baeldung.springsoap.client.gen.GetCountryResponse; + +public class CountryClient extends WebServiceGatewaySupport { + + private static final Logger logger = LoggerFactory.getLogger(CountryClient.class); + + public GetCountryResponse getCountry(String country) { + + GetCountryRequest request = new GetCountryRequest(); + request.setName(country); + + logger.info("Requesting information for " + country); + + GetCountryResponse response = (GetCountryResponse) getWebServiceTemplate().marshalSendAndReceive(request); + + return response; + } + +} \ No newline at end of file diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClientConfig.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClientConfig.java new file mode 100644 index 0000000000..8dabdbc00d --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/CountryClientConfig.java @@ -0,0 +1,25 @@ +package com.baeldung.springsoap.client; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.oxm.jaxb.Jaxb2Marshaller; + +@Configuration +public class CountryClientConfig { + + @Bean + public Jaxb2Marshaller marshaller() { + Jaxb2Marshaller marshaller = new Jaxb2Marshaller(); + marshaller.setContextPath("com.baeldung.springsoap.client.gen"); + return marshaller; + } + + @Bean + public CountryClient countryClient(Jaxb2Marshaller marshaller) { + CountryClient client = new CountryClient(); + client.setDefaultUri("http://localhost:8080/ws"); + client.setMarshaller(marshaller); + client.setUnmarshaller(marshaller); + return client; + } +} \ No newline at end of file diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java new file mode 100644 index 0000000000..e17dce55f9 --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Country.java @@ -0,0 +1,146 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 +// See https://javaee.github.io/jaxb-v2/ +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2020.04.25 at 03:18:49 PM IST +// + + +package com.baeldung.springsoap.client.gen; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlSchemaType; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for country complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType name="country">
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="population" type="{http://www.w3.org/2001/XMLSchema}int"/>
+ *         <element name="capital" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *         <element name="currency" type="{http://www.baeldung.com/springsoap/gen}currency"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "country", propOrder = { + "name", + "population", + "capital", + "currency" +}) +public class Country { + + @XmlElement(required = true) + protected String name; + protected int population; + @XmlElement(required = true) + protected String capital; + @XmlElement(required = true) + @XmlSchemaType(name = "string") + protected Currency currency; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + + /** + * Gets the value of the population property. + * + */ + public int getPopulation() { + return population; + } + + /** + * Sets the value of the population property. + * + */ + public void setPopulation(int value) { + this.population = value; + } + + /** + * Gets the value of the capital property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getCapital() { + return capital; + } + + /** + * Sets the value of the capital property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setCapital(String value) { + this.capital = value; + } + + /** + * Gets the value of the currency property. + * + * @return + * possible object is + * {@link Currency } + * + */ + public Currency getCurrency() { + return currency; + } + + /** + * Sets the value of the currency property. + * + * @param value + * allowed object is + * {@link Currency } + * + */ + public void setCurrency(Currency value) { + this.currency = value; + } + +} diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java new file mode 100644 index 0000000000..12fdef58c2 --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/Currency.java @@ -0,0 +1,47 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 +// See https://javaee.github.io/jaxb-v2/ +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2020.04.25 at 03:18:49 PM IST +// + + +package com.baeldung.springsoap.client.gen; + +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for currency. + * + *

The following schema fragment specifies the expected content contained within this class. + *

+ *

+ * <simpleType name="currency">
+ *   <restriction base="{http://www.w3.org/2001/XMLSchema}string">
+ *     <enumeration value="GBP"/>
+ *     <enumeration value="EUR"/>
+ *     <enumeration value="PLN"/>
+ *   </restriction>
+ * </simpleType>
+ * 
+ * + */ +@XmlType(name = "currency") +@XmlEnum +public enum Currency { + + GBP, + EUR, + PLN; + + public String value() { + return name(); + } + + public static Currency fromValue(String v) { + return valueOf(v); + } + +} diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java new file mode 100644 index 0000000000..5739ee3b96 --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryRequest.java @@ -0,0 +1,71 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 +// See https://javaee.github.io/jaxb-v2/ +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2020.04.25 at 03:18:49 PM IST +// + + +package com.baeldung.springsoap.client.gen; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for anonymous complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType>
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="name" type="{http://www.w3.org/2001/XMLSchema}string"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "name" +}) +@XmlRootElement(name = "getCountryRequest") +public class GetCountryRequest { + + @XmlElement(required = true) + protected String name; + + /** + * Gets the value of the name property. + * + * @return + * possible object is + * {@link String } + * + */ + public String getName() { + return name; + } + + /** + * Sets the value of the name property. + * + * @param value + * allowed object is + * {@link String } + * + */ + public void setName(String value) { + this.name = value; + } + +} diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java new file mode 100644 index 0000000000..ba1ab56cf8 --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/GetCountryResponse.java @@ -0,0 +1,71 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 +// See https://javaee.github.io/jaxb-v2/ +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2020.04.25 at 03:18:49 PM IST +// + + +package com.baeldung.springsoap.client.gen; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + + +/** + *

Java class for anonymous complex type. + * + *

The following schema fragment specifies the expected content contained within this class. + * + *

+ * <complexType>
+ *   <complexContent>
+ *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
+ *       <sequence>
+ *         <element name="country" type="{http://www.baeldung.com/springsoap/gen}country"/>
+ *       </sequence>
+ *     </restriction>
+ *   </complexContent>
+ * </complexType>
+ * 
+ * + * + */ +@XmlAccessorType(XmlAccessType.FIELD) +@XmlType(name = "", propOrder = { + "country" +}) +@XmlRootElement(name = "getCountryResponse") +public class GetCountryResponse { + + @XmlElement(required = true) + protected Country country; + + /** + * Gets the value of the country property. + * + * @return + * possible object is + * {@link Country } + * + */ + public Country getCountry() { + return country; + } + + /** + * Sets the value of the country property. + * + * @param value + * allowed object is + * {@link Country } + * + */ + public void setCountry(Country value) { + this.country = value; + } + +} diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java new file mode 100644 index 0000000000..88b27245be --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/ObjectFactory.java @@ -0,0 +1,63 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 +// See https://javaee.github.io/jaxb-v2/ +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2020.04.25 at 03:18:49 PM IST +// + + +package com.baeldung.springsoap.client.gen; + +import javax.xml.bind.annotation.XmlRegistry; + + +/** + * This object contains factory methods for each + * Java content interface and Java element interface + * generated in the com.baeldung.springsoap.client.gen package. + *

An ObjectFactory allows you to programatically + * construct new instances of the Java representation + * for XML content. The Java representation of XML + * content can consist of schema derived interfaces + * and classes representing the binding of schema + * type definitions, element declarations and model + * groups. Factory methods for each of these are + * provided in this class. + * + */ +@XmlRegistry +public class ObjectFactory { + + + /** + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.baeldung.springsoap.client.gen + * + */ + public ObjectFactory() { + } + + /** + * Create an instance of {@link GetCountryRequest } + * + */ + public GetCountryRequest createGetCountryRequest() { + return new GetCountryRequest(); + } + + /** + * Create an instance of {@link GetCountryResponse } + * + */ + public GetCountryResponse createGetCountryResponse() { + return new GetCountryResponse(); + } + + /** + * Create an instance of {@link Country } + * + */ + public Country createCountry() { + return new Country(); + } + +} diff --git a/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java new file mode 100644 index 0000000000..eefed169a8 --- /dev/null +++ b/spring-soap/src/main/java/com/baeldung/springsoap/client/gen/package-info.java @@ -0,0 +1,9 @@ +// +// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.3.0 +// See https://javaee.github.io/jaxb-v2/ +// Any modifications to this file will be lost upon recompilation of the source schema. +// Generated on: 2020.04.25 at 03:18:49 PM IST +// + +@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.baeldung.com/springsoap/gen", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) +package com.baeldung.springsoap.client.gen; diff --git a/spring-soap/src/main/resources/countries.wsdl b/spring-soap/src/main/resources/countries.wsdl new file mode 100644 index 0000000000..2a2eaf05bb --- /dev/null +++ b/spring-soap/src/main/resources/countries.wsdl @@ -0,0 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/spring-soap/src/test/java/com/baeldung/springsoap/client/CountryClientLiveTest.java b/spring-soap/src/test/java/com/baeldung/springsoap/client/CountryClientLiveTest.java new file mode 100644 index 0000000000..63dbe2a5cf --- /dev/null +++ b/spring-soap/src/test/java/com/baeldung/springsoap/client/CountryClientLiveTest.java @@ -0,0 +1,36 @@ +package com.baeldung.springsoap.client; + +import static org.junit.Assert.assertEquals; + +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.springsoap.client.gen.Currency; +import com.baeldung.springsoap.client.gen.GetCountryResponse; + +//Ensure that the server - com.baeldung.springsoap.Application - is running before executing this test +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = CountryClientConfig.class, loader = AnnotationConfigContextLoader.class) +public class CountryClientLiveTest { + + @Autowired + CountryClient client; + + @Test + public void givenCountryService_whenCountryPoland_thenCapitalIsWarsaw() { + GetCountryResponse response = client.getCountry("Poland"); + assertEquals("Warsaw", response.getCountry() + .getCapital()); + } + + @Test + public void givenCountryService_whenCountrySpain_thenCurrencyEUR() { + GetCountryResponse response = client.getCountry("Spain"); + assertEquals(Currency.EUR, response.getCountry() + .getCurrency()); + } +} From bd9c4945f7c1e96a64c944414f23b055f8e49482 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Sat, 25 Apr 2020 11:37:01 -0600 Subject: [PATCH 078/157] BAEL-3972: Fix formatting --- .../com/baeldung/app/controller/TaskController.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java index 95f855c1e5..67072b5d61 100644 --- a/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java +++ b/spring-security-modules/spring-security-core/src/main/java/com/baeldung/app/controller/TaskController.java @@ -48,8 +48,7 @@ public class TaskController { */ @GetMapping("/manager") @PreAuthorize("hasRole('ROLE_MANAGER')") - public ResponseEntity> getAlManagerTasks() - { + public ResponseEntity> getAlManagerTasks() { Iterable tasks = taskService.findAll(); return ResponseEntity.ok().body(tasks); @@ -59,8 +58,7 @@ public class TaskController { * Example of restricting specific endpoints to specific roles using SecurityContext. */ @GetMapping("/actuator") - public ResponseEntity> getAlActuatorTasks() - { + public ResponseEntity> getAlActuatorTasks() { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth != null && auth.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ACTUATOR"))) { @@ -76,8 +74,7 @@ public class TaskController { * Example of restricting specific endpoints to specific roles using UserDetailsService. */ @GetMapping("/admin") - public ResponseEntity> getAlAdminTasks() - { + public ResponseEntity> getAlAdminTasks() { if(userDetailsService != null) { UserDetails details = userDetailsService.loadUserByUsername("pam"); if (details != null && details.getAuthorities().stream().anyMatch(a -> a.getAuthority().equals("ADMIN"))) { @@ -94,8 +91,7 @@ public class TaskController { * Example of restricting specific endpoints to specific roles using HttpServletRequest. */ @GetMapping("/admin2") - public ResponseEntity> getAlAdminTasksUsingServlet(HttpServletRequest request) - { + public ResponseEntity> getAlAdminTasksUsingServlet(HttpServletRequest request) { if (!request.isUserInRole("ROLE_ADMIN")) { return ResponseEntity.status(HttpStatus.FORBIDDEN).build(); } From b6996fbc05d4102b2da9f78796821fa78b5288e5 Mon Sep 17 00:00:00 2001 From: Ali Dehghani Date: Sat, 25 Apr 2020 22:55:00 +0430 Subject: [PATCH 079/157] Added Trailing slash to Fix the Relative Path Bug --- .../java/com/baeldung/favicon/config/FaviconConfiguration.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/favicon/config/FaviconConfiguration.java b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/favicon/config/FaviconConfiguration.java index d1809199d6..f2a173caf3 100644 --- a/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/favicon/config/FaviconConfiguration.java +++ b/spring-boot-modules/spring-boot-basic-customization/src/main/java/com/baeldung/favicon/config/FaviconConfiguration.java @@ -28,7 +28,7 @@ public class FaviconConfiguration { @Bean protected ResourceHttpRequestHandler faviconRequestHandler() { ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler(); - ClassPathResource classPathResource = new ClassPathResource("com/baeldung/images"); + ClassPathResource classPathResource = new ClassPathResource("com/baeldung/images/"); List locations = Arrays.asList(classPathResource); requestHandler.setLocations(locations); return requestHandler; From a5264182cd0faed8a9cae5368ea84d1372ad3be2 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Sat, 25 Apr 2020 21:57:43 +0200 Subject: [PATCH 080/157] Refactoring code in com.baeldung.modelmapper package --- .../com/baeldung/modelmapper/MapperUtil.java | 16 ++-------------- .../main/java/com/baeldung/modelmapper/User.java | 14 +++++++------- .../java/com/baeldung/modelmapper/UserDTO.java | 10 +++++----- .../baeldung/modelmapper/UserPropertyMap.java | 7 ++++--- .../modelmapper/UsersListMappingUnitTest.java | 12 ++++++------ 5 files changed, 24 insertions(+), 35 deletions(-) diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java index 546e415755..60af44cc76 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java @@ -1,39 +1,27 @@ package com.baeldung.modelmapper; import org.modelmapper.ModelMapper; -import org.modelmapper.convention.MatchingStrategies; import java.util.ArrayList; import java.util.List; /** * This is a helper class that contains methods for generic mapping of the users list. - * Initially, an instance of ModelMapper was created. In the static block we set the matching configuration to STRICT. + * Initially, an instance of ModelMapper was created. * * @author Sasa Milenkovic */ public class MapperUtil { - private static ModelMapper modelMapper = new ModelMapper(); - static { - - modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); - - } - private MapperUtil() { } - public static T mapTo(final S source, final Class target) { - return modelMapper.map(source, target); - } - - public static List mapList(final List sourceList, final Class target) { + public static List mapList(List sourceList, Class target) { List targetList = new ArrayList(); for (S source : sourceList) { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java index 23a424dedd..8ed674d86a 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/User.java @@ -8,7 +8,7 @@ package com.baeldung.modelmapper; public class User { private String userId; - private String userName; + private String username; private String email; private String contactNumber; private String userType; @@ -18,9 +18,9 @@ public class User { public User() { } - public User(String userId, String userName, String email, String contactNumber, String userType) { + public User(String userId, String username, String email, String contactNumber, String userType) { this.userId = userId; - this.userName = userName; + this.username = username; this.email = email; this.contactNumber = contactNumber; this.userType = userType; @@ -34,12 +34,12 @@ public class User { this.userId = userId; } - public String getUserName() { - return userName; + public String getUsername() { + return username; } - public void setUserName(String userName) { - this.userName = userName; + public void setUsername(String userName) { + this.username = userName; } public String getEmail() { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java index e31414b629..b67bb58ef4 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserDTO.java @@ -8,7 +8,7 @@ package com.baeldung.modelmapper; public class UserDTO { private String userId; - private String userName; + private String username; private String email; // getters and setters @@ -21,12 +21,12 @@ public class UserDTO { this.userId = userId; } - public String getUserName() { - return userName; + public String getUsername() { + return username; } - public void setUserName(String userName) { - this.userName = userName; + public void setUsername(String username) { + this.username = username; } public String getEmail() { diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index d2c32a307d..0d2ebf7b4c 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -18,14 +18,15 @@ public class UserPropertyMap extends PropertyMap { Converter, List> converter = new AbstractConverter, List>() { - List usernames = new ArrayList<>(); + protected List usernames; + @Override protected List convert(List users) { - users.forEach(user -> usernames.add(user.getUserName())); + usernames = new ArrayList(); + users.forEach(user -> usernames.add(user.getUsername())); return usernames; } - }; @Override diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java index 05792fda38..aaeb8711a8 100644 --- a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java @@ -25,14 +25,14 @@ import static org.junit.Assert.assertThat; */ public class UsersListMappingUnitTest { - private ModelMapper mapper; + private ModelMapper modelMapper; private List users; @Before public void init() { - mapper = new ModelMapper(); - mapper.addMappings(new UserPropertyMap()); + modelMapper = new ModelMapper(); + modelMapper.addMappings(new UserPropertyMap()); users = new ArrayList(); users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); @@ -49,7 +49,7 @@ public class UsersListMappingUnitTest { integers.add(2); integers.add(3); - List characters = mapper.map(integers, new TypeToken>() { + List characters = modelMapper.map(integers, new TypeToken>() { }.getType()); assertThat(characters, hasItems('1', '2', '3')); @@ -66,14 +66,14 @@ public class UsersListMappingUnitTest { assertThat(userDtoList, Matchers.hasItem( Matchers.both(hasProperty("userId", equalTo("b100"))) .and(hasProperty("email", equalTo("user1@baeldung.com"))) - .and(hasProperty("userName", equalTo("user1"))))); + .and(hasProperty("username", equalTo("user1"))))); // Mapping lists using PropertyMap and Converter UserList userList = new UserList(); userList.setUsers(users); UserListDTO dto = new UserListDTO(); - mapper.map(userList, dto); + modelMapper.map(userList, dto); assertNotNull(dto); assertThat(dto, Matchers.hasProperty("usernames")); From fd5fcf29c55e234cb26262edf42b2c55ea55e7ef Mon Sep 17 00:00:00 2001 From: Justin Albano Date: Sat, 25 Apr 2020 16:05:50 -0400 Subject: [PATCH 081/157] BAEL-3965: Removed unneeded dependencies --- spring-core-4/pom.xml | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/spring-core-4/pom.xml b/spring-core-4/pom.xml index 06598fb41e..53f7ca6912 100644 --- a/spring-core-4/pom.xml +++ b/spring-core-4/pom.xml @@ -14,26 +14,6 @@ - - org.springframework - spring-beans - ${spring.version} - - - org.springframework - spring-tx - ${spring.version} - - - org.springframework - spring-jdbc - ${spring.version} - - - org.springframework.boot - spring-boot-starter-web - ${spring.boot.version} - org.springframework spring-context @@ -44,11 +24,6 @@ spring-core ${spring.version} - - javax.annotation - javax.annotation-api - ${annotation-api.version} - org.springframework spring-test From ee898632d354bfeb972ba3a01217910834517535 Mon Sep 17 00:00:00 2001 From: Aaron Juarez Date: Sat, 25 Apr 2020 16:23:13 -0400 Subject: [PATCH 082/157] BAEL-3966: find object's class in Java (#9118) --- .../com/baeldung/objectclass/Borrower.java | 23 ++++++ .../java/com/baeldung/objectclass/Lender.java | 20 +++++ .../java/com/baeldung/objectclass/User.java | 12 +++ .../objectclass/CreditAppUnitTest.java | 74 +++++++++++++++++++ 4 files changed, 129 insertions(+) create mode 100644 core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Borrower.java create mode 100644 core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Lender.java create mode 100644 core-java-modules/core-java/src/main/java/com/baeldung/objectclass/User.java create mode 100644 core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Borrower.java b/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Borrower.java new file mode 100644 index 0000000000..62062aa7fc --- /dev/null +++ b/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Borrower.java @@ -0,0 +1,23 @@ +package com.baeldung.objectclass; + +import lombok.Data; + +@Data +public class Borrower extends User { + + private double totalLoanAmount; + + public double requestLoan(double amount) { + totalLoanAmount = amount; + return totalLoanAmount; + } + + public double increaseLoan(double increaseBy) { + return totalLoanAmount + increaseBy; + } + + public double payLoan(double amount) { + return totalLoanAmount - amount; + } + +} diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Lender.java b/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Lender.java new file mode 100644 index 0000000000..b45272cbb1 --- /dev/null +++ b/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Lender.java @@ -0,0 +1,20 @@ +package com.baeldung.objectclass; + +public class Lender extends User { + + private double totalInvestmentAmount; + + public double invest(double amount) { + totalInvestmentAmount = amount; + return totalInvestmentAmount; + } + + public double increaseInvestment(double increaseBy) { + return totalInvestmentAmount + increaseBy; + } + + public double collectDividends() { + return totalInvestmentAmount * 0.07; + } + +} diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/User.java b/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/User.java new file mode 100644 index 0000000000..b1f3887f2f --- /dev/null +++ b/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/User.java @@ -0,0 +1,12 @@ +package com.baeldung.objectclass; + +import lombok.Data; + +@Data +public class User { + + private String firstName; + private String lastName; + + +} diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java new file mode 100644 index 0000000000..8330ddbac5 --- /dev/null +++ b/core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java @@ -0,0 +1,74 @@ +package com.baeldung.objectclass; + +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.Test; + +public class CreditAppUnitTest { + + @Test + public void givenLender_whenInstanceOf_thenReturnTrue() { + User lender = new Lender(); + assertTrue(lender instanceof Lender); + assertTrue(lender instanceof User); + } + + @Test + public void givenUser_whenInstanceOfLender_thenDowncast() { + User user = new Lender(); + Lender lender = null; + + if(user instanceof Lender) { + lender = (Lender) user; + } + + assertNotNull(lender); + } + + @Test + public void givenUser_whenIsInstanceOfLender_thenDowncast() { + User user = new Lender(); + Lender lender = null; + + if(Lender.class.isInstance(user)) { + lender = (Lender) user; + } + + assertNotNull(lender); + } + + @Test + public void givenBorrower_whenLoanAmountIsDouble_thenRequestLoan() { + Borrower borrower = new Borrower(); + double amount = 100.0; + + //if(amount instanceof Double) // Compilation error, no autoboxing + if(Double.class.isInstance(amount)) { + borrower.requestLoan(amount); + } + assertEquals(100, borrower.getTotalLoanAmount()); + } + + @Test + public void givenBorrower_whenLoanAmountIsNotString_thenRequestLoan() { + Borrower borrower = new Borrower(); + Double amount = 100.0; + + //if(amount instanceof String) // Compilation error, incompatible operands + if(!String.class.isInstance(amount)) { + borrower.requestLoan(amount); + } + assertEquals(100, borrower.getTotalLoanAmount()); + } + + @Test + public void givenLender_whenGetClass_thenEqualsLenderType() { + User lender = new Lender(); + assertEquals(Lender.class, lender.getClass()); + assertNotEquals(User.class, lender.getClass()); + } + +} From 0223584fee0d7d6661696a194e63032d6a37acd8 Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 26 Apr 2020 06:41:14 +0530 Subject: [PATCH 083/157] removed duplicate module --- maven-java-11/README.md | 6 -- .../daomodule/pom.xml | 17 ----- .../src/main/java/com/baeldung/dao/Dao.java | 12 ---- .../daomodule/src/main/java/module-info.java | 3 - .../entitiymodule/pom.xml | 22 ------- .../main/java/com/baeldung/entity/User.java | 19 ------ .../src/main/java/module-info.java | 3 - .../mainppmodule/pom.xml | 38 ----------- .../com/baeldung/mainapp/Application.java | 19 ------ .../src/main/java/module-info.java | 6 -- .../multimodule-maven-project/pom.xml | 66 ------------------- .../userdaomodule/pom.xml | 42 ------------ .../java/com/baeldung/userdao/UserDao.java | 32 --------- .../src/main/java/module-info.java | 6 -- .../userdao/test/UserDaoUnitTest.java | 36 ---------- maven-java-11/pom.xml | 27 -------- 16 files changed, 354 deletions(-) delete mode 100644 maven-java-11/README.md delete mode 100644 maven-java-11/multimodule-maven-project/daomodule/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java delete mode 100644 maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java delete mode 100644 maven-java-11/multimodule-maven-project/entitiymodule/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java delete mode 100644 maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java delete mode 100644 maven-java-11/multimodule-maven-project/mainppmodule/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java delete mode 100644 maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java delete mode 100644 maven-java-11/multimodule-maven-project/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/userdaomodule/pom.xml delete mode 100644 maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java delete mode 100644 maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java delete mode 100644 maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java delete mode 100644 maven-java-11/pom.xml diff --git a/maven-java-11/README.md b/maven-java-11/README.md deleted file mode 100644 index b923518825..0000000000 --- a/maven-java-11/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Maven and Java 11 - -This module contains articles about Maven with Java 11+. - -### Relevant Articles: - diff --git a/maven-java-11/multimodule-maven-project/daomodule/pom.xml b/maven-java-11/multimodule-maven-project/daomodule/pom.xml deleted file mode 100644 index cbe0b4cb95..0000000000 --- a/maven-java-11/multimodule-maven-project/daomodule/pom.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - 4.0.0 - com.baeldung.daomodule - daomodule - 1.0 - daomodule - jar - - - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - - - diff --git a/maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java b/maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java deleted file mode 100644 index f86ae8abb3..0000000000 --- a/maven-java-11/multimodule-maven-project/daomodule/src/main/java/com/baeldung/dao/Dao.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.dao; - -import java.util.List; -import java.util.Optional; - -public interface Dao { - - Optional findById(int id); - - List findAll(); - -} diff --git a/maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java deleted file mode 100644 index 072d7ad007..0000000000 --- a/maven-java-11/multimodule-maven-project/daomodule/src/main/java/module-info.java +++ /dev/null @@ -1,3 +0,0 @@ -module com.baeldung.dao { - exports com.baeldung.dao; -} diff --git a/maven-java-11/multimodule-maven-project/entitiymodule/pom.xml b/maven-java-11/multimodule-maven-project/entitiymodule/pom.xml deleted file mode 100644 index 228619ed74..0000000000 --- a/maven-java-11/multimodule-maven-project/entitiymodule/pom.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - 4.0.0 - com.baeldung.entitymodule - entitymodule - 1.0 - entitymodule - jar - - - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - - - - 11 - 11 - - - diff --git a/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java b/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java deleted file mode 100644 index 22022a2e6d..0000000000 --- a/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/com/baeldung/entity/User.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.entity; - -public class User { - - private final String name; - - public User(String name) { - this.name = name; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return "User{" + "name=" + name + '}'; - } -} diff --git a/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java deleted file mode 100644 index 67a3097352..0000000000 --- a/maven-java-11/multimodule-maven-project/entitiymodule/src/main/java/module-info.java +++ /dev/null @@ -1,3 +0,0 @@ -module com.baeldung.entity { - exports com.baeldung.entity; -} diff --git a/maven-java-11/multimodule-maven-project/mainppmodule/pom.xml b/maven-java-11/multimodule-maven-project/mainppmodule/pom.xml deleted file mode 100644 index a4a6575906..0000000000 --- a/maven-java-11/multimodule-maven-project/mainppmodule/pom.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - 4.0.0 - com.baeldung.mainappmodule - mainappmodule - 1.0 - mainappmodule - jar - - - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - 1.0 - 1.0 - 1.0 - - - - - com.baeldung.entitymodule - entitymodule - ${entitymodule.version} - - - com.baeldung.daomodule - daomodule - ${daomodule.version} - - - com.baeldung.userdaomodule - userdaomodule - ${userdaomodule.version} - - - - diff --git a/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java b/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java deleted file mode 100644 index 0c0df7461b..0000000000 --- a/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/com/baeldung/mainapp/Application.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.baeldung.mainapp; - -import com.baeldung.dao.Dao; -import com.baeldung.entity.User; -import com.baeldung.userdao.UserDao; -import java.util.HashMap; -import java.util.Map; - -public class Application { - - public static void main(String[] args) { - Map users = new HashMap<>(); - users.put(1, new User("Julie")); - users.put(2, new User("David")); - Dao userDao = new UserDao(users); - userDao.findAll().forEach(System.out::println); - } - -} diff --git a/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java deleted file mode 100644 index c688fcf7de..0000000000 --- a/maven-java-11/multimodule-maven-project/mainppmodule/src/main/java/module-info.java +++ /dev/null @@ -1,6 +0,0 @@ -module com.baeldung.mainapp { - requires com.baeldung.entity; - requires com.baeldung.userdao; - requires com.baeldung.dao; - uses com.baeldung.dao.Dao; -} diff --git a/maven-java-11/multimodule-maven-project/pom.xml b/maven-java-11/multimodule-maven-project/pom.xml deleted file mode 100644 index 65f5b7a814..0000000000 --- a/maven-java-11/multimodule-maven-project/pom.xml +++ /dev/null @@ -1,66 +0,0 @@ - - - 4.0.0 - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - multimodule-maven-project - pom - - - com.baeldung.maven-java-11 - maven-java-11 - 1.0 - - - - entitymodule - daomodule - userdaomodule - mainappmodule - - - - - - junit - junit - ${junit.version} - test - - - org.assertj - assertj-core - ${assertj.version} - test - - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${compiler.plugin.version} - - ${source.version} - ${target.version} - - - - - - - - UTF-8 - 4.12 - 3.12.2 - 3.8.0 - 11 - 11 - - - diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/pom.xml b/maven-java-11/multimodule-maven-project/userdaomodule/pom.xml deleted file mode 100644 index cf6ea85cb5..0000000000 --- a/maven-java-11/multimodule-maven-project/userdaomodule/pom.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - 4.0.0 - com.baeldung.userdaomodule - userdaomodule - 1.0 - userdaomodule - jar - - - com.baeldung.multimodule-maven-project - multimodule-maven-project - 1.0 - - - - - com.baeldung.entitymodule - entitymodule - ${entitymodule.version}1.0 - - - com.baeldung.daomodule - daomodule - ${daomodule.version} - - - junit - junit - test - - - - - 1.0 - 1.0 - - - diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java b/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java deleted file mode 100644 index 1f1ea38a60..0000000000 --- a/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/com/baeldung/userdao/UserDao.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.userdao; - -import com.baeldung.dao.Dao; -import com.baeldung.entity.User; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; - -public class UserDao implements Dao { - - private final Map users; - - public UserDao() { - users = new HashMap<>(); - } - - public UserDao(Map users) { - this.users = users; - } - - @Override - public List findAll() { - return new ArrayList<>(users.values()); - } - - @Override - public Optional findById(int id) { - return Optional.ofNullable(users.get(id)); - } -} \ No newline at end of file diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java b/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java deleted file mode 100644 index f1cb217e23..0000000000 --- a/maven-java-11/multimodule-maven-project/userdaomodule/src/main/java/module-info.java +++ /dev/null @@ -1,6 +0,0 @@ -module com.baeldung.userdao { - requires com.baeldung.entity; - requires com.baeldung.dao; - provides com.baeldung.dao.Dao with com.baeldung.userdao.UserDao; - exports com.baeldung.userdao; -} diff --git a/maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java b/maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java deleted file mode 100644 index 191d17ff32..0000000000 --- a/maven-java-11/multimodule-maven-project/userdaomodule/src/test/java/com/baeldung/userdao/test/UserDaoUnitTest.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.userdao.test; - -import com.baeldung.dao.Dao; -import com.baeldung.entity.User; -import com.baeldung.userdao.UserDao; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import static org.junit.Assert.*; -import static org.hamcrest.CoreMatchers.*; -import org.junit.Before; -import org.junit.Test; - -public class UserDaoUnitTest { - - private Dao userDao; - - @Before - public void setUpUserDaoInstance() { - Map users = new HashMap<>(); - users.put(1, new User("Julie")); - users.put(2, new User("David")); - userDao = new UserDao(users); - } - - @Test - public void givenUserDaoIntance_whenCalledFindById_thenCorrect() { - assertThat(userDao.findById(1), isA(Optional.class)); - } - - @Test - public void givenUserDaoIntance_whenCalledFindAll_thenCorrect() { - assertThat(userDao.findAll(), isA(List.class)); - } -} diff --git a/maven-java-11/pom.xml b/maven-java-11/pom.xml deleted file mode 100644 index 10e80365c8..0000000000 --- a/maven-java-11/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - 4.0.0 - com.baeldung.maven-java-11 - maven-java-11 - 1.0 - maven-java-11 - pom - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - multimodule-maven-project - - - - UTF-8 - 11 - 11 - - - From b8d41e5613457b185324cc39630816d83ac1cf4f Mon Sep 17 00:00:00 2001 From: Vikas Rajput Date: Sun, 26 Apr 2020 11:51:21 +0530 Subject: [PATCH 084/157] Bael 3557 : renamed package name to more unique name - springwithgroovy (#9172) * BAEL-3557: Completed a simple web application in spring boot and groovy * BAEL-3557: renamed packagename from com.baeldung.app to more unique name - com.baeldung.springwithgroovy Co-authored-by: Vikas Ramsingh Rajput --- .../SpringBootGroovyApplication.groovy | 13 +++ .../controller/TodoController.groovy | 48 +++++++++ .../springwithgroovy/entity/Todo.groovy | 23 +++++ .../repository/TodoRepository.groovy | 9 ++ .../service/TodoService.groovy | 16 +++ .../service/impl/TodoServiceImpl.groovy | 40 ++++++++ .../springwithgroovy/TodoAppUnitTest.groovy | 97 +++++++++++++++++++ 7 files changed, 246 insertions(+) create mode 100644 spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/SpringBootGroovyApplication.groovy create mode 100644 spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/controller/TodoController.groovy create mode 100644 spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/entity/Todo.groovy create mode 100644 spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/repository/TodoRepository.groovy create mode 100644 spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/TodoService.groovy create mode 100644 spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/impl/TodoServiceImpl.groovy create mode 100644 spring-boot-groovy/src/test/groovy/com/baeldung/springwithgroovy/TodoAppUnitTest.groovy diff --git a/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/SpringBootGroovyApplication.groovy b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/SpringBootGroovyApplication.groovy new file mode 100644 index 0000000000..4912b75a66 --- /dev/null +++ b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/SpringBootGroovyApplication.groovy @@ -0,0 +1,13 @@ +package com.baeldung.springwithgroovy + +import org.springframework.boot.SpringApplication +import org.springframework.boot.autoconfigure.SpringBootApplication + +import com.baeldung.springwithgroovy.SpringBootGroovyApplication + +@SpringBootApplication +class SpringBootGroovyApplication { + static void main(String[] args) { + SpringApplication.run SpringBootGroovyApplication, args + } +} diff --git a/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/controller/TodoController.groovy b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/controller/TodoController.groovy new file mode 100644 index 0000000000..9c6aee20d3 --- /dev/null +++ b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/controller/TodoController.groovy @@ -0,0 +1,48 @@ +package com.baeldung.springwithgroovy.controller + +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.web.bind.annotation.DeleteMapping +import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PathVariable +import org.springframework.web.bind.annotation.PostMapping +import org.springframework.web.bind.annotation.PutMapping +import org.springframework.web.bind.annotation.RequestBody +import org.springframework.web.bind.annotation.RequestMapping +import org.springframework.web.bind.annotation.RequestMethod +import org.springframework.web.bind.annotation.RestController + +import com.baeldung.springwithgroovy.entity.Todo +import com.baeldung.springwithgroovy.service.TodoService + +@RestController +@RequestMapping('todo') +public class TodoController { + + @Autowired + TodoService todoService + + @GetMapping + List getAllTodoList(){ + todoService.findAll() + } + + @PostMapping + Todo saveTodo(@RequestBody Todo todo){ + todoService.saveTodo todo + } + + @PutMapping + Todo updateTodo(@RequestBody Todo todo){ + todoService.updateTodo todo + } + + @DeleteMapping('/{todoId}') + deleteTodo(@PathVariable Integer todoId){ + todoService.deleteTodo todoId + } + + @GetMapping('/{todoId}') + Todo getTodoById(@PathVariable Integer todoId){ + todoService.findById todoId + } +} \ No newline at end of file diff --git a/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/entity/Todo.groovy b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/entity/Todo.groovy new file mode 100644 index 0000000000..000d981701 --- /dev/null +++ b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/entity/Todo.groovy @@ -0,0 +1,23 @@ +package com.baeldung.springwithgroovy.entity + +import javax.persistence.Column +import javax.persistence.Entity +import javax.persistence.GeneratedValue +import javax.persistence.GenerationType +import javax.persistence.Id +import javax.persistence.Table + +@Entity +@Table(name = 'todo') +class Todo { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + Integer id + + @Column + String task + + @Column + Boolean isCompleted + +} diff --git a/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/repository/TodoRepository.groovy b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/repository/TodoRepository.groovy new file mode 100644 index 0000000000..eb58cc0791 --- /dev/null +++ b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/repository/TodoRepository.groovy @@ -0,0 +1,9 @@ +package com.baeldung.springwithgroovy.repository + +import org.springframework.data.jpa.repository.JpaRepository +import org.springframework.stereotype.Repository + +import com.baeldung.springwithgroovy.entity.Todo + +@Repository +interface TodoRepository extends JpaRepository {} \ No newline at end of file diff --git a/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/TodoService.groovy b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/TodoService.groovy new file mode 100644 index 0000000000..c57af34cde --- /dev/null +++ b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/TodoService.groovy @@ -0,0 +1,16 @@ +package com.baeldung.springwithgroovy.service + +import com.baeldung.springwithgroovy.entity.Todo + +interface TodoService { + + List findAll() + + Todo findById(Integer todoId) + + Todo saveTodo(Todo todo) + + Todo updateTodo(Todo todo) + + Todo deleteTodo(Integer todoId) +} diff --git a/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/impl/TodoServiceImpl.groovy b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/impl/TodoServiceImpl.groovy new file mode 100644 index 0000000000..943c1c6944 --- /dev/null +++ b/spring-boot-groovy/src/main/groovy/com/baeldung/springwithgroovy/service/impl/TodoServiceImpl.groovy @@ -0,0 +1,40 @@ +package com.baeldung.springwithgroovy.service.impl + +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.stereotype.Service + +import com.baeldung.springwithgroovy.entity.Todo +import com.baeldung.springwithgroovy.repository.TodoRepository +import com.baeldung.springwithgroovy.service.TodoService + +@Service +class TodoServiceImpl implements TodoService { + + @Autowired + TodoRepository todoRepository + + @Override + List findAll() { + todoRepository.findAll() + } + + @Override + Todo findById(Integer todoId) { + todoRepository.findById todoId get() + } + + @Override + Todo saveTodo(Todo todo){ + todoRepository.save todo + } + + @Override + Todo updateTodo(Todo todo){ + todoRepository.save todo + } + + @Override + Todo deleteTodo(Integer todoId){ + todoRepository.deleteById todoId + } +} diff --git a/spring-boot-groovy/src/test/groovy/com/baeldung/springwithgroovy/TodoAppUnitTest.groovy b/spring-boot-groovy/src/test/groovy/com/baeldung/springwithgroovy/TodoAppUnitTest.groovy new file mode 100644 index 0000000000..bf8b0ff27f --- /dev/null +++ b/spring-boot-groovy/src/test/groovy/com/baeldung/springwithgroovy/TodoAppUnitTest.groovy @@ -0,0 +1,97 @@ +package com.baeldung.springwithgroovy + +import static org.junit.jupiter.api.Assertions.assertEquals +import static org.junit.jupiter.api.Assertions.assertTrue + +import org.junit.BeforeClass +import org.junit.Test +import org.junit.runner.RunWith +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.test.context.event.annotation.BeforeTestClass +import org.springframework.test.context.junit4.SpringRunner + +import com.baeldung.springwithgroovy.entity.Todo + +import io.restassured.RestAssured +import io.restassured.response.Response + +class TodoAppUnitTest { + static API_ROOT = 'http://localhost:8081/todo' + static readingTodoId + static writingTodoId + + @BeforeClass + static void populateDummyData() { + Todo readingTodo = new Todo(task: 'Reading', isCompleted: false) + Todo writingTodo = new Todo(task: 'Writing', isCompleted: false) + + final Response readingResponse = + RestAssured.given() + .contentType(MediaType.APPLICATION_JSON_VALUE) + .body(readingTodo).post(API_ROOT) + + Todo cookingTodoResponse = readingResponse.as Todo.class + readingTodoId = cookingTodoResponse.getId() + + final Response writingResponse = + RestAssured.given() + .contentType(MediaType.APPLICATION_JSON_VALUE) + .body(writingTodo).post(API_ROOT) + + Todo writingTodoResponse = writingResponse.as Todo.class + writingTodoId = writingTodoResponse.getId() + } + + @Test + void whenGetAllTodoList_thenOk(){ + final Response response = RestAssured.get(API_ROOT) + + assertEquals HttpStatus.OK.value(),response.getStatusCode() + assertTrue response.as(List.class).size() > 0 + } + + @Test + void whenGetTodoById_thenOk(){ + final Response response = + RestAssured.get("$API_ROOT/$readingTodoId") + + assertEquals HttpStatus.OK.value(),response.getStatusCode() + Todo todoResponse = response.as Todo.class + assertEquals readingTodoId,todoResponse.getId() + } + + @Test + void whenUpdateTodoById_thenOk(){ + Todo todo = new Todo(id:readingTodoId, isCompleted: true) + final Response response = + RestAssured.given() + .contentType(MediaType.APPLICATION_JSON_VALUE) + .body(todo).put(API_ROOT) + + assertEquals HttpStatus.OK.value(),response.getStatusCode() + Todo todoResponse = response.as Todo.class + assertTrue todoResponse.getIsCompleted() + } + + @Test + void whenDeleteTodoById_thenOk(){ + final Response response = + RestAssured.given() + .delete("$API_ROOT/$writingTodoId") + + assertEquals HttpStatus.OK.value(),response.getStatusCode() + } + + @Test + void whenSaveTodo_thenOk(){ + Todo todo = new Todo(task: 'Blogging', isCompleted: false) + final Response response = + RestAssured.given() + .contentType(MediaType.APPLICATION_JSON_VALUE) + .body(todo).post(API_ROOT) + + assertEquals HttpStatus.OK.value(),response.getStatusCode() + } +} \ No newline at end of file From d2f60283b8eb3d8633f2bcb5eda3fc69fbff330c Mon Sep 17 00:00:00 2001 From: Krzysiek Date: Sun, 26 Apr 2020 15:46:04 +0200 Subject: [PATCH 085/157] JAVA-73: Remove unused test methods --- .../MongoTransactionalLiveTest.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/transaction/MongoTransactionalLiveTest.java b/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/transaction/MongoTransactionalLiveTest.java index bafcd770ec..6cd9657006 100644 --- a/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/transaction/MongoTransactionalLiveTest.java +++ b/persistence-modules/spring-data-mongodb/src/test/java/com/baeldung/transaction/MongoTransactionalLiveTest.java @@ -62,24 +62,6 @@ public class MongoTransactionalLiveTest { } } - @Test(expected = MongoCommandException.class) - @Transactional - public void whenCountDuringMongoTransaction_thenException() { - userRepository.save(new User("John", 30)); - userRepository.save(new User("Ringo", 35)); - userRepository.count(); - } - - @Test - @Transactional - public void whenQueryDuringMongoTransaction_thenSuccess() { - userRepository.save(new User("Jane", 20)); - userRepository.save(new User("Nick", 33)); - List users = mongoTemplate.find(new Query(), User.class); - - assertTrue(users.size() > 1); - } - // ==== Using test instead of before and after due to @transactional doesn't allow list collection @Test From df179d642e3fef9da586f8fe2582fa6719d2fe53 Mon Sep 17 00:00:00 2001 From: Sampada <46674082+sampada07@users.noreply.github.com> Date: Sun, 26 Apr 2020 21:25:43 +0530 Subject: [PATCH 086/157] BAEL-3988: Calling a SOAP web service in Java (#9184) * BAEL-3988: Calling a SOAP web service in Java * BAEL-3988: modified generated class as per wsdl location change --- jee-7/pom.xml | 7 ++-- .../generated/CountryServiceImplService.java | 6 +-- jee-7/src/main/resources/country.wsdl | 40 ------------------- 3 files changed, 6 insertions(+), 47 deletions(-) delete mode 100644 jee-7/src/main/resources/country.wsdl diff --git a/jee-7/pom.xml b/jee-7/pom.xml index 7352c6550a..9077aae1a6 100644 --- a/jee-7/pom.xml +++ b/jee-7/pom.xml @@ -256,10 +256,9 @@ - src/main/resources - - country.wsdl - + + http://localhost:8888/ws/country?wsdl + true com.baeldung.soap.ws.client.generated src/main/java diff --git a/jee-7/src/main/java/com/baeldung/soap/ws/client/generated/CountryServiceImplService.java b/jee-7/src/main/java/com/baeldung/soap/ws/client/generated/CountryServiceImplService.java index 09f4c29202..a6983938f5 100644 --- a/jee-7/src/main/java/com/baeldung/soap/ws/client/generated/CountryServiceImplService.java +++ b/jee-7/src/main/java/com/baeldung/soap/ws/client/generated/CountryServiceImplService.java @@ -12,11 +12,11 @@ import javax.xml.ws.WebServiceFeature; /** * This class was generated by the JAX-WS RI. - * JAX-WS RI 2.3.2 + * JAX-WS RI 2.2.9-b130926.1035 * Generated source version: 2.2 * */ -@WebServiceClient(name = "CountryServiceImplService", targetNamespace = "http://server.ws.soap.baeldung.com/", wsdlLocation = "file:src/main/resources/country.wsdl") +@WebServiceClient(name = "CountryServiceImplService", targetNamespace = "http://server.ws.soap.baeldung.com/", wsdlLocation = "http://localhost:8888/ws/country?wsdl") public class CountryServiceImplService extends Service { private final static URL COUNTRYSERVICEIMPLSERVICE_WSDL_LOCATION; @@ -27,7 +27,7 @@ public class CountryServiceImplService extends Service { URL url = null; WebServiceException e = null; try { - url = new URL("file:src/main/resources/country.wsdl"); + url = new URL("http://localhost:8888/ws/country?wsdl"); } catch (MalformedURLException ex) { e = new WebServiceException(ex); } diff --git a/jee-7/src/main/resources/country.wsdl b/jee-7/src/main/resources/country.wsdl deleted file mode 100644 index 4d41fce322..0000000000 --- a/jee-7/src/main/resources/country.wsdl +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file From 8d7d98a144b2af7038efa1a266a284df92b9b7d9 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Sun, 26 Apr 2020 18:37:31 +0200 Subject: [PATCH 087/157] Customizing Java 8 code in modemmapper package --- .../com/baeldung/modelmapper/MapperUtil.java | 16 +++++++--------- .../baeldung/modelmapper/UserPropertyMap.java | 13 +++++++------ .../modelmapper/UsersListMappingUnitTest.java | 12 ++++++------ 3 files changed, 20 insertions(+), 21 deletions(-) diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java index 60af44cc76..9c6a5a0320 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java @@ -2,11 +2,11 @@ package com.baeldung.modelmapper; import org.modelmapper.ModelMapper; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** - * This is a helper class that contains methods for generic mapping of the users list. + * This is a helper class that contains method for generic mapping of the users list. * Initially, an instance of ModelMapper was created. * * @author Sasa Milenkovic @@ -21,14 +21,12 @@ public class MapperUtil { } - public static List mapList(List sourceList, Class target) { - List targetList = new ArrayList(); + public static List mapList(List source, Class targetClass) { - for (S source : sourceList) { - targetList.add(modelMapper.map(source, target)); - } - - return targetList; + return source + .stream() + .map(element -> modelMapper.map(element, targetClass)) + .collect(Collectors.toList()); } } diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 0d2ebf7b4c..5b2942b158 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -4,11 +4,11 @@ import org.modelmapper.AbstractConverter; import org.modelmapper.Converter; import org.modelmapper.PropertyMap; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** - * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. + * UserPropertyMap class instantiates the converter to map the data from the UserList to the UsersLisDTO. * In the configuration method, we call a converter to do the mapping. * * @author Sasa Milenkovic @@ -18,19 +18,20 @@ public class UserPropertyMap extends PropertyMap { Converter, List> converter = new AbstractConverter, List>() { - protected List usernames; @Override protected List convert(List users) { - usernames = new ArrayList(); - users.forEach(user -> usernames.add(user.getUsername())); - return usernames; + return users + .stream() + .map(User::getUsername) + .collect(Collectors.toList()); } }; @Override protected void configure() { + using(converter).map(source.getUsers(), destination.getUsernames()); } } diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java index aaeb8711a8..982622e1f5 100644 --- a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java @@ -59,7 +59,7 @@ public class UsersListMappingUnitTest { @Test public void givenUsersList_whenUseGenericType_thenMapToDto() { - // Mapping lists using generic type methods + // Mapping lists using custom type methods List userDtoList = MapperUtil.mapList(users, UserDTO.class); @@ -72,12 +72,12 @@ public class UsersListMappingUnitTest { UserList userList = new UserList(); userList.setUsers(users); - UserListDTO dto = new UserListDTO(); - modelMapper.map(userList, dto); + UserListDTO dtos = new UserListDTO(); + modelMapper.map(userList, dtos); - assertNotNull(dto); - assertThat(dto, Matchers.hasProperty("usernames")); - assertThat(dto.getUsernames(), hasSize(3)); + assertNotNull(dtos); + assertThat(dtos, Matchers.hasProperty("usernames")); + assertThat(dtos.getUsernames(), hasSize(3)); } From c7acf47138c929c59a35e545a3fe66d3225365eb Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 26 Apr 2020 22:24:14 +0530 Subject: [PATCH 088/157] fix junit test cases --- .../batch/understanding/CustomCheckPointUnitTest.java | 9 +++------ .../batch/understanding/JobSequenceUnitTest.java | 6 +++--- .../batch/understanding/SimpleBatchLetUnitTest.java | 9 ++++----- .../batch/understanding/SimpleChunkUnitTest.java | 5 ++--- .../batch/understanding/SimpleErrorChunkUnitTest.java | 11 +++++------ jee-7/src/test/resources/jberet.properties | 1 + 6 files changed, 18 insertions(+), 23 deletions(-) create mode 100644 jee-7/src/test/resources/jberet.properties diff --git a/jee-7/src/test/java/com/baeldung/batch/understanding/CustomCheckPointUnitTest.java b/jee-7/src/test/java/com/baeldung/batch/understanding/CustomCheckPointUnitTest.java index 744bdfc8f5..c607efeb24 100644 --- a/jee-7/src/test/java/com/baeldung/batch/understanding/CustomCheckPointUnitTest.java +++ b/jee-7/src/test/java/com/baeldung/batch/understanding/CustomCheckPointUnitTest.java @@ -1,20 +1,17 @@ package com.baeldung.batch.understanding; -import static org.junit.jupiter.api.Assertions.*; -import java.util.Map; +import static org.junit.jupiter.api.Assertions.assertEquals; + import java.util.Properties; + import javax.batch.operations.JobOperator; import javax.batch.runtime.BatchRuntime; import javax.batch.runtime.BatchStatus; import javax.batch.runtime.JobExecution; -import javax.batch.runtime.Metric; import javax.batch.runtime.StepExecution; -import com.baeldung.batch.understanding.BatchTestHelper; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Disabled; -@Disabled("Should be fixed in BAEL-3812") class CustomCheckPointUnitTest { @Test public void givenChunk_whenCustomCheckPoint_thenCommitCountIsThree() throws Exception { diff --git a/jee-7/src/test/java/com/baeldung/batch/understanding/JobSequenceUnitTest.java b/jee-7/src/test/java/com/baeldung/batch/understanding/JobSequenceUnitTest.java index 88b981df92..4b27e5f5ec 100644 --- a/jee-7/src/test/java/com/baeldung/batch/understanding/JobSequenceUnitTest.java +++ b/jee-7/src/test/java/com/baeldung/batch/understanding/JobSequenceUnitTest.java @@ -1,6 +1,8 @@ package com.baeldung.batch.understanding; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.ArrayList; import java.util.List; @@ -13,9 +15,7 @@ import javax.batch.runtime.JobExecution; import javax.batch.runtime.StepExecution; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Disabled; -@Disabled("Should be fixed in BAEL-3812") class JobSequenceUnitTest { @Test public void givenTwoSteps_thenBatch_CompleteWithSuccess() throws Exception { diff --git a/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleBatchLetUnitTest.java b/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleBatchLetUnitTest.java index 3babf9b5aa..788b75eb3e 100644 --- a/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleBatchLetUnitTest.java +++ b/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleBatchLetUnitTest.java @@ -1,17 +1,16 @@ package com.baeldung.batch.understanding; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Properties; import javax.batch.operations.JobOperator; import javax.batch.runtime.BatchRuntime; import javax.batch.runtime.BatchStatus; import javax.batch.runtime.JobExecution; -import java.util.Properties; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; -@Disabled("Should be fixed in BAEL-3812") class SimpleBatchLetUnitTest { @Test public void givenBatchLet_thenBatch_CompleteWithSuccess() throws Exception { diff --git a/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleChunkUnitTest.java b/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleChunkUnitTest.java index 5871143fa3..9010c365a2 100644 --- a/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleChunkUnitTest.java +++ b/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleChunkUnitTest.java @@ -1,6 +1,7 @@ package com.baeldung.batch.understanding; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.util.List; import java.util.Map; @@ -14,9 +15,7 @@ import javax.batch.runtime.Metric; import javax.batch.runtime.StepExecution; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.Disabled; -@Disabled("Should be fixed in BAEL-3812") class SimpleChunkUnitTest { @Test public void givenChunk_thenBatch_CompletesWithSucess() throws Exception { diff --git a/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleErrorChunkUnitTest.java b/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleErrorChunkUnitTest.java index c53561a0c0..bc410aec8d 100644 --- a/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleErrorChunkUnitTest.java +++ b/jee-7/src/test/java/com/baeldung/batch/understanding/SimpleErrorChunkUnitTest.java @@ -1,19 +1,18 @@ package com.baeldung.batch.understanding; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.Test; +import static org.junit.Assert.assertEquals; + +import java.util.List; +import java.util.Properties; import javax.batch.operations.JobOperator; import javax.batch.runtime.BatchRuntime; import javax.batch.runtime.BatchStatus; import javax.batch.runtime.JobExecution; import javax.batch.runtime.StepExecution; -import java.util.List; -import java.util.Properties; -import static org.junit.Assert.assertEquals; +import org.junit.jupiter.api.Test; -@Disabled("Should be fixed in BAEL-3812") class SimpleErrorChunkUnitTest { @Test diff --git a/jee-7/src/test/resources/jberet.properties b/jee-7/src/test/resources/jberet.properties new file mode 100644 index 0000000000..e8b9907de5 --- /dev/null +++ b/jee-7/src/test/resources/jberet.properties @@ -0,0 +1 @@ +db-url=jdbc:h2:mem:jberet-repo;DB_CLOSE_DELAY=-1 \ No newline at end of file From f1283f2424cc85aa6459898767c3f62be816d01b Mon Sep 17 00:00:00 2001 From: Belma Jakupovic Date: Mon, 27 Apr 2020 06:57:38 +0200 Subject: [PATCH 089/157] bjakupovic - single responsibility principle example (#9191) --- .../java/com/baeldung/s/TextManipulator.java | 35 +++++++++++++++++++ .../main/java/com/baeldung/s/TextPrinter.java | 23 ++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java create mode 100644 patterns/solid/src/main/java/com/baeldung/s/TextPrinter.java diff --git a/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java b/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java new file mode 100644 index 0000000000..a6b32a0ff9 --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java @@ -0,0 +1,35 @@ +package com.baeldung.s; + +public class TextManipulator { + private String text; + + public TextManipulator(String text) { + this.text = text; + } + + public String getText() { + return text; + } + + public void appendText(String newText) { + text = text.concat(newText); + } + + public void findWordAndReplace(String word, String replacementWord) { + if (text.contains(word)) { + text = text.replace(word, replacementWord); + } else System.out.println("Word you want to replace is not found in the text"); + } + + public void findWordAndDelete(String word) { + if (text.contains(word)) { + text = text.replace(word, ""); + } else System.out.println("Word you want to delete is not found in the text"); + } + + /* + * Bad practice when implementing SRP principle, not in the scope of this class + public void printText() { + System.out.println(textManipulator.getText()); + }*/ +} diff --git a/patterns/solid/src/main/java/com/baeldung/s/TextPrinter.java b/patterns/solid/src/main/java/com/baeldung/s/TextPrinter.java new file mode 100644 index 0000000000..d6a413e7ac --- /dev/null +++ b/patterns/solid/src/main/java/com/baeldung/s/TextPrinter.java @@ -0,0 +1,23 @@ +package com.baeldung.s; + +import java.util.Arrays; + +public class TextPrinter { + TextManipulator textManipulator; + + public TextPrinter(TextManipulator textManipulator) { + this.textManipulator = textManipulator; + } + + public void printText() { + System.out.println(textManipulator.getText()); + } + + public void printOutEachWordOfText() { + System.out.println(Arrays.toString(textManipulator.getText().split(" "))); + } + + public void printRangeOfCharacters(int startingIndex, int endIndex) { + System.out.println(textManipulator.getText().substring(startingIndex, endIndex)); + } +} From e24cc4d7b0a9d34c0c091512f875df24b947b134 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Mon, 27 Apr 2020 11:34:36 +0530 Subject: [PATCH 090/157] JAVA-926: Upgraded spring boot version --- .../greeter-spring-boot-autoconfigure/pom.xml | 2 +- .../greeter-spring-boot-starter/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml index 0bba2936a7..532f45cf3e 100644 --- a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml +++ b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-autoconfigure/pom.xml @@ -63,7 +63,7 @@ UTF-8 - 1.5.2.RELEASE + 2.2.6.RELEASE 0.0.1-SNAPSHOT diff --git a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml index ba2b4101e8..0e8fb4cbc9 100644 --- a/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml +++ b/spring-boot-modules/spring-boot-custom-starter/greeter-spring-boot-starter/pom.xml @@ -51,7 +51,7 @@ UTF-8 0.0.1-SNAPSHOT - 1.5.2.RELEASE + 2.2.6.RELEASE \ No newline at end of file From debb7dace50ee0ebe67e41872c132eafe83d8cbe Mon Sep 17 00:00:00 2001 From: Yevgen Pikus <4037842+gindex@users.noreply.github.com> Date: Mon, 27 Apr 2020 23:25:33 +0200 Subject: [PATCH 091/157] Add fold and reduce examples (#9188) Co-authored-by: Yevgen Pikus --- .../foldvsreduce/FoldAndReduceTest.kt | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 core-kotlin-modules/core-kotlin-collections/src/test/kotlin/com/baeldung/foldvsreduce/FoldAndReduceTest.kt diff --git a/core-kotlin-modules/core-kotlin-collections/src/test/kotlin/com/baeldung/foldvsreduce/FoldAndReduceTest.kt b/core-kotlin-modules/core-kotlin-collections/src/test/kotlin/com/baeldung/foldvsreduce/FoldAndReduceTest.kt new file mode 100644 index 0000000000..7b263914c6 --- /dev/null +++ b/core-kotlin-modules/core-kotlin-collections/src/test/kotlin/com/baeldung/foldvsreduce/FoldAndReduceTest.kt @@ -0,0 +1,59 @@ +package com.baeldung.foldvsreduce + +import org.junit.Test +import org.junit.jupiter.api.assertThrows +import java.lang.RuntimeException +import kotlin.test.assertEquals + +class FoldAndReduceTest { + + @Test + fun testReduceLimitations() { + val numbers: List = listOf(1, 2, 3) + val sum: Number = numbers.reduce { acc, next -> acc + next } + assertEquals(6, sum) + + val emptyList = listOf() + assertThrows { emptyList.reduce { acc, next -> acc + next } } + + // doesn't compile + // val sum = numbers.reduce { acc, next -> acc.toLong() + next.toLong()} + } + + @Test + fun testFold() { + + val numbers: List = listOf(1, 2, 3) + val sum: Int = numbers.fold(0, { acc, next -> acc + next }) + assertEquals(6, sum) + + //change result type + val sumLong: Long = numbers.fold(0L, { acc, next -> acc + next.toLong() }) + assertEquals(6L, sumLong) + + val emptyList = listOf() + val emptySum = emptyList.fold(0, { acc, next -> acc + next }) + assertEquals(0, emptySum) + + //power of changing result type + val (even, odd) = numbers.fold(Pair(listOf(), listOf()), { acc, next -> + if (next % 2 == 0) Pair(acc.first + next, acc.second) + else Pair(acc.first, acc.second + next) + }) + + assertEquals(listOf(2), even) + assertEquals(listOf(1, 3), odd) + } + + @Test + fun testVariationsOfFold() { + val numbers = listOf(1, 2, 3) + val reversed = numbers.foldRight(listOf(), { next, acc -> acc + next}) + assertEquals(listOf(3,2,1), reversed) + + val reversedIndexes = numbers.foldRightIndexed(listOf(), { i, _, acc -> acc + i }) + assertEquals(listOf(2,1,0), reversedIndexes) + } + + +} \ No newline at end of file From ac794a722f32fbb1252e84f9b75d28586d2ef42a Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Mon, 27 Apr 2020 18:58:15 -0400 Subject: [PATCH 092/157] Resolved Conflicts with master --- libraries-3/pom.xml | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index a72dbcba50..5334bfba70 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -70,25 +70,6 @@ velocity-engine-core ${velocity-engine-core.version} -<<<<<<< HEAD - - com.uber.nullaway - nullaway - 0.3.0 - - - org.codehaus.plexus - plexus-compiler-javac-errorprone - 2.8 - - - - com.google.errorprone - error_prone_core - 2.1.3 - -======= com.uber.nullaway nullaway @@ -106,7 +87,6 @@ error_prone_core 2.1.3 ->>>>>>> upstream/master @@ -143,20 +123,11 @@ -<<<<<<< HEAD - - - org.apache.maven.plugins - maven-compiler-plugin - 3.5 - -======= org.apache.maven.plugins maven-compiler-plugin 3.5 ->>>>>>> upstream/master javac-with-errorprone true 1.8 @@ -172,11 +143,7 @@ -<<<<<<< HEAD - -XepExcludedPaths:(.*)/test/.*|(.*)/streamex/.*|(.*)/jcabi/.* -======= -XepExcludedPaths:(.*)/test/.*|(.*)/jcabi/.* ->>>>>>> upstream/master -XepOpt:NullAway:AnnotatedPackages=com.baeldung.nullaway From 491e2d84933ee0c876e38c956edd5e888f1398fc Mon Sep 17 00:00:00 2001 From: Greg Martin Date: Mon, 27 Apr 2020 19:02:40 -0400 Subject: [PATCH 093/157] Synced with master --- libraries-3/README.md | 1 - .../java/com/baeldung/distinct/Person.java | 65 ------------------- 2 files changed, 66 deletions(-) delete mode 100644 libraries-3/src/main/java/com/baeldung/distinct/Person.java diff --git a/libraries-3/README.md b/libraries-3/README.md index 922ce1bd1a..ec433960ef 100644 --- a/libraries-3/README.md +++ b/libraries-3/README.md @@ -12,7 +12,6 @@ Remember, for advanced libraries like [Jackson](/jackson) and [JUnit](/testing-m - [Guide to the Cactoos Library](https://www.baeldung.com/java-cactoos) - [Parsing Command-Line Parameters with Airline](https://www.baeldung.com/java-airline) - [Introduction to cache2k](https://www.baeldung.com/java-cache2k) -- [Using NullAway to Avoid NullPointerExceptions](https://www.baeldung.com/java-nullaway) - [Introduction to the jcabi-aspects AOP Annotations Library](https://www.baeldung.com/java-jcabi-aspects) - [Introduction to Takes](https://www.baeldung.com/java-takes) - [Using NullAway to Avoid NullPointerExceptions](https://www.baeldung.com/java-nullaway) diff --git a/libraries-3/src/main/java/com/baeldung/distinct/Person.java b/libraries-3/src/main/java/com/baeldung/distinct/Person.java deleted file mode 100644 index 8a2a5f7a45..0000000000 --- a/libraries-3/src/main/java/com/baeldung/distinct/Person.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.baeldung.distinct; - -public class Person { - int age; - String name; - String email; - - public Person(int age, String name, String email) { - super(); - this.age = age; - this.name = name; - this.email = email; - } - - public int getAge() { - return age; - } - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("Person [age="); - builder.append(age); - builder.append(", name="); - builder.append(name); - builder.append(", email="); - builder.append(email); - builder.append("]"); - return builder.toString(); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((email == null) ? 0 : email.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; - Person other = (Person) obj; - if (email == null) { - if (other.email != null) - return false; - } else if (!email.equals(other.email)) - return false; - return true; - } - -} From 57519b9daebdbb82d6ca96c3f7af87f304c0dbd6 Mon Sep 17 00:00:00 2001 From: Kumar Chandrakant Date: Tue, 28 Apr 2020 09:48:00 +0530 Subject: [PATCH 094/157] Testing multithreading (#9193) --- .../core-java-concurrency-2/README.md | 1 + .../core-java-concurrency-2/pom.xml | 77 +++++++++++++++ .../com/baeldung/concurrent/MyCounter.java | 0 .../concurrent/MyCounterJCStressUnitTest.java | 0 .../MyCounterMultithreadedTCUnitTest.java | 4 +- .../concurrent/MyCounterSimpleUnitTest.java | 7 +- .../MyCounterTempusFugitUnitTest.java | 2 + .../MyCounterThreadWeaverUnitTest.java | 2 + .../core-java-concurrency-testing/README.md | 7 -- .../core-java-concurrency-testing/pom.xml | 93 ------------------- .../src/main/resources/logback.xml | 19 ---- .../src/test/resources/.gitignore | 13 --- 12 files changed, 90 insertions(+), 135 deletions(-) rename core-java-modules/{core-java-concurrency-testing => core-java-concurrency-2}/src/main/java/com/baeldung/concurrent/MyCounter.java (100%) rename core-java-modules/{core-java-concurrency-testing => core-java-concurrency-2}/src/test/java/com/baeldung/concurrent/MyCounterJCStressUnitTest.java (100%) rename core-java-modules/{core-java-concurrency-testing => core-java-concurrency-2}/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java (90%) rename core-java-modules/{core-java-concurrency-testing => core-java-concurrency-2}/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java (96%) rename core-java-modules/{core-java-concurrency-testing => core-java-concurrency-2}/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java (96%) rename core-java-modules/{core-java-concurrency-testing => core-java-concurrency-2}/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java (96%) delete mode 100644 core-java-modules/core-java-concurrency-testing/README.md delete mode 100644 core-java-modules/core-java-concurrency-testing/pom.xml delete mode 100644 core-java-modules/core-java-concurrency-testing/src/main/resources/logback.xml delete mode 100644 core-java-modules/core-java-concurrency-testing/src/test/resources/.gitignore diff --git a/core-java-modules/core-java-concurrency-2/README.md b/core-java-modules/core-java-concurrency-2/README.md index 749d174968..ab7eebc26a 100644 --- a/core-java-modules/core-java-concurrency-2/README.md +++ b/core-java-modules/core-java-concurrency-2/README.md @@ -4,4 +4,5 @@ ### Relevant Articles: - [Using a Mutex Object in Java](https://www.baeldung.com/java-mutex) +- [Testing Multi-Threaded Code in Java] (https://www.baeldung.com/java-testing-multithreaded) diff --git a/core-java-modules/core-java-concurrency-2/pom.xml b/core-java-modules/core-java-concurrency-2/pom.xml index a9a01b70f3..dfb5674c8e 100644 --- a/core-java-modules/core-java-concurrency-2/pom.xml +++ b/core-java-modules/core-java-concurrency-2/pom.xml @@ -15,6 +15,38 @@ 0.0.1-SNAPSHOT ../../parent-java + + + + junit + junit + 4.13 + test + + + com.googlecode.thread-weaver + threadweaver + 0.2 + test + + + com.google.code.tempus-fugit + tempus-fugit + 1.1 + test + + + com.googlecode.multithreadedtc + multithreadedtc + 1.01 + test + + + org.openjdk.jcstress + jcstress-core + 0.5 + + core-java-concurrency-2 @@ -24,6 +56,51 @@ true + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + ${javac.target} + ${javac.target} + ${javac.target} + + + + + org.apache.maven.plugins + maven-shade-plugin + 2.2 + + + main + package + + shade + + + jcstress + + + org.openjdk.jcstress.Main + + + META-INF/TestList + + + + + + + + + + 1.8 + diff --git a/core-java-modules/core-java-concurrency-testing/src/main/java/com/baeldung/concurrent/MyCounter.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/MyCounter.java similarity index 100% rename from core-java-modules/core-java-concurrency-testing/src/main/java/com/baeldung/concurrent/MyCounter.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/MyCounter.java diff --git a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterJCStressUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterJCStressUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterJCStressUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterJCStressUnitTest.java diff --git a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java similarity index 90% rename from core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java index eb4e77cae9..8a0bedf6c2 100644 --- a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java +++ b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterMultithreadedTCUnitTest.java @@ -1,5 +1,6 @@ package com.baeldung.concurrent; +import org.junit.Ignore; import org.junit.Test; import edu.umd.cs.mtc.MultithreadedTestCase; @@ -25,9 +26,10 @@ public class MyCounterMultithreadedTCUnitTest extends MultithreadedTestCase { @SuppressWarnings("deprecation") @Override public void finish() { - assertEquals(2, counter.getCount()); + assertEquals(2, counter.getCount()); } + @Ignore @Test public void testCounter() throws Throwable { TestFramework.runManyTimes(new MyCounterMultithreadedTCUnitTest(), 1000); diff --git a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java similarity index 96% rename from core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java index 4f3409b923..9a405e7e24 100644 --- a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java +++ b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterSimpleUnitTest.java @@ -6,6 +6,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import org.junit.Ignore; import org.junit.Test; public class MyCounterSimpleUnitTest { @@ -18,7 +19,8 @@ public class MyCounterSimpleUnitTest { assertEquals(500, counter.getCount()); } - // @Test + @Ignore + @Test public void testCounterWithConcurrency() throws InterruptedException { int numberOfThreads = 100; ExecutorService service = Executors.newFixedThreadPool(10); @@ -34,7 +36,8 @@ public class MyCounterSimpleUnitTest { assertEquals(numberOfThreads, counter.getCount()); } - // @Test + @Ignore + @Test public void testSummationWithConcurrencyAndWait() throws InterruptedException { int numberOfThreads = 2; ExecutorService service = Executors.newFixedThreadPool(10); diff --git a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java similarity index 96% rename from core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java index 360c61b4f4..36a2031e78 100644 --- a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java +++ b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterTempusFugitUnitTest.java @@ -3,6 +3,7 @@ package com.baeldung.concurrent; import static org.junit.Assert.assertEquals; import org.junit.AfterClass; +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; @@ -20,6 +21,7 @@ public class MyCounterTempusFugitUnitTest { private static MyCounter counter = new MyCounter(); + @Ignore @Test @Concurrent(count = 2) @Repeating(repetition = 10) diff --git a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java similarity index 96% rename from core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java index 29b08996cd..e65a963584 100644 --- a/core-java-modules/core-java-concurrency-testing/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java +++ b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/MyCounterThreadWeaverUnitTest.java @@ -2,6 +2,7 @@ package com.baeldung.concurrent; import static org.junit.Assert.assertEquals; +import org.junit.Ignore; import org.junit.Test; import com.google.testing.threadtester.AnnotatedTestRunner; @@ -34,6 +35,7 @@ public class MyCounterThreadWeaverUnitTest { assertEquals(2, counter.getCount()); } + @Ignore @Test public void testCounter() { new AnnotatedTestRunner().runTests(this.getClass(), MyCounter.class); diff --git a/core-java-modules/core-java-concurrency-testing/README.md b/core-java-modules/core-java-concurrency-testing/README.md deleted file mode 100644 index fef74a6750..0000000000 --- a/core-java-modules/core-java-concurrency-testing/README.md +++ /dev/null @@ -1,7 +0,0 @@ -========= - -## Core Java Concurrency Testing Examples - -### Relevant Articles: -- [Testing Multi-Threaded Code in Java](https://www.baeldung.com/java-testing-multithreaded) - diff --git a/core-java-modules/core-java-concurrency-testing/pom.xml b/core-java-modules/core-java-concurrency-testing/pom.xml deleted file mode 100644 index 51de83f67c..0000000000 --- a/core-java-modules/core-java-concurrency-testing/pom.xml +++ /dev/null @@ -1,93 +0,0 @@ - - - 4.0.0 - core-java-concurrency-testing - 0.1.0-SNAPSHOT - core-java-concurrency-testing - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - - - - - junit - junit - 4.13 - test - - - com.googlecode.thread-weaver - threadweaver - 0.2 - test - - - com.google.code.tempus-fugit - tempus-fugit - 1.1 - test - - - com.googlecode.multithreadedtc - multithreadedtc - 1.01 - test - - - org.openjdk.jcstress - jcstress-core - 0.5 - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.1 - - ${javac.target} - ${javac.target} - ${javac.target} - - - - - org.apache.maven.plugins - maven-shade-plugin - 2.2 - - - main - package - - shade - - - jcstress - - - org.openjdk.jcstress.Main - - - META-INF/TestList - - - - - - - - - - diff --git a/core-java-modules/core-java-concurrency-testing/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-testing/src/main/resources/logback.xml deleted file mode 100644 index 56af2d397e..0000000000 --- a/core-java-modules/core-java-concurrency-testing/src/main/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core-java-modules/core-java-concurrency-testing/src/test/resources/.gitignore b/core-java-modules/core-java-concurrency-testing/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/core-java-modules/core-java-concurrency-testing/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 From 41a9f46cad51b12d57b8ecd815cc5dcb769f23b7 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 28 Apr 2020 07:49:49 +0200 Subject: [PATCH 095/157] [JAVA-616] Fixed link to article by using HTTPS --- core-java-modules/core-java-arrays-sorting/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-arrays-sorting/README.md b/core-java-modules/core-java-arrays-sorting/README.md index f83dd43526..dedc0340c0 100644 --- a/core-java-modules/core-java-arrays-sorting/README.md +++ b/core-java-modules/core-java-arrays-sorting/README.md @@ -5,5 +5,5 @@ This module contains articles about sorting arrays in Java ### Relevant Articles: - [Sorting Arrays in Java](https://www.baeldung.com/java-sorting-arrays) - [Checking If an Array Is Sorted in Java](https://www.baeldung.com/java-check-sorted-array) -- [How to Reverse an Array in Java](http://www.baeldung.com/java-invert-array) +- [How to Reverse an Array in Java](https://www.baeldung.com/java-invert-array) - [Arrays.sort vs Arrays.parallelSort](https://www.baeldung.com/java-arrays-sort-vs-parallelsort) From 5e1b86e79e2f6ad3898198b5ced790eb054e7d5b Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 28 Apr 2020 07:55:51 +0200 Subject: [PATCH 096/157] [JAVA-630] Fixing indent of vavr* modules --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index f2c23a94ae..2f4579c999 100644 --- a/pom.xml +++ b/pom.xml @@ -813,8 +813,8 @@ libraries vaadin - vavr - vavr-2 + vavr + vavr-2 @@ -1313,12 +1313,12 @@ libraries vaadin - vavr - vavr-2 + vavr + vavr-2 - + live-all @@ -1342,7 +1342,7 @@ - + From e25ce92d5ed5a00e32f136a6f5f7b575495484cd Mon Sep 17 00:00:00 2001 From: dupirefr Date: Thu, 2 Apr 2020 20:51:41 +0200 Subject: [PATCH 097/157] [JAVA-621] Creating core-java-lang-oop-modules module --- .../core-java-lang-oop-modules/pom.xml | 15 +++++++++++++++ core-java-modules/pom.xml | 1 + 2 files changed, 16 insertions(+) create mode 100644 core-java-modules/core-java-lang-oop-modules/pom.xml diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml new file mode 100644 index 0000000000..0e7e474258 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -0,0 +1,15 @@ + + + + core-java-modules + com.baeldung.core-java-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-oop-modules + + + \ No newline at end of file diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index b7454cc737..4d64f7e6ba 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -85,6 +85,7 @@ core-java-lang-2 core-java-lang-math core-java-lang-math-2 + core-java-lang-oop-modules core-java-lang-oop core-java-lang-oop-2 core-java-lang-oop-3 From 117cb9ce46e33a664bc383f757b9208274527875 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Thu, 2 Apr 2020 21:04:24 +0200 Subject: [PATCH 098/157] [JAVA-621] core-java-lang-oop-constructors module * Creation * Moved code from https://www.baeldung.com/java-constructors * Moved code from https://www.baeldung.com/java-copy-constructor * Moved code from https://www.baeldung.com/java-cannot-reference-x-before-supertype-constructor-error * Moved article references to the new README.md --- .../core-java-lang-oop-2/README.md | 3 -- .../core-java-lang-oop-constructors/README.md | 8 ++++++ .../core-java-lang-oop-constructors/pom.xml | 28 +++++++++++++++++++ .../baeldung/constructors/BankAccount.java | 7 ++--- .../baeldung/constructors/Transaction.java | 0 .../baeldung/copyconstructor/Employee.java | 0 .../com/baeldung/copyconstructor/Manager.java | 0 .../supertypecompilerexception/MyClass.java | 0 .../MyClassSolution1.java | 0 .../MyClassSolution2.java | 0 .../MyClassSolution3.java | 0 .../MyException.java | 0 .../constructors/ConstructorUnitTest.java | 13 ++++----- .../copyconstructor/EmployeeUnitTest.java | 0 .../copyconstructor/ManagerUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 9 ++++-- 16 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/constructors/BankAccount.java (99%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/constructors/Transaction.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/copyconstructor/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/copyconstructor/Manager.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/main/java/com/baeldung/supertypecompilerexception/MyException.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java (88%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-constructors}/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index c48a3f5cd9..fc5b5944f8 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -4,15 +4,12 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Generic Constructors in Java](https://www.baeldung.com/java-generic-constructors) -- [Cannot Reference “X” Before Supertype Constructor Has Been Called](https://www.baeldung.com/java-cannot-reference-x-before-supertype-constructor-error) - [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) - [Raw Types in Java](https://www.baeldung.com/raw-types-java) - [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) - [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) - [Immutable Objects in Java](https://www.baeldung.com/java-immutable-object) - [Inheritance and Composition (Is-a vs Has-a relationship) in Java](https://www.baeldung.com/java-inheritance-composition) -- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) - [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) -- [Java Copy Constructor](https://www.baeldung.com/java-copy-constructor) - [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) - [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/README.md new file mode 100644 index 0000000000..0082969807 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/README.md @@ -0,0 +1,8 @@ +## Core Java Lang OOP - Constructors + +This module contains article about constructors in Java + +### Relevant Articles: +- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) +- [Java Copy Constructor](https://www.baeldung.com/java-copy-constructor) +- [Cannot Reference “X” Before Supertype Constructor Has Been Called](https://www.baeldung.com/java-cannot-reference-x-before-supertype-constructor-error) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml new file mode 100644 index 0000000000..e961d68f11 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml @@ -0,0 +1,28 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-constructors + core-java-lang-oop-constructors + jar + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + 3.10.0 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java similarity index 99% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java index b78b5937e1..b198492129 100644 --- a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java @@ -6,7 +6,7 @@ class BankAccount { String name; LocalDateTime opened; double balance; - + @Override public String toString() { return String.format("%s, %s, %f", this.name, this.opened.toString(), this.balance); @@ -47,14 +47,13 @@ class BankAccountCopyConstructor extends BankAccount { this.opened = opened; this.balance = balance; } - + public BankAccountCopyConstructor(BankAccount other) { this.name = other.name; this.opened = LocalDateTime.now(); this.balance = 0.0f; } } - class BankAccountChainedConstructors extends BankAccount { public BankAccountChainedConstructors(String name, LocalDateTime opened, double balance) { this.name = name; @@ -65,4 +64,4 @@ class BankAccountChainedConstructors extends BankAccount { public BankAccountChainedConstructors(String name) { this(name, LocalDateTime.now(), 0.0f); } -} +} \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/copyconstructor/Employee.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/copyconstructor/Employee.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/copyconstructor/Manager.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/copyconstructor/Manager.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyException.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/supertypecompilerexception/MyException.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java similarity index 88% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java index 274fe77764..e207afec57 100644 --- a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java @@ -1,20 +1,19 @@ package com.baeldung.constructors; +import org.assertj.core.api.Assertions; import org.junit.Test; import java.time.LocalDateTime; import java.time.Month; -import java.util.logging.Logger; -import static org.assertj.core.api.Assertions.*; +import static org.assertj.core.api.Assertions.assertThat; public class ConstructorUnitTest { - final static Logger LOGGER = Logger.getLogger(ConstructorUnitTest.class.getName()); - + @Test public void givenNoExplicitContructor_whenUsed_thenFails() { BankAccount account = new BankAccount(); - assertThatThrownBy(() -> { + Assertions.assertThatThrownBy(() -> { account.toString(); }).isInstanceOf(Exception.class); } @@ -22,7 +21,7 @@ public class ConstructorUnitTest { @Test public void givenNoArgumentConstructor_whenUsed_thenSucceeds() { BankAccountEmptyConstructor account = new BankAccountEmptyConstructor(); - assertThatCode(() -> { + Assertions.assertThatCode(() -> { account.toString(); }).doesNotThrowAnyException(); } @@ -33,7 +32,7 @@ public class ConstructorUnitTest { BankAccountParameterizedConstructor account = new BankAccountParameterizedConstructor("Tom", opened, 1000.0f); - assertThatCode(() -> { + Assertions.assertThatCode(() -> { account.toString(); }).doesNotThrowAnyException(); } diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index 0e7e474258..c8bad11b13 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -9,7 +9,12 @@ 4.0.0 - core-java-oop-modules - + com.baeldung.core-java-lang-oop-modules + core-java-lang-oop-modules + core-java-lang-oop-modules + pom + + core-java-lang-oop-constructors + \ No newline at end of file From c0169519adf7520da194b19b224beca25430e84e Mon Sep 17 00:00:00 2001 From: dupirefr Date: Thu, 2 Apr 2020 21:24:31 +0200 Subject: [PATCH 099/157] [JAVA-621] core-java-lang-oop-patterns module * Creation * Moved code from https://www.baeldung.com/java-composition-aggregation-association * Moved code from https://www.baeldung.com/java-inheritance-composition * Moved code from https://www.baeldung.com/java-immutable-object * Moved code from https://www.baeldung.com/java-deep-copy * Moved article references to the new README.md --- .../core-java-lang-oop-2/README.md | 2 - .../core-java-lang-oop-3/README.md | 1 - .../core-java-lang-oop-patterns/README.md | 9 ++++ .../core-java-lang-oop-patterns/pom.xml | 45 +++++++++++++++++++ .../java/com/baeldung/deepcopy/Address.java | 0 .../main/java/com/baeldung/deepcopy/User.java | 0 .../baeldung/immutableobjects/Currency.java | 0 .../com/baeldung/immutableobjects/Money.java | 0 .../application/Application.java | 0 .../inheritancecomposition/model/Actress.java | 0 .../model/Computer.java | 0 .../inheritancecomposition/model/Memory.java | 0 .../inheritancecomposition/model/Person.java | 0 .../model/Processor.java | 0 .../model/SoundCard.java | 0 .../model/StandardMemory.java | 0 .../model/StandardProcessor.java | 0 .../model/StandardSoundCard.java | 0 .../model/Waitress.java | 0 .../relationships/aggregation/Car.java | 0 .../aggregation/CarWithStaticInnerWheel.java | 0 .../relationships/aggregation/Wheel.java | 0 .../relationships/association/Child.java | 0 .../relationships/association/Mother.java | 0 .../relationships/composition/Building.java | 0 .../BuildingWithDefinitionRoomInMethod.java | 0 .../relationships/university/Department.java | 0 .../relationships/university/Professor.java | 0 .../relationships/university/University.java | 0 .../baeldung/deepcopy/DeepCopyUnitTest.java | 0 .../deepcopy/ShallowCopyUnitTest.java | 0 .../ImmutableObjectsUnitTest.java | 0 .../ActressUnitTest.java | 0 .../CompositionUnitTest.java | 0 .../InheritanceUnitTest.java | 0 .../PersonUnitTest.java | 0 .../WaitressUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 1 + 38 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/deepcopy/Address.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/deepcopy/User.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/immutableobjects/Currency.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/immutableobjects/Money.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/Person.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/aggregation/Car.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/aggregation/Wheel.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/association/Child.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/association/Mother.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/composition/Building.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/university/Department.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/university/Professor.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/main/java/com/baeldung/relationships/university/University.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-patterns}/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index fc5b5944f8..d482b0a78d 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -8,8 +8,6 @@ This module contains articles about Object-oriented programming (OOP) in Java - [Raw Types in Java](https://www.baeldung.com/raw-types-java) - [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) - [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) -- [Immutable Objects in Java](https://www.baeldung.com/java-immutable-object) -- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](https://www.baeldung.com/java-inheritance-composition) - [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) - [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) - [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index 3a0e588ad4..78725b0f02 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -8,7 +8,6 @@ This module contains articles about Object-oriented programming (OOP) in Java - [Guide to the super Java Keyword](https://www.baeldung.com/java-super) - [Guide to the this Java Keyword](https://www.baeldung.com/java-this) - [Java ‘public’ Access Modifier](https://www.baeldung.com/java-public-keyword) -- [Composition, Aggregation, and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) - [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) - [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/README.md new file mode 100644 index 0000000000..178a556a96 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/README.md @@ -0,0 +1,9 @@ +## Core Java Lang OOP - Patterns + +This module contains articles about Object-oriented programming (OOP) patterns in Java + +### Relevant Articles: +- [Composition, Aggregation, and Association in Java](https://www.baeldung.com/java-composition-aggregation-association) +- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](https://www.baeldung.com/java-inheritance-composition) +- [Immutable Objects in Java](https://www.baeldung.com/java-immutable-object) +- [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml new file mode 100644 index 0000000000..5bd3c70542 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml @@ -0,0 +1,45 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-patterns + core-java-lang-oop-patterns + jar + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.google.code.gson + gson + ${gson.version} + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + 2.8.2 + 3.10.0 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/deepcopy/Address.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/deepcopy/Address.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/deepcopy/User.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/deepcopy/User.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index c8bad11b13..ad86c1ef3c 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -16,5 +16,6 @@ core-java-lang-oop-constructors + core-java-lang-oop-patterns \ No newline at end of file From f23c60568c93f773dfa4d23cf86e218244b05217 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 09:29:47 +0200 Subject: [PATCH 100/157] [JAVA-621] core-java-lang-oop-generics module * Creation * Moved code from https://www.baeldung.com/raw-types-java * Moved code from https://www.baeldung.com/java-generic-constructors * Moved code from https://www.baeldung.com/java-type-erasure * Moved article references to the new README.md --- core-java-modules/core-java-lang-oop-2/README.md | 2 -- .../core-java-lang-oop-generics/README.md | 8 ++++++++ .../core-java-lang-oop-generics/pom.xml | 16 ++++++++++++++++ .../main/java/com/baeldung/generics/Entry.java | 0 .../java/com/baeldung/generics/GenericEntry.java | 0 .../java/com/baeldung/generics/MapEntry.java | 0 .../main/java/com/baeldung/generics/Product.java | 0 .../java/com/baeldung/generics/Rankable.java | 0 .../java/com/baeldung/rawtype/RawTypeDemo.java | 0 .../typeerasure/ArrayContentPrintUtil.java | 0 .../com/baeldung/typeerasure/BoundStack.java | 0 .../com/baeldung/typeerasure/IntegerStack.java | 0 .../java/com/baeldung/typeerasure/Stack.java | 0 .../generics/GenericConstructorUnitTest.java | 0 .../typeerasure/TypeErasureUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 1 + 16 files changed, 25 insertions(+), 2 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/generics/Entry.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/generics/GenericEntry.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/generics/MapEntry.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/generics/Product.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/generics/Rankable.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/rawtype/RawTypeDemo.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/typeerasure/BoundStack.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/typeerasure/IntegerStack.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/main/java/com/baeldung/typeerasure/Stack.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-generics}/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index d482b0a78d..8417c89c7a 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -3,9 +3,7 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: -- [Generic Constructors in Java](https://www.baeldung.com/java-generic-constructors) - [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) -- [Raw Types in Java](https://www.baeldung.com/raw-types-java) - [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) - [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) - [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/README.md new file mode 100644 index 0000000000..f0213c5659 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/README.md @@ -0,0 +1,8 @@ +## Core Java Lang OOP - Generics + +This module contains articles about generics in Java + +### Relevant Articles: +- [Generic Constructors in Java](https://www.baeldung.com/java-generic-constructors) +- [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) +- [Raw Types in Java](https://www.baeldung.com/raw-types-java) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml new file mode 100644 index 0000000000..167aa695e0 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml @@ -0,0 +1,16 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-generics + core-java-lang-oop-generics + jar + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/Entry.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/Entry.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/GenericEntry.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/GenericEntry.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/MapEntry.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/MapEntry.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/Product.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/Product.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/Rankable.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/generics/Rankable.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/rawtype/RawTypeDemo.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/rawtype/RawTypeDemo.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/BoundStack.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/BoundStack.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/IntegerStack.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/IntegerStack.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/Stack.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/typeerasure/Stack.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index ad86c1ef3c..c32e276a89 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -17,5 +17,6 @@ core-java-lang-oop-constructors core-java-lang-oop-patterns + core-java-lang-oop-generics \ No newline at end of file From 1ddd56978bb4af967f2b0c5d6e1bcb0e1146179e Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 09:42:08 +0200 Subject: [PATCH 101/157] [JAVA-621] core-java-lang-oop-modifiers module * Creation * Moved code from https://www.baeldung.com/java-static * Moved code from https://www.baeldung.com/java-final * Moved code from https://www.baeldung.com/java-public-keyword * Moved code from https://www.baeldung.com/java-access-modifiers * Moved code from https://www.baeldung.com/java-private-keyword * Moved code from https://www.baeldung.com/java-static-default-methods * Moved code from https://www.baeldung.com/java-strictfp * Moved article references to the new README.md --- .../core-java-lang-oop-2/README.md | 3 -- .../core-java-lang-oop-3/README.md | 2 -- .../core-java-lang-oop-modifiers/README.md | 12 +++++++ .../core-java-lang-oop-modifiers/pom.xml | 34 +++++++++++++++++++ .../com/baeldung/accessmodifiers/Public.java | 0 .../baeldung/accessmodifiers/SubClass.java | 0 .../baeldung/accessmodifiers/SuperPublic.java | 0 .../another/AnotherPublic.java | 0 .../another/AnotherSubClass.java | 0 .../another/AnotherSuperPublic.java | 0 .../publicmodifier/ListOfThree.java | 0 .../publicmodifier/SpecialCharacters.java | 0 .../publicmodifier/Student.java | 0 .../core/privatemodifier/Employee.java | 0 .../core/privatemodifier/ExampleClass.java | 0 .../privatemodifier/PublicOuterClass.java | 0 .../application/Application.java | 0 .../model/Alarm.java | 0 .../model/Car.java | 0 .../model/Motorbike.java | 0 .../model/MultiAlarmCar.java | 0 .../model/Vehicle.java | 0 .../com/baeldung/finalkeyword/BlackCat.java | 0 .../com/baeldung/finalkeyword/BlackDog.java | 0 .../java/com/baeldung/finalkeyword/Cat.java | 0 .../java/com/baeldung/finalkeyword/Dog.java | 0 .../java/com/baeldung/staticdemo/Car.java | 0 .../com/baeldung/staticdemo/Singleton.java | 0 .../com/baeldung/staticdemo/StaticBlock.java | 0 .../com/baeldung/strictfpUsage/Circle.java | 0 .../strictfpUsage/ScientificCalculator.java | 0 .../PublicAccessModifierUnitTest.java | 2 +- .../StaticDefaulInterfaceMethodUnitTest.java | 2 +- .../baeldung/finalkeyword/FinalUnitTest.java | 0 .../com/baeldung/staticdemo/CarUnitTest.java} | 2 +- .../staticdemo/SingletonUnitTest.java} | 2 +- .../staticdemo/StaticBlockUnitTest.java} | 2 +- .../ScientificCalculatorUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 1 + .../core-java-lang-oop/README.md | 2 -- 40 files changed, 52 insertions(+), 12 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/Public.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/SubClass.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/core/privatemodifier/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/finalkeyword/BlackCat.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/finalkeyword/BlackDog.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/finalkeyword/Cat.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/finalkeyword/Dog.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/staticdemo/Car.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/staticdemo/Singleton.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/staticdemo/StaticBlock.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/strictfpUsage/Circle.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java (100%) rename core-java-modules/{core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers => core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier}/PublicAccessModifierUnitTest.java (98%) rename core-java-modules/{core-java-lang-oop-2/src/test/java/com/baeldung/defaultistaticinterfacemethods => core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods}/test/StaticDefaulInterfaceMethodUnitTest.java (97%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java => core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java} (89%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java => core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java} (90%) rename core-java-modules/{core-java-lang-oop/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java => core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java} (91%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-modifiers}/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index 8417c89c7a..76da66c7ab 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -4,8 +4,5 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) -- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) - [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) -- [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) -- [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) - [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index 78725b0f02..3b57ece635 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -4,10 +4,8 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) -- [Access Modifiers in Java](https://www.baeldung.com/java-access-modifiers) - [Guide to the super Java Keyword](https://www.baeldung.com/java-super) - [Guide to the this Java Keyword](https://www.baeldung.com/java-this) -- [Java ‘public’ Access Modifier](https://www.baeldung.com/java-public-keyword) - [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) - [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/README.md new file mode 100644 index 0000000000..eef905fa0e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/README.md @@ -0,0 +1,12 @@ +## Core Java Lang OOP - Modifiers + +This module contains articles about modifiers in Java + +### Relevant Articles: +- [Access Modifiers in Java](https://www.baeldung.com/java-access-modifiers) +- [Java ‘public’ Access Modifier](https://www.baeldung.com/java-public-keyword) +- [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) +- [The “final” Keyword in Java](https://www.baeldung.com/java-final) +- [A Guide to the Static Keyword in Java](https://www.baeldung.com/java-static) +- [Static and Default Methods in Interfaces in Java](https://www.baeldung.com/java-static-default-methods) +- [The strictfp Keyword in Java](https://www.baeldung.com/java-strictfp) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml new file mode 100644 index 0000000000..11e0296266 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml @@ -0,0 +1,34 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-modifiers + core-java-lang-oop-modifiers + jar + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + com.h2database + h2 + ${h2.version} + test + + + + + 3.10.0 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/core/privatemodifier/Employee.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/core/privatemodifier/Employee.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/BlackCat.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/BlackCat.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/BlackDog.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/BlackDog.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/Cat.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/Cat.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/Dog.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/finalkeyword/Dog.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/staticdemo/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/staticdemo/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/staticdemo/Singleton.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/staticdemo/Singleton.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/staticdemo/StaticBlock.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/staticdemo/StaticBlock.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/strictfpUsage/Circle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/strictfpUsage/Circle.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java similarity index 98% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java index ed8fb4f45a..c2897e7434 100644 --- a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.accessmodifiers; +package com.baeldung.accessmodifiers.publicmodifier; import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; import com.baeldung.accessmodifiers.publicmodifier.Student; diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java similarity index 97% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java index 7d4b06908a..e90f239756 100644 --- a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/defaultistaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.defaultistaticinterfacemethods.test; +package com.baeldung.defaultstaticinterfacemethods.test; import com.baeldung.defaultstaticinterfacemethods.model.Car; import com.baeldung.defaultstaticinterfacemethods.model.Motorbike; diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java similarity index 89% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java index 3150627269..3deec6f41c 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/CarIntegrationTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java @@ -4,7 +4,7 @@ import static org.junit.Assert.*; import org.junit.Test; -public class CarIntegrationTest { +public class CarUnitTest { @Test public void whenNumberOfCarObjectsInitialized_thenStaticCounterIncreases() { new Car("Jaguar", "V8"); diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java similarity index 90% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java index 28d864073a..c1a1e1abe4 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/SingletonIntegrationTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java @@ -3,7 +3,7 @@ package com.baeldung.staticdemo; import org.junit.Assert; import org.junit.Test; -public class SingletonIntegrationTest { +public class SingletonUnitTest { @Test public void givenStaticInnerClass_whenMultipleTimesInstanceCalled_thenOnlyOneTimeInitialized() { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java similarity index 91% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java index f98e3e14db..79ba4427bf 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/staticdemo/StaticBlockIntegrationTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java @@ -7,7 +7,7 @@ import java.util.List; import org.junit.Test; -public class StaticBlockIntegrationTest { +public class StaticBlockUnitTest { @Test public void whenAddedListElementsThroughStaticBlock_thenEnsureCorrectOrder() { diff --git a/core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index c32e276a89..a77079bc06 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -18,5 +18,6 @@ core-java-lang-oop-constructors core-java-lang-oop-patterns core-java-lang-oop-generics + core-java-lang-oop-modifiers \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index 2be3d0cab1..c09ed6048d 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -4,13 +4,11 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) -- [A Guide to the Static Keyword in Java](https://www.baeldung.com/java-static) - [Polymorphism in Java](https://www.baeldung.com/java-polymorphism) - [Method Overloading and Overriding in Java](https://www.baeldung.com/java-method-overload-override) - [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) - [Guide to Inheritance in Java](https://www.baeldung.com/java-inheritance) - [Object Type Casting in Java](https://www.baeldung.com/java-type-casting) -- [The “final” Keyword in Java](https://www.baeldung.com/java-final) - [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) - [Variable and Method Hiding in Java](https://www.baeldung.com/java-variable-method-hiding) - [Object-Oriented-Programming Concepts in Java](https://www.baeldung.com/java-oop) From a6846bb1caa9f52e80141ca778c7561c5965ba35 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 10:18:15 +0200 Subject: [PATCH 102/157] [JAVA-621] core-java-lang-oop-types module * Creation * Moved code from https://www.baeldung.com/java-marker-interfaces * Moved code from https://www.baeldung.com/java-abstract-class * Moved code from https://www.baeldung.com/java-this * Moved code from https://www.baeldung.com/java-nested-classes * Moved code from https://www.baeldung.com/java-inner-interfaces * Moved code from https://www.baeldung.com/java-classes-objects * Moved article references to the new README.md --- .../core-java-lang-oop-3/README.md | 4 --- .../com/baeldung/keyword/KeywordDemo.java | 3 -- .../core-java-lang-oop-types/README.md | 11 ++++++++ .../core-java-lang-oop-types/pom.xml | 28 +++++++++++++++++++ .../application/Application.java | 0 .../filereaders/BaseFileReader.java | 0 .../filereaders/LowercaseFileReader.java | 0 .../filereaders/UppercaseFileReader.java | 0 .../CommaSeparatedCustomers.java | 0 .../baeldung/innerinterfaces/Customer.java | 0 .../keyword/thiskeyword/KeywordUnitTest.java | 0 .../markerinterface/DeletableShape.java | 0 .../baeldung/markerinterface/Rectangle.java | 0 .../com/baeldung/markerinterface/Shape.java | 0 .../baeldung/markerinterface/ShapeDao.java | 0 .../main/java/com/baeldung/objects/Car.java | 0 .../src/main/resources/files/test.txt | 10 +++++++ .../test/LowercaseFileReaderUnitTest.java | 0 .../test/UppercaseFileReaderUnitTest.java | 0 .../InnerInterfaceUnitTest.java | 0 .../MarkerInterfaceUnitTest.java | 0 .../baeldung/nestedclass/AnonymousInner.java | 0 .../com/baeldung/nestedclass/Enclosing.java | 0 .../baeldung/nestedclass/NewEnclosing.java | 0 .../com/baeldung/nestedclass/NewOuter.java | 0 .../java/com/baeldung/nestedclass/Outer.java | 0 .../com/baeldung/objects/ObjectsUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 1 + 28 files changed, 50 insertions(+), 7 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/abstractclasses/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/innerinterfaces/Customer.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/markerinterface/DeletableShape.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/markerinterface/Rectangle.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/markerinterface/Shape.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/markerinterface/ShapeDao.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/main/java/com/baeldung/objects/Car.java (100%) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/resources/files/test.txt rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/nestedclass/AnonymousInner.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/nestedclass/Enclosing.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/nestedclass/NewEnclosing.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/nestedclass/NewOuter.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/nestedclass/Outer.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-types}/src/test/java/com/baeldung/objects/ObjectsUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index 3b57ece635..0c9faf9a6d 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -5,9 +5,5 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) - [Guide to the super Java Keyword](https://www.baeldung.com/java-super) -- [Guide to the this Java Keyword](https://www.baeldung.com/java-this) -- [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) -- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) -- [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) - [Java Interfaces](https://www.baeldung.com/java-interfaces) - [[<-- Prev]](/core-java-modules/core-java-lang-oop-2)[[More -->]](/core-java-modules/core-java-lang-oop-4) diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java index fd608b424c..ed421a9089 100644 --- a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java +++ b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java @@ -1,7 +1,6 @@ package com.baeldung.keyword; import com.baeldung.keyword.superkeyword.SuperSub; -import com.baeldung.keyword.thiskeyword.KeywordUnitTest; /** * Created by Gebruiker on 5/14/2018. @@ -9,8 +8,6 @@ import com.baeldung.keyword.thiskeyword.KeywordUnitTest; public class KeywordDemo { public static void main(String[] args) { - KeywordUnitTest keyword = new KeywordUnitTest(); - SuperSub child = new SuperSub("message from the child class"); } } diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md new file mode 100644 index 0000000000..330a74be9b --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md @@ -0,0 +1,11 @@ +## Core Java Lang OOP - Types + +This module contains articles about types in Java + +### Relevant Articles: +- [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) +- [Guide to the this Java Keyword](https://www.baeldung.com/java-this) +- [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) +- [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) +- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) +- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml new file mode 100644 index 0000000000..ce6b74bd3e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml @@ -0,0 +1,28 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-types + core-java-lang-oop-types + jar + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + 3.10.0 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/application/Application.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/application/Application.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/innerinterfaces/Customer.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/Customer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/innerinterfaces/Customer.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/Customer.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/objects/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/objects/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/resources/files/test.txt b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/resources/files/test.txt new file mode 100644 index 0000000000..08e53af69d --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/resources/files/test.txt @@ -0,0 +1,10 @@ +This is line 1 +This is line 2 +This is line 3 +This is line 4 +This is line 5 +This is line 6 +This is line 7 +This is line 8 +This is line 9 +This is line 10 \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/AnonymousInner.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/AnonymousInner.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/Enclosing.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/Enclosing.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/NewEnclosing.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/NewEnclosing.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/NewOuter.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/NewOuter.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/Outer.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/nestedclass/Outer.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/objects/ObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/objects/ObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index a77079bc06..a443c0cb29 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -19,5 +19,6 @@ core-java-lang-oop-patterns core-java-lang-oop-generics core-java-lang-oop-modifiers + core-java-lang-oop-types \ No newline at end of file From 654de59bbf3dfb84961991882826bf150429fc55 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 11:09:04 +0200 Subject: [PATCH 103/157] [JAVA-621] core-java-lang-oop-inheritance module * Creation * Moved code from https://www.baeldung.com/java-anonymous-classes * Moved code from www.baeldung.com/java-polymorphism * Moved code from www.baeldung.com/java-inheritance * Moved code from www.baeldung.com/java-variable-method-hiding * Moved code from https://www.baeldung.com/java-type-casting * Moved code from https://www.baeldung.com/java-super * Moved code from www.baeldung.com/java-interfaces * Moved code from www.baeldung.com/java-abstract-class * Moved code from www.baeldung.com/java-inner-interfaces * Moved article references to the new README.md --- .../core-java-lang-oop-2/README.md | 1 - .../core-java-lang-oop-3/README.md | 2 -- .../core-java-lang-oop-inheritance/README.md | 14 ++++++++++ .../core-java-lang-oop-inheritance/pom.xml | 28 +++++++++++++++++++ .../application/Application.java | 0 .../filereaders/BaseFileReader.java | 0 .../filereaders/LowercaseFileReader.java | 0 .../filereaders/UppercaseFileReader.java | 0 .../java/com/baeldung/anonymous/Book.java | 0 .../java/com/baeldung/anonymous/Main.java | 0 .../java/com/baeldung/casting/Animal.java | 0 .../com/baeldung/casting/AnimalFeeder.java | 0 .../baeldung/casting/AnimalFeederGeneric.java | 0 .../main/java/com/baeldung/casting/Cat.java | 0 .../main/java/com/baeldung/casting/Dog.java | 0 .../main/java/com/baeldung/casting/Mew.java | 0 .../com/baeldung/inheritance/ArmoredCar.java | 0 .../java/com/baeldung/inheritance/BMW.java | 0 .../java/com/baeldung/inheritance/Car.java | 0 .../com/baeldung/inheritance/Employee.java | 0 .../com/baeldung/inheritance/Floatable.java | 0 .../com/baeldung/inheritance/Flyable.java | 0 .../com/baeldung/inheritance/SpaceCar.java | 0 .../baeldung/inheritance/SpaceTraveller.java | 0 .../CommaSeparatedCustomers.java | 0 .../baeldung/innerinterfaces/Customer.java | 0 .../java/com/baeldung/interfaces/Box.java | 0 .../com/baeldung/interfaces/Employee.java | 0 .../interfaces/EmployeeSalaryComparator.java | 0 .../com/baeldung/interfaces/HasColor.java | 0 .../interfaces/multiinheritance/Car.java | 0 .../interfaces/multiinheritance/Fly.java | 0 .../multiinheritance/Transform.java | 0 .../interfaces/multiinheritance/Vehicle.java | 0 .../interfaces/polymorphysim/Circle.java | 0 .../polymorphysim/MainTestClass.java | 0 .../interfaces/polymorphysim/Shape.java | 0 .../interfaces/polymorphysim/Square.java | 0 .../keyword/superkeyword}/KeywordDemo.java | 4 +-- .../keyword/superkeyword/SuperBase.java | 0 .../keyword/superkeyword/SuperSub.java | 0 .../baeldung/polymorphism/FileManager.java | 0 .../baeldung/polymorphism/GenericFile.java | 0 .../com/baeldung/polymorphism/ImageFile.java | 0 .../com/baeldung/polymorphism/TextFile.java | 0 .../scope/method/BaseMethodClass.java | 0 .../scope/method/ChildMethodClass.java | 0 .../scope/method/MethodHidingDemo.java | 0 .../scope/variable/ChildVariable.java | 0 .../baeldung/scope/variable/HideVariable.java | 0 .../scope/variable/ParentVariable.java | 0 .../scope/variable/VariableHidingDemo.java | 0 .../src/main/resources/files/test.txt | 0 .../test/LowercaseFileReaderUnitTest.java | 0 .../test/UppercaseFileReaderUnitTest.java | 0 .../com/baeldung/casting/CastingUnitTest.java | 0 .../com/baeldung/inheritance/AppUnitTest.java | 0 .../InnerInterfaceUnitTest.java | 0 .../polymorphism/PolymorphismUnitTest.java | 0 .../core-java-lang-oop-types/README.md | 2 -- .../core-java-lang-oop-types/pom.xml | 13 --------- .../core-java-lang-oop-modules/pom.xml | 1 + .../core-java-lang-oop/README.md | 4 --- 63 files changed, 44 insertions(+), 25 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/java/com/baeldung/abstractclasses/application/Application.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/anonymous/Book.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/anonymous/Main.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/casting/Animal.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/casting/AnimalFeeder.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/casting/Cat.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/casting/Dog.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/casting/Mew.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/ArmoredCar.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/BMW.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/Car.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/Employee.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/Floatable.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/Flyable.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/SpaceCar.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/inheritance/SpaceTraveller.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/java/com/baeldung/innerinterfaces/Customer.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/Box.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/HasColor.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java (100%) rename core-java-modules/{core-java-lang-oop-3/src/main/java/com/baeldung/keyword => core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword}/KeywordDemo.java (70%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/polymorphism/FileManager.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/polymorphism/GenericFile.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/polymorphism/ImageFile.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/polymorphism/TextFile.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/method/BaseMethodClass.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/method/ChildMethodClass.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/variable/ChildVariable.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/variable/HideVariable.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/variable/ParentVariable.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/main/resources/files/test.txt (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/test/java/com/baeldung/casting/CastingUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/test/java/com/baeldung/inheritance/AppUnitTest.java (100%) rename core-java-modules/core-java-lang-oop-modules/{core-java-lang-oop-types => core-java-lang-oop-inheritance}/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-inheritance}/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index 76da66c7ab..2f122ab624 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -3,6 +3,5 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: -- [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) - [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) - [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md index 0c9faf9a6d..2d9085c036 100644 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -4,6 +4,4 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) -- [Guide to the super Java Keyword](https://www.baeldung.com/java-super) -- [Java Interfaces](https://www.baeldung.com/java-interfaces) - [[<-- Prev]](/core-java-modules/core-java-lang-oop-2)[[More -->]](/core-java-modules/core-java-lang-oop-4) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/README.md new file mode 100644 index 0000000000..e264f9fae4 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/README.md @@ -0,0 +1,14 @@ +## Core Java Lang OOP - Types + +This module contains articles about types in Java + +### Relevant Articles: +- [Java Interfaces](https://www.baeldung.com/java-interfaces) +- [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) +- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) +- [Guide to the super Java Keyword](https://www.baeldung.com/java-super) +- [Anonymous Classes in Java](https://www.baeldung.com/java-anonymous-classes) +- [Polymorphism in Java](https://www.baeldung.com/java-polymorphism) +- [Guide to Inheritance in Java](https://www.baeldung.com/java-inheritance) +- [Object Type Casting in Java](https://www.baeldung.com/java-type-casting) +- [Variable and Method Hiding in Java](https://www.baeldung.com/java-variable-method-hiding) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml new file mode 100644 index 0000000000..8e7e8e374d --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml @@ -0,0 +1,28 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-inheritance + core-java-lang-oop-inheritance + jar + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + 3.10.0 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/application/Application.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/application/Application.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/anonymous/Book.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/anonymous/Book.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/anonymous/Main.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/anonymous/Main.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Animal.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Animal.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/AnimalFeeder.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/AnimalFeeder.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Cat.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Cat.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Dog.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Dog.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Mew.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/casting/Mew.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/ArmoredCar.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/ArmoredCar.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/BMW.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/BMW.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Employee.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Employee.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Floatable.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Floatable.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Flyable.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/Flyable.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/SpaceCar.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/SpaceCar.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/SpaceTraveller.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritance/SpaceTraveller.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/Customer.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/innerinterfaces/Customer.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/Box.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/Box.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/Employee.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/Employee.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/HasColor.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/HasColor.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java similarity index 70% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java index ed421a9089..7414e52b1c 100644 --- a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java @@ -1,6 +1,4 @@ -package com.baeldung.keyword; - -import com.baeldung.keyword.superkeyword.SuperSub; +package com.baeldung.keyword.superkeyword; /** * Created by Gebruiker on 5/14/2018. diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/FileManager.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/FileManager.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/GenericFile.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/GenericFile.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/ImageFile.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/ImageFile.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/TextFile.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/polymorphism/TextFile.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/method/BaseMethodClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/method/BaseMethodClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/method/ChildMethodClass.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/method/ChildMethodClass.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/ChildVariable.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/ChildVariable.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/HideVariable.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/HideVariable.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/ParentVariable.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/ParentVariable.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/resources/files/test.txt b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/resources/files/test.txt similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/resources/files/test.txt rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/resources/files/test.txt diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/casting/CastingUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/casting/CastingUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritance/AppUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritance/AppUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md index 330a74be9b..80344c70fa 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md @@ -5,7 +5,5 @@ This module contains articles about types in Java ### Relevant Articles: - [Java Classes and Objects](https://www.baeldung.com/java-classes-objects) - [Guide to the this Java Keyword](https://www.baeldung.com/java-this) -- [Abstract Classes in Java](https://www.baeldung.com/java-abstract-class) - [Nested Classes in Java](https://www.baeldung.com/java-nested-classes) -- [A Guide to Inner Interfaces in Java](https://www.baeldung.com/java-inner-interfaces) - [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml index ce6b74bd3e..156ff89ccd 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml @@ -12,17 +12,4 @@ core-java-lang-oop-types core-java-lang-oop-types jar - - - - org.assertj - assertj-core - ${assertj-core.version} - test - - - - - 3.10.0 - \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index a443c0cb29..3f33150424 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -20,5 +20,6 @@ core-java-lang-oop-generics core-java-lang-oop-modifiers core-java-lang-oop-types + core-java-lang-oop-inheritance \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index c09ed6048d..7855fb7b7e 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -4,12 +4,8 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) -- [Polymorphism in Java](https://www.baeldung.com/java-polymorphism) - [Method Overloading and Overriding in Java](https://www.baeldung.com/java-method-overload-override) - [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) -- [Guide to Inheritance in Java](https://www.baeldung.com/java-inheritance) -- [Object Type Casting in Java](https://www.baeldung.com/java-type-casting) - [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) -- [Variable and Method Hiding in Java](https://www.baeldung.com/java-variable-method-hiding) - [Object-Oriented-Programming Concepts in Java](https://www.baeldung.com/java-oop) - [[More -->]](/core-java-modules/core-java-lang-oop-2) From b1e507d44c3c44d2b1625d27a75dc4726926b38e Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 11:38:22 +0200 Subject: [PATCH 104/157] [JAVA-621] core-java-lang-oop-methods module * Creation * Moved code from https://www.baeldung.com/java-equals-hashcode-contracts * Moved code from www.baeldung.com/java-hashcode * Moved code from https://www.baeldung.com/java-method-overload-override * Moved code from www.baeldung.com/java-methods * Moved article references to the new README.md --- .../core-java-lang-oop-2/README.md | 1 - .../core-java-lang-oop-4/README.md | 1 - .../core-java-lang-oop-methods/README.md | 9 +++++ .../core-java-lang-oop-methods/pom.xml | 35 +++++++++++++++++++ .../com/baeldung/basicmethods/PersonName.java | 0 .../com/baeldung/equalshashcode/Money.java | 0 .../com/baeldung/equalshashcode/Team.java | 0 .../com/baeldung/equalshashcode/Voucher.java | 0 .../baeldung/equalshashcode/WrongTeam.java | 0 .../baeldung/equalshashcode/WrongVoucher.java | 0 .../com/baeldung/hashcode/entities/User.java | 0 .../application/Application.java | 0 .../model/Car.java | 0 .../model/Vehicle.java | 0 .../util/Multiplier.java | 0 .../equalshashcode/MoneyUnitTest.java | 0 .../baeldung/equalshashcode/TeamUnitTest.java | 0 .../application/ApplicationUnitTest.java | 0 .../hashcode/entities/UserUnitTest.java | 0 .../test/MethodOverloadingUnitTest.java | 0 .../test/MethodOverridingUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 1 + .../core-java-lang-oop/README.md | 2 -- 23 files changed, 45 insertions(+), 4 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/basicmethods/PersonName.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/equalshashcode/Money.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/equalshashcode/Team.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/equalshashcode/Voucher.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/equalshashcode/WrongTeam.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/hashcode/entities/User.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop => core-java-lang-oop-modules/core-java-lang-oop-methods}/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md index 2f122ab624..5385977ef0 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -3,5 +3,4 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: -- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) - [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) diff --git a/core-java-modules/core-java-lang-oop-4/README.md b/core-java-modules/core-java-lang-oop-4/README.md index 51650dc1f6..efddf9df8a 100644 --- a/core-java-modules/core-java-lang-oop-4/README.md +++ b/core-java-modules/core-java-lang-oop-4/README.md @@ -4,6 +4,5 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) -- [Methods in Java](https://www.baeldung.com/java-methods) - [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) - [[<-- Prev]](/core-java-modules/core-java-lang-oop-3) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/README.md new file mode 100644 index 0000000000..fa474c9795 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/README.md @@ -0,0 +1,9 @@ +## Core Java Lang OOP - Methods + +This module contains articles about methods in Java + +### Relevant Articles: +- [Methods in Java](https://www.baeldung.com/java-methods) +- [Method Overloading and Overriding in Java](https://www.baeldung.com/java-method-overload-override) +- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) +- [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml new file mode 100644 index 0000000000..062af9c3cd --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml @@ -0,0 +1,35 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-methods + core-java-lang-oop-methods + jar + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + nl.jqno.equalsverifier + equalsverifier + ${equalsverifier.version} + test + + + + + 3.10.0 + 3.0.3 + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/basicmethods/PersonName.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/basicmethods/PersonName.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/hashcode/entities/User.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/hashcode/entities/User.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index 3f33150424..369195d477 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -21,5 +21,6 @@ core-java-lang-oop-modifiers core-java-lang-oop-types core-java-lang-oop-inheritance + core-java-lang-oop-methods \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index 7855fb7b7e..f7e00e44eb 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -3,8 +3,6 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: -- [Guide to hashCode() in Java](https://www.baeldung.com/java-hashcode) -- [Method Overloading and Overriding in Java](https://www.baeldung.com/java-method-overload-override) - [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) - [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) - [Object-Oriented-Programming Concepts in Java](https://www.baeldung.com/java-oop) From f6d3dc711fde92b6f05bc2aaad029baf8e7c0b6f Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 12:05:22 +0200 Subject: [PATCH 105/157] [JAVA-621] core-java-lang-oop-others module * Creation * Moved code from www.baeldung.com/java-static-dynamic-binding * Recreated code for https://www.baeldung.com/java-oop as none was matching anymore * Moved code from https://www.baeldung.com/java-pass-by-value-or-pass-by-reference * Moved article references to the new README.md --- .../core-java-lang-oop-others/README.md | 8 +++ .../core-java-lang-oop-others/pom.xml | 16 +++++ .../java/com/baeldung/binding/Animal.java | 0 .../com/baeldung/binding/AnimalActivity.java | 4 +- .../main/java/com/baeldung/binding/Dog.java} | 4 +- .../java/com/baeldung/oop/ArmoredCar.java | 13 ++++ .../src/main/java/com/baeldung/oop/Car.java | 58 +++++++++++++++++ .../java/com/baeldung/oop/GenericFile.java | 63 +++++++++++++++++++ .../main/java/com/baeldung/oop/ImageFile.java | 41 ++++++++++++ .../main/java/com/baeldung/oop/TextFile.java | 44 +++++++++++++ .../main/java/com/baeldung/oop/Vehicle.java | 23 +++++++ .../parameterpassing/NonPrimitives.java | 0 .../baeldung/parameterpassing/Primitives.java | 0 .../binding/AnimalActivityUnitTest.java | 6 +- .../com/baeldung/binding/AnimalUnitTest.java | 0 .../com/baeldung/binding/DogUnitTest.java} | 6 +- .../NonPrimitivesUnitTest.java | 0 .../parameterpassing/PrimitivesUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 1 + .../core-java-lang-oop/README.md | 1 - 20 files changed, 277 insertions(+), 11 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/README.md create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/main/java/com/baeldung/binding/Animal.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/main/java/com/baeldung/binding/AnimalActivity.java (90%) rename core-java-modules/{core-java-lang-oop-4/src/main/java/com/baeldung/binding/Cat.java => core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java} (68%) create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java create mode 100644 core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/main/java/com/baeldung/parameterpassing/Primitives.java (100%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java (96%) rename core-java-modules/{core-java-lang-oop-4 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/test/java/com/baeldung/binding/AnimalUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-4/src/test/java/com/baeldung/binding/CatUnitTest.java => core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java} (94%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-3 => core-java-lang-oop-modules/core-java-lang-oop-others}/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/README.md b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/README.md new file mode 100644 index 0000000000..d3909c0014 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/README.md @@ -0,0 +1,8 @@ +## Core Java Lang OOP - Others + +This module contains articles about Object Oriented Programming (OOP) in Java + +### Relevant Articles: +- [Object-Oriented-Programming Concepts in Java](https://www.baeldung.com/java-oop) +- [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) +- [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml new file mode 100644 index 0000000000..21699cd582 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml @@ -0,0 +1,16 @@ + + + + core-java-lang-oop-modules + com.baeldung.core-java-lang-oop-modules + 1.0.0-SNAPSHOT + + 4.0.0 + + core-java-lang-oop-others + core-java-lang-oop-others + jar + + \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/Animal.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/Animal.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/AnimalActivity.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java similarity index 90% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/AnimalActivity.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java index 1bd36123e3..a30c3acd00 100644 --- a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/AnimalActivity.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java @@ -15,7 +15,7 @@ public class AnimalActivity { logger.info("Animal is sleeping"); } - public static void sleep(Cat cat) { + public static void sleep(Dog dog) { logger.info("Cat is sleeping"); } @@ -30,7 +30,7 @@ public class AnimalActivity { //assigning a dog object to reference of type Animal - Animal catAnimal = new Cat(); + Animal catAnimal = new Dog(); catAnimal.makeNoise(); diff --git a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/Cat.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java similarity index 68% rename from core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/Cat.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java index bbe740e412..b6924569d0 100644 --- a/core-java-modules/core-java-lang-oop-4/src/main/java/com/baeldung/binding/Cat.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java @@ -6,9 +6,9 @@ import org.slf4j.LoggerFactory; /** * Created by madhumita.g on 25-07-2018. */ -public class Cat extends Animal { +public class Dog extends Animal { - final static Logger logger = LoggerFactory.getLogger(Cat.class); + final static Logger logger = LoggerFactory.getLogger(Dog.class); public void makeNoise() { diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java new file mode 100644 index 0000000000..29cba3702a --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java @@ -0,0 +1,13 @@ +package com.baeldung.oop; + +public class ArmoredCar extends Car { + private int bulletProofWindows; + + public ArmoredCar(String type, String model, String color) { + super(type, model, color); + } + + public void remoteStartCar() { + // this vehicle can be started by using a remote control + } +} diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java new file mode 100644 index 0000000000..8ea4d779b6 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java @@ -0,0 +1,58 @@ +package com.baeldung.oop; + +public class Car extends Vehicle { + + private String type; + private String color; + private int speed; + private int numberOfGears; + + public Car(String type, String model, String color) { + super(4, model); + this.type = type; + this.color = color; + } + + public String getColor() { + return color; + } + + public void setColor(String color) { + this.color = color; + } + + public int getSpeed() { + return speed; + } + + public void setSpeed(int speed) { + this.speed = speed; + } + + public int increaseSpeed(int increment) { + if (increment > 0) { + this.speed += increment; + } else { + System.out.println("Increment can't be negative."); + } + return this.speed; + } + + public int decreaseSpeed(int decrement) { + if (decrement > 0 && decrement <= this.speed) { + this.speed -= decrement; + } else { + System.out.println("Decrement can't be negative or greater than current speed."); + } + return this.speed; + } + + public void openDoors() { + // process to open the doors + } + + @Override + public void honk() { + // produces car-specific honk + } +} diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java new file mode 100644 index 0000000000..812a3f1d63 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java @@ -0,0 +1,63 @@ +package com.baeldung.oop; + +import java.util.Date; + +public class GenericFile { + private String name; + private String extension; + private Date dateCreated; + private String version; + private byte[] content; + + public GenericFile() { + this.setDateCreated(new Date()); + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getExtension() { + return extension; + } + + public void setExtension(String extension) { + this.extension = extension; + } + + public Date getDateCreated() { + return dateCreated; + } + + public void setDateCreated(Date dateCreated) { + this.dateCreated = dateCreated; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public byte[] getContent() { + return content; + } + + public void setContent(byte[] content) { + this.content = content; + } + + public String getFileInfo() { + return "Generic File Impl"; + } + + public Object read() { + return content; + } +} diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java new file mode 100644 index 0000000000..2e2b9b4129 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java @@ -0,0 +1,41 @@ +package com.baeldung.oop; + +public class ImageFile extends GenericFile { + private int height; + private int width; + + public ImageFile(String name, int height, int width, byte[] content, String version) { + this.setHeight(height); + this.setWidth(width); + this.setContent(content); + this.setName(name); + this.setVersion(version); + this.setExtension(".jpg"); + } + + public int getHeight() { + return height; + } + + public void setHeight(int height) { + this.height = height; + } + + public int getWidth() { + return width; + } + + public void setWidth(int width) { + this.width = width; + } + + public String getFileInfo() { + return "Image File Impl"; + } + + public String read() { + return this.getContent() + .toString(); + } + +} diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java new file mode 100644 index 0000000000..0d7b8e4192 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java @@ -0,0 +1,44 @@ +package com.baeldung.oop; + +public class TextFile extends GenericFile { + private int wordCount; + + public TextFile(String name, String content, String version) { + String[] words = content.split(" "); + this.setWordCount(words.length > 0 ? words.length : 1); + this.setContent(content.getBytes()); + this.setName(name); + this.setVersion(version); + this.setExtension(".txt"); + } + + public int getWordCount() { + return wordCount; + } + + public void setWordCount(int wordCount) { + this.wordCount = wordCount; + } + + public String getFileInfo() { + return "Text File Impl"; + } + + public String read() { + return this.getContent() + .toString(); + } + + public String read(int limit) { + return this.getContent() + .toString() + .substring(0, limit); + } + + public String read(int start, int stop) { + return this.getContent() + .toString() + .substring(start, stop); + } + +} diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java new file mode 100644 index 0000000000..d5ef05bc31 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java @@ -0,0 +1,23 @@ +package com.baeldung.oop; + +public class Vehicle { + private int wheels; + private String model; + + public Vehicle(int wheels, String model) { + this.wheels = wheels; + this.model = model; + } + + public void start() { + // the process of starting the vehicle + } + + public void stop() { + // process to stop the vehicle + } + + public void honk() { + // produces a default honk + } +} diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java diff --git a/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/parameterpassing/Primitives.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/parameterpassing/Primitives.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java diff --git a/core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java index 41c67ff389..6ef9b51818 100644 --- a/core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java @@ -62,9 +62,9 @@ public class AnimalActivityUnitTest { @Test public void givenDogReference__whenRefersCatObject_shouldCallFunctionWithAnimalParam() { - Cat cat = new Cat(); + Dog dog = new Dog(); - AnimalActivity.sleep(cat); + AnimalActivity.sleep(dog); verify(mockAppender).doAppend(captorLoggingEvent.capture()); @@ -79,7 +79,7 @@ public class AnimalActivityUnitTest { @Test public void givenAnimaReference__whenRefersDogObject_shouldCallFunctionWithAnimalParam() { - Animal cat = new Cat(); + Animal cat = new Dog(); AnimalActivity.sleep(cat); diff --git a/core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/AnimalUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/AnimalUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/CatUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/CatUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java index 76ccfb7719..977c5d65e6 100644 --- a/core-java-modules/core-java-lang-oop-4/src/test/java/com/baeldung/binding/CatUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.verify; * Created by madhumita.g on 01-08-2018. */ @RunWith(MockitoJUnitRunner.class) -public class CatUnitTest { +public class DogUnitTest { @Mock private Appender mockAppender; @@ -45,9 +45,9 @@ public class CatUnitTest { @Test public void makeNoiseTest() { - Cat cat = new Cat(); + Dog dog = new Dog(); - cat.makeNoise(); + dog.makeNoise(); verify(mockAppender).doAppend(captorLoggingEvent.capture()); diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml index 369195d477..39dfe16b17 100644 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ b/core-java-modules/core-java-lang-oop-modules/pom.xml @@ -22,5 +22,6 @@ core-java-lang-oop-types core-java-lang-oop-inheritance core-java-lang-oop-methods + core-java-lang-oop-others \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index f7e00e44eb..1af957b532 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -5,5 +5,4 @@ This module contains articles about Object-oriented programming (OOP) in Java ### Relevant Articles: - [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) - [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) -- [Object-Oriented-Programming Concepts in Java](https://www.baeldung.com/java-oop) - [[More -->]](/core-java-modules/core-java-lang-oop-2) From fc303de35fd62000f901db6608c2d708abd6ea0d Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 4 Apr 2020 12:24:39 +0200 Subject: [PATCH 106/157] [JAVA-621] Obsolete modules deletion * Delete core-java-lang-oop module (remaining code was duplicate of core-java-lang-syntax where it really belonged) * Moved code from https://www.baeldung.com/java-eclipse-equals-and-hashcode to core-java-lang where it belong * Delete core-java-lang-oop-2 module * Delete core-java-lang-oop-3 module * Delete core-java-lang-oop-4 module --- .../core-java-lang-oop-2/.gitignore | 4 -- .../core-java-lang-oop-2/README.md | 6 -- .../core-java-lang-oop-2/pom.xml | 51 --------------- .../src/main/resources/files/test.txt | 10 --- .../core-java-lang-oop-3/README.md | 7 --- .../core-java-lang-oop-3/pom.xml | 60 ------------------ .../core-java-lang-oop-4/README.md | 8 --- .../core-java-lang-oop-4/pom.xml | 60 ------------------ .../core-java-lang-oop/.gitignore | 26 -------- .../core-java-lang-oop/README.md | 8 --- core-java-modules/core-java-lang-oop/pom.xml | 62 ------------------- .../baeldung/initializationguide/User.java | 53 ---------------- .../src/main/resources/logback.xml | 19 ------ .../initializationguide/UserUnitTest.java | 37 ----------- .../src/test/resources/.gitignore | 13 ---- .../equalshashcode/entities/ComplexClass.java | 0 .../entities/PrimitiveClass.java | 0 .../equalshashcode/entities/Rectangle.java | 0 .../equalshashcode/entities/Shape.java | 0 .../equalshashcode/entities/Square.java | 0 .../entities/ComplexClassUnitTest.java | 0 .../entities/PrimitiveClassUnitTest.java | 0 .../entities/SquareClassUnitTest.java | 0 core-java-modules/pom.xml | 4 -- 24 files changed, 428 deletions(-) delete mode 100644 core-java-modules/core-java-lang-oop-2/.gitignore delete mode 100644 core-java-modules/core-java-lang-oop-2/README.md delete mode 100644 core-java-modules/core-java-lang-oop-2/pom.xml delete mode 100644 core-java-modules/core-java-lang-oop-2/src/main/resources/files/test.txt delete mode 100644 core-java-modules/core-java-lang-oop-3/README.md delete mode 100644 core-java-modules/core-java-lang-oop-3/pom.xml delete mode 100644 core-java-modules/core-java-lang-oop-4/README.md delete mode 100644 core-java-modules/core-java-lang-oop-4/pom.xml delete mode 100644 core-java-modules/core-java-lang-oop/.gitignore delete mode 100644 core-java-modules/core-java-lang-oop/README.md delete mode 100644 core-java-modules/core-java-lang-oop/pom.xml delete mode 100644 core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/initializationguide/User.java delete mode 100644 core-java-modules/core-java-lang-oop/src/main/resources/logback.xml delete mode 100644 core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/initializationguide/UserUnitTest.java delete mode 100644 core-java-modules/core-java-lang-oop/src/test/resources/.gitignore rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/Shape.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/main/java/com/baeldung/equalshashcode/entities/Square.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-2 => core-java-lang}/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-2/.gitignore b/core-java-modules/core-java-lang-oop-2/.gitignore deleted file mode 100644 index 36aba1c242..0000000000 --- a/core-java-modules/core-java-lang-oop-2/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -target/ -.idea/ -bin/ -*.iml \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-2/README.md b/core-java-modules/core-java-lang-oop-2/README.md deleted file mode 100644 index 5385977ef0..0000000000 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Core Java Lang OOP (Part 2) - -This module contains articles about Object-oriented programming (OOP) in Java - -### Relevant Articles: -- [[<-- Prev]](/core-java-modules/core-java-lang-oop)[[More -->]](/core-java-modules/core-java-lang-oop-3) diff --git a/core-java-modules/core-java-lang-oop-2/pom.xml b/core-java-modules/core-java-lang-oop-2/pom.xml deleted file mode 100644 index ccacaf7116..0000000000 --- a/core-java-modules/core-java-lang-oop-2/pom.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - 4.0.0 - core-java-lang-oop-2 - 0.1.0-SNAPSHOT - core-java-lang-oop-2 - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - - - - - - org.assertj - assertj-core - ${assertj-core.version} - test - - - nl.jqno.equalsverifier - equalsverifier - ${equalsverifier.version} - test - - - - - core-java-lang-oop-2 - - - src/main/resources - true - - - - - - - 3.10.0 - 3.0.3 - - - diff --git a/core-java-modules/core-java-lang-oop-2/src/main/resources/files/test.txt b/core-java-modules/core-java-lang-oop-2/src/main/resources/files/test.txt deleted file mode 100644 index 08e53af69d..0000000000 --- a/core-java-modules/core-java-lang-oop-2/src/main/resources/files/test.txt +++ /dev/null @@ -1,10 +0,0 @@ -This is line 1 -This is line 2 -This is line 3 -This is line 4 -This is line 5 -This is line 6 -This is line 7 -This is line 8 -This is line 9 -This is line 10 \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md deleted file mode 100644 index 2d9085c036..0000000000 --- a/core-java-modules/core-java-lang-oop-3/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## Core Java Lang OOP (Part 3) - -This module contains articles about Object-oriented programming (OOP) in Java - -### Relevant Articles: -- [Pass-By-Value as a Parameter Passing Mechanism in Java](https://www.baeldung.com/java-pass-by-value-or-pass-by-reference) -- [[<-- Prev]](/core-java-modules/core-java-lang-oop-2)[[More -->]](/core-java-modules/core-java-lang-oop-4) diff --git a/core-java-modules/core-java-lang-oop-3/pom.xml b/core-java-modules/core-java-lang-oop-3/pom.xml deleted file mode 100644 index cc9b473d03..0000000000 --- a/core-java-modules/core-java-lang-oop-3/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - 4.0.0 - core-java-lang-oop-3 - 0.1.0-SNAPSHOT - core-java-lang-oop-3 - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - - - - - - log4j - log4j - ${log4j.version} - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - - - - org.assertj - assertj-core - ${assertj-core.version} - test - - - com.h2database - h2 - ${h2.version} - test - - - - - core-java-lang-oop-3 - - - src/main/resources - true - - - - - - 3.10.0 - - - diff --git a/core-java-modules/core-java-lang-oop-4/README.md b/core-java-modules/core-java-lang-oop-4/README.md deleted file mode 100644 index efddf9df8a..0000000000 --- a/core-java-modules/core-java-lang-oop-4/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## Core Java Lang OOP (Part 4) - -This module contains articles about Object-oriented programming (OOP) in Java - -### Relevant Articles: -- [Static and Dynamic Binding in Java](https://www.baeldung.com/java-static-dynamic-binding) -- [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) -- [[<-- Prev]](/core-java-modules/core-java-lang-oop-3) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-4/pom.xml b/core-java-modules/core-java-lang-oop-4/pom.xml deleted file mode 100644 index 3c7e4f446d..0000000000 --- a/core-java-modules/core-java-lang-oop-4/pom.xml +++ /dev/null @@ -1,60 +0,0 @@ - - - 4.0.0 - core-java-lang-oop-4 - 0.1.0-SNAPSHOT - core-java-lang-oop-4 - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - - - - - - log4j - log4j - ${log4j.version} - - - org.slf4j - log4j-over-slf4j - ${org.slf4j.version} - - - - org.assertj - assertj-core - ${assertj-core.version} - test - - - com.h2database - h2 - ${h2.version} - test - - - - - core-java-lang-oop-4 - - - src/main/resources - true - - - - - - 3.10.0 - - - diff --git a/core-java-modules/core-java-lang-oop/.gitignore b/core-java-modules/core-java-lang-oop/.gitignore deleted file mode 100644 index 3de4cc647e..0000000000 --- a/core-java-modules/core-java-lang-oop/.gitignore +++ /dev/null @@ -1,26 +0,0 @@ -*.class - -0.* - -#folders# -/target -/neoDb* -/data -/src/main/webapp/WEB-INF/classes -*/META-INF/* -.resourceCache - -# Packaged files # -*.jar -*.war -*.ear - -# Files generated by integration tests -*.txt -backup-pom.xml -/bin/ -/temp - -#IntelliJ specific -.idea/ -*.iml \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md deleted file mode 100644 index 1af957b532..0000000000 --- a/core-java-modules/core-java-lang-oop/README.md +++ /dev/null @@ -1,8 +0,0 @@ -## Core Java Lang OOP - -This module contains articles about Object-oriented programming (OOP) in Java - -### Relevant Articles: -- [How to Make a Deep Copy of an Object in Java](https://www.baeldung.com/java-deep-copy) -- [Type Erasure in Java Explained](https://www.baeldung.com/java-type-erasure) -- [[More -->]](/core-java-modules/core-java-lang-oop-2) diff --git a/core-java-modules/core-java-lang-oop/pom.xml b/core-java-modules/core-java-lang-oop/pom.xml deleted file mode 100644 index 4415784f85..0000000000 --- a/core-java-modules/core-java-lang-oop/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ - - - 4.0.0 - core-java-lang-oop - 0.1.0-SNAPSHOT - core-java-lang-oop - jar - - - com.baeldung - parent-java - 0.0.1-SNAPSHOT - ../../parent-java - - - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson.version} - - - com.google.code.gson - gson - ${gson.version} - - - - org.assertj - assertj-core - ${assertj-core.version} - test - - - - - core-java-lang-oop - - - src/main/resources - true - - - - - - 2.8.2 - - 3.10.0 - - - diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/initializationguide/User.java b/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/initializationguide/User.java deleted file mode 100644 index 1d9a872d69..0000000000 --- a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/initializationguide/User.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.baeldung.initializationguide; - -import java.io.Serializable; - -public class User implements Serializable, Cloneable { - private static final long serialVersionUID = 1L; - static String forum; - private String name; - private int id; - - { - id = 0; - System.out.println("Instance Initializer"); - } - - static { - forum = "Java"; - System.out.println("Static Initializer"); - } - - public User(String name, int id) { - super(); - this.name = name; - this.id = id; - } - - public User() { - System.out.println("Constructor"); - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - @Override - protected Object clone() throws CloneNotSupportedException { - return this; - } - -} - diff --git a/core-java-modules/core-java-lang-oop/src/main/resources/logback.xml b/core-java-modules/core-java-lang-oop/src/main/resources/logback.xml deleted file mode 100644 index 56af2d397e..0000000000 --- a/core-java-modules/core-java-lang-oop/src/main/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/initializationguide/UserUnitTest.java b/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/initializationguide/UserUnitTest.java deleted file mode 100644 index a26b602609..0000000000 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/initializationguide/UserUnitTest.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.initializationguide; -import org.junit.Before; -import org.junit.Test; - -import static org.assertj.core.api.Assertions.*; - -import java.lang.reflect.InvocationTargetException; - -public class UserUnitTest { - - @Test - public void givenUserInstance_whenIntializedWithNew_thenInstanceIsNotNull() { - User user = new User("Alice", 1); - assertThat(user).isNotNull(); - } - - @Test - public void givenUserInstance_whenInitializedWithReflection_thenInstanceIsNotNull() throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { - User user = User.class.getConstructor(String.class, int.class) - .newInstance("Alice", 2); - assertThat(user).isNotNull(); - } - - @Test - public void givenUserInstance_whenCopiedWithClone_thenExactMatchIsCreated() throws CloneNotSupportedException { - User user = new User("Alice", 3); - User clonedUser = (User) user.clone(); - assertThat(clonedUser).isEqualTo(user); - } - - @Test - public void givenUserInstance_whenValuesAreNotInitialized_thenUserNameAndIdReturnDefault() { - User user = new User(); - assertThat(user.getName()).isNull(); - assertThat(user.getId() == 0); - } -} diff --git a/core-java-modules/core-java-lang-oop/src/test/resources/.gitignore b/core-java-modules/core-java-lang-oop/src/test/resources/.gitignore deleted file mode 100644 index 83c05e60c8..0000000000 --- a/core-java-modules/core-java-lang-oop/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/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Shape.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java b/core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Square.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java rename to core-java-modules/core-java-lang/src/main/java/com/baeldung/equalshashcode/entities/Square.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java b/core-java-modules/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java rename to core-java-modules/core-java-lang/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 4d64f7e6ba..995700d32c 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -86,10 +86,6 @@ core-java-lang-math core-java-lang-math-2 core-java-lang-oop-modules - core-java-lang-oop - core-java-lang-oop-2 - core-java-lang-oop-3 - core-java-lang-oop-4 core-java-lang-operators core-java-lang-syntax core-java-lang-syntax-2 From b117f4ccd644385b4bda5269ae33ace4c90f70b8 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 7 Apr 2020 21:28:45 +0200 Subject: [PATCH 107/157] [JAVA-621] Flattened modules hierarchy --- .../core-java-lang-oop-constructors/README.md | 0 .../core-java-lang-oop-constructors/pom.xml | 4 +-- .../baeldung/constructors/BankAccount.java | 0 .../baeldung/constructors/Transaction.java | 0 .../baeldung/copyconstructor/Employee.java | 0 .../com/baeldung/copyconstructor/Manager.java | 0 .../supertypecompilerexception/MyClass.java | 0 .../MyClassSolution1.java | 0 .../MyClassSolution2.java | 0 .../MyClassSolution3.java | 0 .../MyException.java | 0 .../constructors/ConstructorUnitTest.java | 0 .../copyconstructor/EmployeeUnitTest.java | 0 .../copyconstructor/ManagerUnitTest.java | 0 .../core-java-lang-oop-generics/README.md | 0 .../core-java-lang-oop-generics/pom.xml | 4 +-- .../java/com/baeldung/generics/Entry.java | 0 .../com/baeldung/generics/GenericEntry.java | 0 .../java/com/baeldung/generics/MapEntry.java | 0 .../java/com/baeldung/generics/Product.java | 0 .../java/com/baeldung/generics/Rankable.java | 0 .../com/baeldung/rawtype/RawTypeDemo.java | 0 .../typeerasure/ArrayContentPrintUtil.java | 0 .../com/baeldung/typeerasure/BoundStack.java | 0 .../baeldung/typeerasure/IntegerStack.java | 0 .../java/com/baeldung/typeerasure/Stack.java | 0 .../generics/GenericConstructorUnitTest.java | 0 .../typeerasure/TypeErasureUnitTest.java | 0 .../core-java-lang-oop-inheritance/README.md | 0 .../core-java-lang-oop-inheritance/pom.xml | 4 +-- .../application/Application.java | 0 .../filereaders/BaseFileReader.java | 0 .../filereaders/LowercaseFileReader.java | 0 .../filereaders/UppercaseFileReader.java | 0 .../java/com/baeldung/anonymous/Book.java | 0 .../java/com/baeldung/anonymous/Main.java | 0 .../java/com/baeldung/casting/Animal.java | 0 .../com/baeldung/casting/AnimalFeeder.java | 0 .../baeldung/casting/AnimalFeederGeneric.java | 0 .../main/java/com/baeldung/casting/Cat.java | 0 .../main/java/com/baeldung/casting/Dog.java | 0 .../main/java/com/baeldung/casting/Mew.java | 0 .../com/baeldung/inheritance/ArmoredCar.java | 0 .../java/com/baeldung/inheritance/BMW.java | 0 .../java/com/baeldung/inheritance/Car.java | 0 .../com/baeldung/inheritance/Employee.java | 0 .../com/baeldung/inheritance/Floatable.java | 0 .../com/baeldung/inheritance/Flyable.java | 0 .../com/baeldung/inheritance/SpaceCar.java | 0 .../baeldung/inheritance/SpaceTraveller.java | 0 .../CommaSeparatedCustomers.java | 0 .../baeldung/innerinterfaces/Customer.java | 0 .../java/com/baeldung/interfaces/Box.java | 0 .../com/baeldung/interfaces/Employee.java | 0 .../interfaces/EmployeeSalaryComparator.java | 0 .../com/baeldung/interfaces/HasColor.java | 0 .../interfaces/multiinheritance/Car.java | 0 .../interfaces/multiinheritance/Fly.java | 0 .../multiinheritance/Transform.java | 0 .../interfaces/multiinheritance/Vehicle.java | 0 .../interfaces/polymorphysim/Circle.java | 0 .../polymorphysim/MainTestClass.java | 0 .../interfaces/polymorphysim/Shape.java | 0 .../interfaces/polymorphysim/Square.java | 0 .../keyword/superkeyword/KeywordDemo.java | 0 .../keyword/superkeyword/SuperBase.java | 0 .../keyword/superkeyword/SuperSub.java | 0 .../baeldung/polymorphism/FileManager.java | 0 .../baeldung/polymorphism/GenericFile.java | 0 .../com/baeldung/polymorphism/ImageFile.java | 0 .../com/baeldung/polymorphism/TextFile.java | 0 .../scope/method/BaseMethodClass.java | 0 .../scope/method/ChildMethodClass.java | 0 .../scope/method/MethodHidingDemo.java | 0 .../scope/variable/ChildVariable.java | 0 .../baeldung/scope/variable/HideVariable.java | 0 .../scope/variable/ParentVariable.java | 0 .../scope/variable/VariableHidingDemo.java | 0 .../src/main/resources/files/test.txt | 0 .../test/LowercaseFileReaderUnitTest.java | 0 .../test/UppercaseFileReaderUnitTest.java | 0 .../com/baeldung/casting/CastingUnitTest.java | 0 .../com/baeldung/inheritance/AppUnitTest.java | 0 .../InnerInterfaceUnitTest.java | 0 .../polymorphism/PolymorphismUnitTest.java | 0 .../core-java-lang-oop-methods/README.md | 0 .../core-java-lang-oop-methods/pom.xml | 4 +-- .../com/baeldung/basicmethods/PersonName.java | 0 .../com/baeldung/equalshashcode/Money.java | 0 .../com/baeldung/equalshashcode/Team.java | 0 .../com/baeldung/equalshashcode/Voucher.java | 0 .../baeldung/equalshashcode/WrongTeam.java | 0 .../baeldung/equalshashcode/WrongVoucher.java | 0 .../com/baeldung/hashcode/entities/User.java | 0 .../application/Application.java | 0 .../model/Car.java | 0 .../model/Vehicle.java | 0 .../util/Multiplier.java | 0 .../equalshashcode/MoneyUnitTest.java | 0 .../baeldung/equalshashcode/TeamUnitTest.java | 0 .../application/ApplicationUnitTest.java | 0 .../hashcode/entities/UserUnitTest.java | 0 .../test/MethodOverloadingUnitTest.java | 0 .../test/MethodOverridingUnitTest.java | 0 .../core-java-lang-oop-modifiers/README.md | 0 .../core-java-lang-oop-modifiers/pom.xml | 4 +-- .../com/baeldung/accessmodifiers/Public.java | 0 .../baeldung/accessmodifiers/SubClass.java | 0 .../baeldung/accessmodifiers/SuperPublic.java | 0 .../another/AnotherPublic.java | 0 .../another/AnotherSubClass.java | 0 .../another/AnotherSuperPublic.java | 0 .../publicmodifier/ListOfThree.java | 0 .../publicmodifier/SpecialCharacters.java | 0 .../publicmodifier/Student.java | 0 .../core/privatemodifier/Employee.java | 0 .../core/privatemodifier/ExampleClass.java | 0 .../privatemodifier/PublicOuterClass.java | 0 .../application/Application.java | 0 .../model/Alarm.java | 0 .../model/Car.java | 0 .../model/Motorbike.java | 0 .../model/MultiAlarmCar.java | 0 .../model/Vehicle.java | 0 .../com/baeldung/finalkeyword/BlackCat.java | 0 .../com/baeldung/finalkeyword/BlackDog.java | 0 .../java/com/baeldung/finalkeyword/Cat.java | 0 .../java/com/baeldung/finalkeyword/Dog.java | 0 .../java/com/baeldung/staticdemo/Car.java | 0 .../com/baeldung/staticdemo/Singleton.java | 0 .../com/baeldung/staticdemo/StaticBlock.java | 0 .../com/baeldung/strictfpUsage/Circle.java | 0 .../strictfpUsage/ScientificCalculator.java | 0 .../PublicAccessModifierUnitTest.java | 0 .../StaticDefaulInterfaceMethodUnitTest.java | 0 .../baeldung/finalkeyword/FinalUnitTest.java | 0 .../com/baeldung/staticdemo/CarUnitTest.java | 0 .../staticdemo/SingletonUnitTest.java | 0 .../staticdemo/StaticBlockUnitTest.java | 0 .../ScientificCalculatorUnitTest.java | 0 .../core-java-lang-oop-modules/pom.xml | 27 ------------------- .../core-java-lang-oop-others/README.md | 0 .../core-java-lang-oop-others/pom.xml | 4 +-- .../java/com/baeldung/binding/Animal.java | 0 .../com/baeldung/binding/AnimalActivity.java | 0 .../main/java/com/baeldung/binding/Dog.java | 0 .../java/com/baeldung/oop/ArmoredCar.java | 0 .../src/main/java/com/baeldung/oop/Car.java | 0 .../java/com/baeldung/oop/GenericFile.java | 0 .../main/java/com/baeldung/oop/ImageFile.java | 0 .../main/java/com/baeldung/oop/TextFile.java | 0 .../main/java/com/baeldung/oop/Vehicle.java | 0 .../parameterpassing/NonPrimitives.java | 0 .../baeldung/parameterpassing/Primitives.java | 0 .../binding/AnimalActivityUnitTest.java | 0 .../com/baeldung/binding/AnimalUnitTest.java | 0 .../com/baeldung/binding/DogUnitTest.java | 0 .../NonPrimitivesUnitTest.java | 0 .../parameterpassing/PrimitivesUnitTest.java | 0 .../core-java-lang-oop-patterns/README.md | 0 .../core-java-lang-oop-patterns/pom.xml | 4 +-- .../java/com/baeldung/deepcopy/Address.java | 0 .../main/java/com/baeldung/deepcopy/User.java | 0 .../baeldung/immutableobjects/Currency.java | 0 .../com/baeldung/immutableobjects/Money.java | 0 .../application/Application.java | 0 .../inheritancecomposition/model/Actress.java | 0 .../model/Computer.java | 0 .../inheritancecomposition/model/Memory.java | 0 .../inheritancecomposition/model/Person.java | 0 .../model/Processor.java | 0 .../model/SoundCard.java | 0 .../model/StandardMemory.java | 0 .../model/StandardProcessor.java | 0 .../model/StandardSoundCard.java | 0 .../model/Waitress.java | 0 .../relationships/aggregation/Car.java | 0 .../aggregation/CarWithStaticInnerWheel.java | 0 .../relationships/aggregation/Wheel.java | 0 .../relationships/association/Child.java | 0 .../relationships/association/Mother.java | 0 .../relationships/composition/Building.java | 0 .../BuildingWithDefinitionRoomInMethod.java | 0 .../relationships/university/Department.java | 0 .../relationships/university/Professor.java | 0 .../relationships/university/University.java | 0 .../baeldung/deepcopy/DeepCopyUnitTest.java | 0 .../deepcopy/ShallowCopyUnitTest.java | 0 .../ImmutableObjectsUnitTest.java | 0 .../ActressUnitTest.java | 0 .../CompositionUnitTest.java | 0 .../InheritanceUnitTest.java | 0 .../PersonUnitTest.java | 0 .../WaitressUnitTest.java | 0 .../core-java-lang-oop-types/README.md | 0 .../core-java-lang-oop-types/pom.xml | 4 +-- .../keyword/thiskeyword/KeywordUnitTest.java | 0 .../markerinterface/DeletableShape.java | 0 .../baeldung/markerinterface/Rectangle.java | 0 .../com/baeldung/markerinterface/Shape.java | 0 .../baeldung/markerinterface/ShapeDao.java | 0 .../main/java/com/baeldung/objects/Car.java | 0 .../MarkerInterfaceUnitTest.java | 0 .../baeldung/nestedclass/AnonymousInner.java | 0 .../com/baeldung/nestedclass/Enclosing.java | 0 .../baeldung/nestedclass/NewEnclosing.java | 0 .../com/baeldung/nestedclass/NewOuter.java | 0 .../java/com/baeldung/nestedclass/Outer.java | 0 .../com/baeldung/objects/ObjectsUnitTest.java | 0 core-java-modules/pom.xml | 9 ++++++- 210 files changed, 24 insertions(+), 44 deletions(-) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/pom.xml (86%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/pom.xml (78%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/pom.xml (86%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/main/resources/files/test.txt (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/pom.xml (89%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/pom.xml (88%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java (100%) delete mode 100644 core-java-modules/core-java-lang-oop-modules/pom.xml rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/pom.xml (78%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/pom.xml (91%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/README.md (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/pom.xml (78%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java (100%) rename core-java-modules/{core-java-lang-oop-modules => }/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java (100%) diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/README.md b/core-java-modules/core-java-lang-oop-constructors/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/README.md rename to core-java-modules/core-java-lang-oop-constructors/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml b/core-java-modules/core-java-lang-oop-constructors/pom.xml similarity index 86% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml rename to core-java-modules/core-java-lang-oop-constructors/pom.xml index e961d68f11..76507103ea 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/pom.xml +++ b/core-java-modules/core-java-lang-oop-constructors/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/BankAccount.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/constructors/Transaction.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Employee.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/copyconstructor/Manager.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution1.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution2.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyClassSolution3.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java b/core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java rename to core-java-modules/core-java-lang-oop-constructors/src/main/java/com/baeldung/supertypecompilerexception/MyException.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java b/core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java rename to core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/EmployeeUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java b/core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java rename to core-java-modules/core-java-lang-oop-constructors/src/test/java/com/baeldung/copyconstructor/ManagerUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/README.md b/core-java-modules/core-java-lang-oop-generics/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/README.md rename to core-java-modules/core-java-lang-oop-generics/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml b/core-java-modules/core-java-lang-oop-generics/pom.xml similarity index 78% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml rename to core-java-modules/core-java-lang-oop-generics/pom.xml index 167aa695e0..ae141ecda2 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/pom.xml +++ b/core-java-modules/core-java-lang-oop-generics/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Entry.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/GenericEntry.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/MapEntry.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Product.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/generics/Rankable.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/rawtype/RawTypeDemo.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/ArrayContentPrintUtil.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/BoundStack.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/IntegerStack.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java rename to core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Stack.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/generics/GenericConstructorUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java b/core-java-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java rename to core-java-modules/core-java-lang-oop-generics/src/test/java/com/baeldung/typeerasure/TypeErasureUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/README.md b/core-java-modules/core-java-lang-oop-inheritance/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/README.md rename to core-java-modules/core-java-lang-oop-inheritance/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml b/core-java-modules/core-java-lang-oop-inheritance/pom.xml similarity index 86% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml rename to core-java-modules/core-java-lang-oop-inheritance/pom.xml index 8e7e8e374d..a48b28a289 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/pom.xml +++ b/core-java-modules/core-java-lang-oop-inheritance/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/BaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/LowercaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/filereaders/UppercaseFileReader.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Book.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/anonymous/Main.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Animal.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeeder.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/AnimalFeederGeneric.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Cat.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Dog.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/casting/Mew.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/ArmoredCar.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/BMW.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Employee.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Floatable.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/Flyable.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceCar.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/inheritance/SpaceTraveller.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/CommaSeparatedCustomers.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/innerinterfaces/Customer.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Box.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Employee.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/EmployeeSalaryComparator.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/HasColor.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Fly.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Transform.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/multiinheritance/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Circle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/MainTestClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Shape.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/polymorphysim/Square.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/FileManager.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/GenericFile.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/ImageFile.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/polymorphism/TextFile.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/resources/files/test.txt b/core-java-modules/core-java-lang-oop-inheritance/src/main/resources/files/test.txt similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/main/resources/files/test.txt rename to core-java-modules/core-java-lang-oop-inheritance/src/main/resources/files/test.txt diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/casting/CastingUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/inheritance/AppUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/innerinterfaces/InnerInterfaceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/polymorphism/PolymorphismUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/README.md b/core-java-modules/core-java-lang-oop-methods/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/README.md rename to core-java-modules/core-java-lang-oop-methods/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml b/core-java-modules/core-java-lang-oop-methods/pom.xml similarity index 89% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml rename to core-java-modules/core-java-lang-oop-methods/pom.xml index 062af9c3cd..77e8ded8e7 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/pom.xml +++ b/core-java-modules/core-java-lang-oop-methods/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Money.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Team.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/Voucher.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongTeam.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/model/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methodoverloadingoverriding/util/Multiplier.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/README.md b/core-java-modules/core-java-lang-oop-modifiers/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/README.md rename to core-java-modules/core-java-lang-oop-modifiers/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml b/core-java-modules/core-java-lang-oop-modifiers/pom.xml similarity index 88% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml rename to core-java-modules/core-java-lang-oop-modifiers/pom.xml index 11e0296266..615e20690f 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/pom.xml +++ b/core-java-modules/core-java-lang-oop-modifiers/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/Public.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SubClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Alarm.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Motorbike.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/MultiAlarmCar.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/defaultstaticinterfacemethods/model/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackCat.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/BlackDog.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Cat.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/finalkeyword/Dog.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/Circle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/strictfpUsage/ScientificCalculator.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/finalkeyword/FinalUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/strictfpUsage/ScientificCalculatorUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/pom.xml b/core-java-modules/core-java-lang-oop-modules/pom.xml deleted file mode 100644 index 39dfe16b17..0000000000 --- a/core-java-modules/core-java-lang-oop-modules/pom.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - core-java-modules - com.baeldung.core-java-modules - 1.0.0-SNAPSHOT - - 4.0.0 - - com.baeldung.core-java-lang-oop-modules - core-java-lang-oop-modules - core-java-lang-oop-modules - pom - - - core-java-lang-oop-constructors - core-java-lang-oop-patterns - core-java-lang-oop-generics - core-java-lang-oop-modifiers - core-java-lang-oop-types - core-java-lang-oop-inheritance - core-java-lang-oop-methods - core-java-lang-oop-others - - \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/README.md b/core-java-modules/core-java-lang-oop-others/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/README.md rename to core-java-modules/core-java-lang-oop-others/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml b/core-java-modules/core-java-lang-oop-others/pom.xml similarity index 78% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml rename to core-java-modules/core-java-lang-oop-others/pom.xml index 21699cd582..8eab301748 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/pom.xml +++ b/core-java-modules/core-java-lang-oop-others/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Animal.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/AnimalActivity.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/binding/Dog.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ArmoredCar.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/GenericFile.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/ImageFile.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/TextFile.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/oop/Vehicle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/NonPrimitives.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java b/core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java rename to core-java-modules/core-java-lang-oop-others/src/main/java/com/baeldung/parameterpassing/Primitives.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java b/core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java rename to core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalActivityUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java b/core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java rename to core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/AnimalUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java b/core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java rename to core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/binding/DogUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-others/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/README.md b/core-java-modules/core-java-lang-oop-patterns/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/README.md rename to core-java-modules/core-java-lang-oop-patterns/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml b/core-java-modules/core-java-lang-oop-patterns/pom.xml similarity index 91% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml rename to core-java-modules/core-java-lang-oop-patterns/pom.xml index 5bd3c70542..0102ef2653 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/pom.xml +++ b/core-java-modules/core-java-lang-oop-patterns/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/Address.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/deepcopy/User.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Currency.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/immutableobjects/Money.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/application/Application.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Person.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/aggregation/Wheel.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Child.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/association/Mother.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/Building.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Department.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/Professor.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java rename to core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/relationships/university/University.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/DeepCopyUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/deepcopy/ShallowCopyUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java b/core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java rename to core-java-modules/core-java-lang-oop-patterns/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md b/core-java-modules/core-java-lang-oop-types/README.md similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/README.md rename to core-java-modules/core-java-lang-oop-types/README.md diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml b/core-java-modules/core-java-lang-oop-types/pom.xml similarity index 78% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml rename to core-java-modules/core-java-lang-oop-types/pom.xml index 156ff89ccd..f73434a9ff 100644 --- a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/pom.xml +++ b/core-java-modules/core-java-lang-oop-types/pom.xml @@ -3,8 +3,8 @@ 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"> - core-java-lang-oop-modules - com.baeldung.core-java-lang-oop-modules + core-java-modules + com.baeldung.core-java-modules 1.0.0-SNAPSHOT 4.0.0 diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/DeletableShape.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/Shape.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/markerinterface/ShapeDao.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/objects/Car.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Enclosing.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewEnclosing.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/NewOuter.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/Outer.java diff --git a/core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop-modules/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/objects/ObjectsUnitTest.java diff --git a/core-java-modules/pom.xml b/core-java-modules/pom.xml index 995700d32c..c6cc3726e1 100644 --- a/core-java-modules/pom.xml +++ b/core-java-modules/pom.xml @@ -85,7 +85,14 @@ core-java-lang-2 core-java-lang-math core-java-lang-math-2 - core-java-lang-oop-modules + core-java-lang-oop-constructors + core-java-lang-oop-patterns + core-java-lang-oop-generics + core-java-lang-oop-modifiers + core-java-lang-oop-types + core-java-lang-oop-inheritance + core-java-lang-oop-methods + core-java-lang-oop-others core-java-lang-operators core-java-lang-syntax core-java-lang-syntax-2 From c02e57fe7e1a00244bd8f83959498f5547ec1388 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sat, 11 Apr 2020 10:27:16 +0200 Subject: [PATCH 108/157] [JAVA-621] Fixes due to minor article changes * Renamed KeywordUnitTest to Keyword as it's the chosen name for the article now --- .../{KeywordUnitTest.java => Keyword.java} | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) rename core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/{KeywordUnitTest.java => Keyword.java} (68%) diff --git a/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/Keyword.java similarity index 68% rename from core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/Keyword.java index 35fd7358af..0c45f61e1d 100644 --- a/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java +++ b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/Keyword.java @@ -1,17 +1,17 @@ package com.baeldung.keyword.thiskeyword; -public class KeywordUnitTest { +public class Keyword { private String name; private int age; - public KeywordUnitTest() { + public Keyword() { this("John", 27); this.printMessage(); printInstance(this); } - public KeywordUnitTest(String name, int age) { + public Keyword(String name, int age) { this.name = name; this.age = age; } @@ -20,11 +20,11 @@ public class KeywordUnitTest { System.out.println("invoked by this"); } - public void printInstance(KeywordUnitTest thisKeyword) { + public void printInstance(Keyword thisKeyword) { System.out.println(thisKeyword); } - public KeywordUnitTest getCurrentInstance() { + public Keyword getCurrentInstance() { return this; } @@ -33,8 +33,8 @@ public class KeywordUnitTest { boolean isInnerClass = true; public ThisInnerClass() { - KeywordUnitTest thisKeyword = KeywordUnitTest.this; - String outerString = KeywordUnitTest.this.name; + Keyword thisKeyword = Keyword.this; + String outerString = Keyword.this.name; System.out.println(this.isInnerClass); } } From 4f75f2d5b0e4c93df9ba6f48662467f96bf066bb Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 21 Apr 2020 08:52:04 +0200 Subject: [PATCH 109/157] [JAVA-621] Ensuring each article has its own package * Putting test classes directly under abstractclasses package (no need for test subpackage, we're already in test sources) * Removed unnecessary keyword package to just let superkeyword * Renamed scope package to variableandmethodhiding * Renamed package basicmethods into methods * Putting test classes directly under methodoverloadingoverriding package (no need for test subpackage, we're already in test sources) * Moved publicmodifier package under com.baeldung as it contains code from a separate article * Moved privatemodifier under com.baeldung as it was under an unnecessary core package * Renamed staticdemo package into staticmodifier (was more adequate with other modifiers articles) * Putting test classes directly under defaultstaticinterfacemethods package (no need for test subpackage, we're already in test sources) * Moved thiskeyword package to com.baeldung instead of under keywords package --- .../com/baeldung/{keyword => }/superkeyword/KeywordDemo.java | 2 +- .../com/baeldung/{keyword => }/superkeyword/SuperBase.java | 2 +- .../com/baeldung/{keyword => }/superkeyword/SuperSub.java | 2 +- .../method/BaseMethodClass.java | 2 +- .../method/ChildMethodClass.java | 2 +- .../method/MethodHidingDemo.java | 2 +- .../variable/ChildVariable.java | 2 +- .../variable/HideVariable.java | 2 +- .../variable/ParentVariable.java | 2 +- .../variable/VariableHidingDemo.java | 2 +- .../{test => }/LowercaseFileReaderUnitTest.java | 2 +- .../{test => }/UppercaseFileReaderUnitTest.java | 2 +- .../com/baeldung/{basicmethods => methods}/PersonName.java | 2 +- .../{test => }/MethodOverloadingUnitTest.java | 2 +- .../{test => }/MethodOverridingUnitTest.java | 2 +- .../com/baeldung/{core => }/privatemodifier/Employee.java | 2 +- .../com/baeldung/{core => }/privatemodifier/ExampleClass.java | 2 +- .../baeldung/{core => }/privatemodifier/PublicOuterClass.java | 2 +- .../{accessmodifiers => }/publicmodifier/ListOfThree.java | 2 +- .../publicmodifier/SpecialCharacters.java | 2 +- .../{accessmodifiers => }/publicmodifier/Student.java | 2 +- .../java/com/baeldung/{staticdemo => staticmodifier}/Car.java | 2 +- .../baeldung/{staticdemo => staticmodifier}/Singleton.java | 2 +- .../baeldung/{staticdemo => staticmodifier}/StaticBlock.java | 2 +- .../{test => }/StaticDefaulInterfaceMethodUnitTest.java | 2 +- .../publicmodifier/PublicAccessModifierUnitTest.java | 4 +--- .../baeldung/{staticdemo => staticmodifier}/CarUnitTest.java | 2 +- .../{staticdemo => staticmodifier}/SingletonUnitTest.java | 2 +- .../{staticdemo => staticmodifier}/StaticBlockUnitTest.java | 2 +- .../java/com/baeldung/{keyword => }/thiskeyword/Keyword.java | 2 +- 30 files changed, 30 insertions(+), 32 deletions(-) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{keyword => }/superkeyword/KeywordDemo.java (82%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{keyword => }/superkeyword/SuperBase.java (87%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{keyword => }/superkeyword/SuperSub.java (91%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/method/BaseMethodClass.java (71%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/method/ChildMethodClass.java (74%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/method/MethodHidingDemo.java (70%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/variable/ChildVariable.java (81%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/variable/HideVariable.java (89%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/variable/ParentVariable.java (80%) rename core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/{scope => variableandmethodhiding}/variable/VariableHidingDemo.java (89%) rename core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/{test => }/LowercaseFileReaderUnitTest.java (94%) rename core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/{test => }/UppercaseFileReaderUnitTest.java (94%) rename core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/{basicmethods => methods}/PersonName.java (96%) rename core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/{test => }/MethodOverloadingUnitTest.java (95%) rename core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/{test => }/MethodOverridingUnitTest.java (97%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{core => }/privatemodifier/Employee.java (96%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{core => }/privatemodifier/ExampleClass.java (84%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{core => }/privatemodifier/PublicOuterClass.java (90%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{accessmodifiers => }/publicmodifier/ListOfThree.java (92%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{accessmodifiers => }/publicmodifier/SpecialCharacters.java (61%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{accessmodifiers => }/publicmodifier/Student.java (96%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{staticdemo => staticmodifier}/Car.java (96%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{staticdemo => staticmodifier}/Singleton.java (88%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/{staticdemo => staticmodifier}/StaticBlock.java (93%) rename core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/{test => }/StaticDefaulInterfaceMethodUnitTest.java (97%) rename core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/{accessmodifiers => }/publicmodifier/PublicAccessModifierUnitTest.java (93%) rename core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/{staticdemo => staticmodifier}/CarUnitTest.java (88%) rename core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/{staticdemo => staticmodifier}/SingletonUnitTest.java (90%) rename core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/{staticdemo => staticmodifier}/StaticBlockUnitTest.java (92%) rename core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/{keyword => }/thiskeyword/Keyword.java (95%) diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/KeywordDemo.java similarity index 82% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/KeywordDemo.java index 7414e52b1c..0e5bd489bb 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/KeywordDemo.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/KeywordDemo.java @@ -1,4 +1,4 @@ -package com.baeldung.keyword.superkeyword; +package com.baeldung.superkeyword; /** * Created by Gebruiker on 5/14/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/SuperBase.java similarity index 87% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/SuperBase.java index a5304fcef9..ec6a90cb06 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/SuperBase.java @@ -1,4 +1,4 @@ -package com.baeldung.keyword.superkeyword; +package com.baeldung.superkeyword; /** * Created by Gebruiker on 5/14/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/SuperSub.java similarity index 91% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/SuperSub.java index 83bc04ad0f..ada52e4ff2 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/superkeyword/SuperSub.java @@ -1,4 +1,4 @@ -package com.baeldung.keyword.superkeyword; +package com.baeldung.superkeyword; /** * Created by Gebruiker on 5/15/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/BaseMethodClass.java similarity index 71% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/BaseMethodClass.java index 46ed5fd99f..7e6b08c000 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/BaseMethodClass.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/BaseMethodClass.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.method; +package com.baeldung.variableandmethodhiding.method; public class BaseMethodClass { diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/ChildMethodClass.java similarity index 74% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/ChildMethodClass.java index 1d0cff2d6b..30db54cd84 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/ChildMethodClass.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/ChildMethodClass.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.method; +package com.baeldung.variableandmethodhiding.method; public class ChildMethodClass extends BaseMethodClass { diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/MethodHidingDemo.java similarity index 70% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/MethodHidingDemo.java index 7e0b3ed146..ce1feac665 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/method/MethodHidingDemo.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/method/MethodHidingDemo.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.method; +package com.baeldung.variableandmethodhiding.method; public class MethodHidingDemo { diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/ChildVariable.java similarity index 81% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/ChildVariable.java index 5730e5e282..83434f7dd3 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ChildVariable.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/ChildVariable.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.variable; +package com.baeldung.variableandmethodhiding.variable; /** * Created by Gebruiker on 5/7/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/HideVariable.java similarity index 89% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/HideVariable.java index 8243fdb249..98a29573b8 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/HideVariable.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/HideVariable.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.variable; +package com.baeldung.variableandmethodhiding.variable; /** * Created by Gebruiker on 5/6/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/ParentVariable.java similarity index 80% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/ParentVariable.java index 7f116b955e..ef17305746 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/ParentVariable.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/ParentVariable.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.variable; +package com.baeldung.variableandmethodhiding.variable; /** * Created by Gebruiker on 5/7/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/VariableHidingDemo.java similarity index 89% rename from core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java rename to core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/VariableHidingDemo.java index 1ad71bd966..0fd83ad55e 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/scope/variable/VariableHidingDemo.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/variableandmethodhiding/variable/VariableHidingDemo.java @@ -1,4 +1,4 @@ -package com.baeldung.scope.variable; +package com.baeldung.variableandmethodhiding.variable; /** * Created by Gebruiker on 5/6/2018. diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java index 45e16f0d25..8e970fc0c7 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/LowercaseFileReaderUnitTest.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/LowercaseFileReaderUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.abstractclasses.test; +package com.baeldung.abstractclasses; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.LowercaseFileReader; diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java rename to core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java index dc4df900e4..e7b83a97e6 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/test/UppercaseFileReaderUnitTest.java +++ b/core-java-modules/core-java-lang-oop-inheritance/src/test/java/com/baeldung/abstractclasses/UppercaseFileReaderUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.abstractclasses.test; +package com.baeldung.abstractclasses; import com.baeldung.abstractclasses.filereaders.BaseFileReader; import com.baeldung.abstractclasses.filereaders.UppercaseFileReader; diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methods/PersonName.java similarity index 96% rename from core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methods/PersonName.java index 43bbf0dd62..d1f3f58b8c 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/basicmethods/PersonName.java +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/methods/PersonName.java @@ -1,4 +1,4 @@ -package com.baeldung.basicmethods; +package com.baeldung.methods; import java.io.FileWriter; import java.io.IOException; diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/MethodOverloadingUnitTest.java similarity index 95% rename from core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/MethodOverloadingUnitTest.java index 081a30c34a..476e70618f 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverloadingUnitTest.java +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/MethodOverloadingUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.methodoverloadingoverriding.test; +package com.baeldung.methodoverloadingoverriding; import com.baeldung.methodoverloadingoverriding.util.Multiplier; import org.junit.BeforeClass; diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/MethodOverridingUnitTest.java similarity index 97% rename from core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/MethodOverridingUnitTest.java index 554ac121bc..f4142d7382 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/test/MethodOverridingUnitTest.java +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/methodoverloadingoverriding/MethodOverridingUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.methodoverloadingoverriding.test; +package com.baeldung.methodoverloadingoverriding; import com.baeldung.methodoverloadingoverriding.model.Car; import com.baeldung.methodoverloadingoverriding.model.Vehicle; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/Employee.java similarity index 96% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/Employee.java index 4598400e93..a0f7829d51 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/Employee.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/Employee.java @@ -1,4 +1,4 @@ -package com.baeldung.core.privatemodifier; +package com.baeldung.privatemodifier; public class Employee { diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/ExampleClass.java similarity index 84% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/ExampleClass.java index 8659b4ad9c..c87980fbe8 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/ExampleClass.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/ExampleClass.java @@ -1,4 +1,4 @@ -package com.baeldung.core.privatemodifier; +package com.baeldung.privatemodifier; public class ExampleClass { diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/PublicOuterClass.java similarity index 90% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/PublicOuterClass.java index 8a9e8a8eb3..082d08b034 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/core/privatemodifier/PublicOuterClass.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/privatemodifier/PublicOuterClass.java @@ -1,4 +1,4 @@ -package com.baeldung.core.privatemodifier; +package com.baeldung.privatemodifier; public class PublicOuterClass { diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/ListOfThree.java similarity index 92% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/ListOfThree.java index 2ded0ba5d3..0e3449f451 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/ListOfThree.java @@ -1,4 +1,4 @@ -package com.baeldung.accessmodifiers.publicmodifier; +package com.baeldung.publicmodifier; import java.util.AbstractList; import java.util.Arrays; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/SpecialCharacters.java similarity index 61% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/SpecialCharacters.java index 5556e9aa57..633308e707 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/SpecialCharacters.java @@ -1,4 +1,4 @@ -package com.baeldung.accessmodifiers.publicmodifier; +package com.baeldung.publicmodifier; public class SpecialCharacters { diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/Student.java similarity index 96% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/Student.java index 83a0dcb30f..5aa80286bf 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/publicmodifier/Student.java @@ -1,4 +1,4 @@ -package com.baeldung.accessmodifiers.publicmodifier; +package com.baeldung.publicmodifier; import java.math.BigDecimal; import java.sql.Connection; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/Car.java similarity index 96% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/Car.java index cdb3806c35..950f008dcd 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Car.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/Car.java @@ -1,4 +1,4 @@ -package com.baeldung.staticdemo; +package com.baeldung.staticmodifier; /** * This class demonstrates the use of static fields and static methods diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/Singleton.java similarity index 88% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/Singleton.java index de75af9d9d..6e7dcf7c60 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/Singleton.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/Singleton.java @@ -1,4 +1,4 @@ -package com.baeldung.staticdemo; +package com.baeldung.staticmodifier; public class Singleton { private Singleton() {} diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlock.java similarity index 93% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlock.java index fde7afb090..f3eb447bdd 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticdemo/StaticBlock.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlock.java @@ -1,4 +1,4 @@ -package com.baeldung.staticdemo; +package com.baeldung.staticmodifier; import java.util.LinkedList; import java.util.List; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/StaticDefaulInterfaceMethodUnitTest.java similarity index 97% rename from core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/StaticDefaulInterfaceMethodUnitTest.java index e90f239756..0dffe8f80e 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/test/StaticDefaulInterfaceMethodUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/defaultstaticinterfacemethods/StaticDefaulInterfaceMethodUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.defaultstaticinterfacemethods.test; +package com.baeldung.defaultstaticinterfacemethods; import com.baeldung.defaultstaticinterfacemethods.model.Car; import com.baeldung.defaultstaticinterfacemethods.model.Motorbike; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/publicmodifier/PublicAccessModifierUnitTest.java similarity index 93% rename from core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/publicmodifier/PublicAccessModifierUnitTest.java index c2897e7434..8c014e703b 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/accessmodifiers/publicmodifier/PublicAccessModifierUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/publicmodifier/PublicAccessModifierUnitTest.java @@ -1,7 +1,5 @@ -package com.baeldung.accessmodifiers.publicmodifier; +package com.baeldung.publicmodifier; -import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; -import com.baeldung.accessmodifiers.publicmodifier.Student; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestInstance; import org.junit.jupiter.api.TestInstance.Lifecycle; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/CarUnitTest.java similarity index 88% rename from core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/CarUnitTest.java index 3deec6f41c..f55955caa8 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/CarUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/CarUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.staticdemo; +package com.baeldung.staticmodifier; import static org.junit.Assert.*; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/SingletonUnitTest.java similarity index 90% rename from core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/SingletonUnitTest.java index c1a1e1abe4..6371fd4961 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/SingletonUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/SingletonUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.staticdemo; +package com.baeldung.staticmodifier; import org.junit.Assert; import org.junit.Test; diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockUnitTest.java similarity index 92% rename from core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockUnitTest.java index 79ba4427bf..03f3e0440c 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticdemo/StaticBlockUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.staticdemo; +package com.baeldung.staticmodifier; import static org.hamcrest.collection.IsIterableContainingInOrder.contains; import static org.junit.Assert.assertThat; diff --git a/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/Keyword.java b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/thiskeyword/Keyword.java similarity index 95% rename from core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/Keyword.java rename to core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/thiskeyword/Keyword.java index 0c45f61e1d..a09a1ac8e1 100644 --- a/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/keyword/thiskeyword/Keyword.java +++ b/core-java-modules/core-java-lang-oop-types/src/main/java/com/baeldung/thiskeyword/Keyword.java @@ -1,4 +1,4 @@ -package com.baeldung.keyword.thiskeyword; +package com.baeldung.thiskeyword; public class Keyword { From f56bf16d112c600fc1c6422341fcf4d91c1a52e0 Mon Sep 17 00:00:00 2001 From: Mrudav Shukla Date: Sun, 8 Jul 2018 17:41:29 +0530 Subject: [PATCH 110/157] BAEL-1921 - added example code and unit test for GlobalExceptionHandler (#4646) * added example code and unit test for GlobalExceptionHandler * Code for common exceptions --- .../reflection/exceptions/Arithmetic.java | 20 ++++++ .../exceptions/ArrayIndexOutOfBounds.java | 24 +++++++ .../reflection/exceptions/ClassCast.java | 36 +++++++++++ .../reflection/exceptions/FileNotFound.java | 25 ++++++++ .../exceptions/GlobalExceptionHandler.java | 28 ++++++++ .../exceptions/IllegalArgument.java | 18 ++++++ .../reflection/exceptions/IllegalState.java | 32 ++++++++++ .../InterruptedExceptionExample.java | 28 ++++++++ .../reflection/exceptions/MalformedURL.java | 25 ++++++++ .../reflection/exceptions/NullPointer.java | 36 +++++++++++ .../reflection/exceptions/NumberFormat.java | 23 +++++++ .../exceptions/ParseExceptionExample.java | 25 ++++++++ .../exceptions/StringIndexOutOfBounds.java | 23 +++++++ .../GlobalExceptionHandlerUnitTest.java | 64 +++++++++++++++++++ 14 files changed, 407 insertions(+) create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java create mode 100644 core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java create mode 100644 core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java new file mode 100644 index 0000000000..138916ec60 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java @@ -0,0 +1,20 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Arithmetic { + + private static Logger LOGGER = LoggerFactory.getLogger(Arithmetic.class); + + public static void main(String[] args) { + + try { + int result = 30 / 0; // Trying to divide by zero + } catch (ArithmeticException e) { + LOGGER.error("ArithmeticException caught!"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java new file mode 100644 index 0000000000..93b53f284c --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java @@ -0,0 +1,24 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ArrayIndexOutOfBounds { + + private static Logger LOGGER = LoggerFactory.getLogger(ArrayIndexOutOfBounds.class); + + public static void main(String[] args) { + + int[] nums = new int[] { 1, 2, 3 }; + + try { + int numFromNegativeIndex = nums[-1]; // Trying to access at negative index + int numFromGreaterIndex = nums[4]; // Trying to access at greater index + int numFromLengthIndex = nums[3]; // Trying to access at index equal to size of the array + } catch (ArrayIndexOutOfBoundsException e) { + LOGGER.error("ArrayIndexOutOfBoundsException caught"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java new file mode 100644 index 0000000000..183f8f54a3 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java @@ -0,0 +1,36 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class Animal { + +} + +class Dog extends Animal { + +} + +class Lion extends Animal { + +} + +public class ClassCast { + + private static Logger LOGGER = LoggerFactory.getLogger(ClassCast.class); + + public static void main(String[] args) { + + try { + Animal animalOne = new Dog(); // At runtime the instance is dog + Dog bruno = (Dog) animalOne; // Downcasting + + Animal animalTwo = new Lion(); // At runtime the instance is animal + Dog tommy = (Dog) animalTwo; // Downcasting + } catch (ClassCastException e) { + LOGGER.error("ClassCastException caught!"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java new file mode 100644 index 0000000000..bb9e0bf4ac --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java @@ -0,0 +1,25 @@ +package com.baeldung.exceptions; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class FileNotFound { + + private static Logger LOGGER = LoggerFactory.getLogger(FileNotFound.class); + + public static void main(String[] args) { + + BufferedReader reader = null; + try { + reader = new BufferedReader(new FileReader(new File("/invalid/file/location"))); + } catch (FileNotFoundException e) { + LOGGER.error("FileNotFoundException caught!"); + } + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java new file mode 100644 index 0000000000..ab46c83da4 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java @@ -0,0 +1,28 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class GlobalExceptionHandler { + + public static void main(String[] args) { + + Handler globalExceptionHandler = new Handler(); + Thread.setDefaultUncaughtExceptionHandler(globalExceptionHandler); + new GlobalExceptionHandler().performArithmeticOperation(10, 0); + } + + public int performArithmeticOperation(int num1, int num2) { + return num1/num2; + } + +} + +class Handler implements Thread.UncaughtExceptionHandler { + + private static Logger LOGGER = LoggerFactory.getLogger(Handler.class); + + public void uncaughtException(Thread t, Throwable e) { + LOGGER.info("Unhandled exception caught!"); + } +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java new file mode 100644 index 0000000000..801536cb2d --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java @@ -0,0 +1,18 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class IllegalArgument { + + private static Logger LOGGER = LoggerFactory.getLogger(IllegalArgument.class); + + public static void main(String[] args) { + try { + Thread.sleep(-1000); + } catch (InterruptedException e) { + LOGGER.error("IllegalArgumentException caught!"); + } + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java new file mode 100644 index 0000000000..e8ddcea3c2 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java @@ -0,0 +1,32 @@ +package com.baeldung.exceptions; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class IllegalState { + + private static Logger LOGGER = LoggerFactory.getLogger(IllegalState.class); + + public static void main(String[] args) { + + List intList = new ArrayList<>(); + + for (int i = 0; i < 10; i++) { + intList.add(i); + } + + Iterator intListIterator = intList.iterator(); // Initialized with index at -1 + + try { + intListIterator.remove(); // IllegalStateException + } catch (IllegalStateException e) { + LOGGER.error("IllegalStateException caught!"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java new file mode 100644 index 0000000000..319fd33591 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java @@ -0,0 +1,28 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +class ChildThread extends Thread { + + private static Logger LOGGER = LoggerFactory.getLogger(ChildThread.class); + + public void run() { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + LOGGER.error("InterruptedException caught!"); + } + } + +} + +public class InterruptedExceptionExample { + + public static void main(String[] args) throws InterruptedException { + ChildThread childThread = new ChildThread(); + childThread.start(); + childThread.interrupt(); + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java new file mode 100644 index 0000000000..57fcddf76b --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java @@ -0,0 +1,25 @@ +package com.baeldung.exceptions; + +import java.net.MalformedURLException; +import java.net.URL; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class MalformedURL { + + private static Logger LOGGER = LoggerFactory.getLogger(MalformedURL.class); + + public static void main(String[] args) { + + URL baeldungURL = null; + + try { + baeldungURL = new URL("malformedurl"); + } catch (MalformedURLException e) { + LOGGER.error("MalformedURLException caught!"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java new file mode 100644 index 0000000000..2402a786a9 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java @@ -0,0 +1,36 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NullPointer { + + private static Logger LOGGER = LoggerFactory.getLogger(NullPointer.class); + + public static void main(String[] args) { + + Person personObj = null; + + try { + String name = personObj.personName; // Accessing the field of a null object + personObj.personName = "Jon Doe"; // Modifying the field of a null object + } catch (NullPointerException e) { + LOGGER.error("NullPointerException caught!"); + } + + } +} + +class Person { + + public String personName; + + public String getPersonName() { + return personName; + } + + public void setPersonName(String personName) { + this.personName = personName; + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java new file mode 100644 index 0000000000..7050e70aee --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java @@ -0,0 +1,23 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class NumberFormat { + + private static Logger LOGGER = LoggerFactory.getLogger(NumberFormat.class); + + public static void main(String[] args) { + + String str1 = "100ABCD"; + + try { + int x = Integer.parseInt(str1); // Converting string with inappropriate format + int y = Integer.valueOf(str1); + } catch (NumberFormatException e) { + LOGGER.error("NumberFormatException caught!"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java new file mode 100644 index 0000000000..f7fb4c91e4 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java @@ -0,0 +1,25 @@ +package com.baeldung.exceptions; + +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class ParseExceptionExample { + + private static Logger LOGGER = LoggerFactory.getLogger(ParseExceptionExample.class); + + public static void main(String[] args) { + + DateFormat format = new SimpleDateFormat("MM, dd, yyyy"); + + try { + format.parse("01, , 2010"); + } catch (ParseException e) { + LOGGER.error("ParseException caught!"); + } + } + +} diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java new file mode 100644 index 0000000000..bc297be498 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java @@ -0,0 +1,23 @@ +package com.baeldung.exceptions; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class StringIndexOutOfBounds { + + private static Logger LOGGER = LoggerFactory.getLogger(StringIndexOutOfBounds.class); + + public static void main(String[] args) { + + String str = "Hello World"; + + try { + char charAtNegativeIndex = str.charAt(-1); // Trying to access at negative index + char charAtLengthIndex = str.charAt(11); // Trying to access at index equal to size of the string + } catch (StringIndexOutOfBoundsException e) { + LOGGER.error("StringIndexOutOfBoundsException caught"); + } + + } + +} diff --git a/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java b/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java new file mode 100644 index 0000000000..394de9c576 --- /dev/null +++ b/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java @@ -0,0 +1,64 @@ +package com.baeldung.exceptions; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; +import org.mockito.Captor; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; +import org.slf4j.LoggerFactory; +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.classic.spi.LoggingEvent; +import ch.qos.logback.core.Appender; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.verify; + +@RunWith(MockitoJUnitRunner.class) +public class GlobalExceptionHandlerUnitTest { + + @Mock + private Appender mockAppender; + + @Captor + private ArgumentCaptor captorLoggingEvent; + + @Before + public void setup() { + final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + logger.addAppender(mockAppender); + + Handler globalExceptionHandler = new Handler(); + Thread.setDefaultUncaughtExceptionHandler(globalExceptionHandler); + } + + @After + public void teardown() { + final Logger logger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + logger.detachAppender(mockAppender); + } + + @Test + public void whenArithmeticException_thenUseUncaughtExceptionHandler() throws InterruptedException { + + Thread globalExceptionHandlerThread = new Thread() { + public void run() { + GlobalExceptionHandler globalExceptionHandlerObj = new GlobalExceptionHandler(); + globalExceptionHandlerObj.performArithmeticOperation(99, 0); + } + }; + + globalExceptionHandlerThread.start(); + globalExceptionHandlerThread.join(); + + verify(mockAppender).doAppend(captorLoggingEvent.capture()); + LoggingEvent loggingEvent = captorLoggingEvent.getValue(); + + assertThat(loggingEvent.getLevel()).isEqualTo(Level.INFO); + assertThat(loggingEvent.getFormattedMessage()).isEqualTo("Unhandled exception caught!"); + } + +} From aec4ed2d5c3939b9c21ff84ff2cd34c0f15f1d54 Mon Sep 17 00:00:00 2001 From: sampadawagde Date: Tue, 28 Apr 2020 18:20:23 +0530 Subject: [PATCH 111/157] JAVA-928: Migrate property-exp-default-config to parent-boot-2 --- .../property-exp-custom-config/pom.xml | 8 +++++++- .../java/{org => com}/baeldung/SpringContextTest.java | 0 .../property-exp-default-config/pom.xml | 4 ++-- .../java/{org => com}/baeldung/SpringContextTest.java | 0 4 files changed, 9 insertions(+), 3 deletions(-) rename spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/src/test/java/{org => com}/baeldung/SpringContextTest.java (100%) rename spring-boot-modules/spring-boot-property-exp/property-exp-default-config/src/test/java/{org => com}/baeldung/SpringContextTest.java (100%) diff --git a/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml b/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml index 8ea9c8366d..e38a2742d5 100644 --- a/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml +++ b/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/pom.xml @@ -24,6 +24,12 @@ spring-boot-starter-test ${spring-boot.version} test + + + org.junit.vintage + junit-vintage-engine + + @@ -72,7 +78,7 @@ - 1.5.10.RELEASE + 2.2.6.RELEASE Custom Property Value 2.7 1.6.0 diff --git a/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/src/test/java/org/baeldung/SpringContextTest.java b/spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/src/test/java/org/baeldung/SpringContextTest.java rename to spring-boot-modules/spring-boot-property-exp/property-exp-custom-config/src/test/java/com/baeldung/SpringContextTest.java diff --git a/spring-boot-modules/spring-boot-property-exp/property-exp-default-config/pom.xml b/spring-boot-modules/spring-boot-property-exp/property-exp-default-config/pom.xml index aa5b8ef34a..79e194a3b5 100644 --- a/spring-boot-modules/spring-boot-property-exp/property-exp-default-config/pom.xml +++ b/spring-boot-modules/spring-boot-property-exp/property-exp-default-config/pom.xml @@ -9,9 +9,9 @@ com.baeldung - parent-boot-1 + parent-boot-2 0.0.1-SNAPSHOT - ../../../parent-boot-1 + ../../../parent-boot-2 diff --git a/spring-boot-modules/spring-boot-property-exp/property-exp-default-config/src/test/java/org/baeldung/SpringContextTest.java b/spring-boot-modules/spring-boot-property-exp/property-exp-default-config/src/test/java/com/baeldung/SpringContextTest.java similarity index 100% rename from spring-boot-modules/spring-boot-property-exp/property-exp-default-config/src/test/java/org/baeldung/SpringContextTest.java rename to spring-boot-modules/spring-boot-property-exp/property-exp-default-config/src/test/java/com/baeldung/SpringContextTest.java From aa7daf7901d2951fc05fac9e5c352c1fe87dfc3a Mon Sep 17 00:00:00 2001 From: dupirefr Date: Tue, 28 Apr 2020 08:05:50 +0200 Subject: [PATCH 112/157] [JAVA-621] Added missing code * https://www.baeldung.com/java-type-erasure introduction code * https://www.baeldung.com/java-interfaces Electronic interface and Computer class * https://www.baeldung.com/java-abstract-class BoardGame and Checkers classes * https://www.baeldung.com/java-hashcode different ways of implementing hashCode * https://www.baeldung.com/java-inheritance-composition ComputerBuilder and StandardComputerBuilder classes * https://www.baeldung.com/java-equals-hashcode-contracts Renamed method to match article * https://www.baeldung.com/java-static Renamed class to match article * https://www.baeldung.com/java-nested-classes Renamed class to match article --- .../com/baeldung/typeerasure/Example.java | 13 ++++++ .../abstractclasses/overview/BoardGame.java | 9 ++++ .../abstractclasses/overview/Checkers.java | 8 ++++ .../com/baeldung/interfaces/Computer.java | 9 ++++ .../com/baeldung/interfaces/Electronic.java | 22 ++++++++++ .../core-java-lang-oop-methods/pom.xml | 14 +++++++ .../baeldung/hashcode/apachecommons/User.java | 42 +++++++++++++++++++ .../com/baeldung/hashcode/eclipse/User.java | 42 +++++++++++++++++++ .../com/baeldung/hashcode/improved/User.java | 37 ++++++++++++++++ .../com/baeldung/hashcode/intellij/User.java | 40 ++++++++++++++++++ .../com/baeldung/hashcode/lombok/User.java | 22 ++++++++++ .../com/baeldung/hashcode/naive/User.java | 37 ++++++++++++++++ .../hashcode/{entities => standard}/User.java | 3 +- .../baeldung/equalshashcode/TeamUnitTest.java | 2 +- ...{StaticBlock.java => StaticBlockDemo.java} | 4 +- ...Test.java => StaticBlockDemoUnitTest.java} | 4 +- .../model/ComputerBuilder.java | 13 ++++++ .../model/StandardComputerBuilder.java | 13 ++++++ ...mousInner.java => AnonymousInnerTest.java} | 2 +- 19 files changed, 328 insertions(+), 8 deletions(-) create mode 100644 core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Example.java create mode 100644 core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/BoardGame.java create mode 100644 core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/Checkers.java create mode 100644 core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Computer.java create mode 100644 core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Electronic.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/apachecommons/User.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/eclipse/User.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/improved/User.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/intellij/User.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/lombok/User.java create mode 100644 core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/naive/User.java rename core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/{entities => standard}/User.java (89%) rename core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/{StaticBlock.java => StaticBlockDemo.java} (87%) rename core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/{StaticBlockUnitTest.java => StaticBlockDemoUnitTest.java} (80%) create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/ComputerBuilder.java create mode 100644 core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardComputerBuilder.java rename core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/{AnonymousInner.java => AnonymousInnerTest.java} (91%) diff --git a/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Example.java b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Example.java new file mode 100644 index 0000000000..f816fd6d16 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-generics/src/main/java/com/baeldung/typeerasure/Example.java @@ -0,0 +1,13 @@ +package com.baeldung.typeerasure; + +public class Example { + + public static boolean containsElement(E [] elements, E element){ + for (E e : elements){ + if(e.equals(element)){ + return true; + } + } + return false; + } +} diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/BoardGame.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/BoardGame.java new file mode 100644 index 0000000000..e0395cec7e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/BoardGame.java @@ -0,0 +1,9 @@ +package com.baeldung.abstractclasses.overview; + +public abstract class BoardGame { + //... field declarations, constructors + + public abstract void play(); + + //... concrete methods +} diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/Checkers.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/Checkers.java new file mode 100644 index 0000000000..5c911649c8 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/abstractclasses/overview/Checkers.java @@ -0,0 +1,8 @@ +package com.baeldung.abstractclasses.overview; + +public class Checkers extends BoardGame { + @Override + public void play() { + //... implementation + } +} diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Computer.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Computer.java new file mode 100644 index 0000000000..94d39e2448 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Computer.java @@ -0,0 +1,9 @@ +package com.baeldung.interfaces; + +public class Computer implements Electronic { + + @Override + public int getElectricityUse() { + return 1000; + } +} diff --git a/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Electronic.java b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Electronic.java new file mode 100644 index 0000000000..fcaf67dc3a --- /dev/null +++ b/core-java-modules/core-java-lang-oop-inheritance/src/main/java/com/baeldung/interfaces/Electronic.java @@ -0,0 +1,22 @@ +package com.baeldung.interfaces; + +public interface Electronic { + // Constant variable + String LED = "LED"; + + // Abstract method + int getElectricityUse(); + + // Static method + static boolean isEnergyEfficient(String electtronicType) { + if (electtronicType.equals(LED)) { + return true; + } + return false; + } + + //Default method + default void printDescription() { + System.out.println("Electronic Description"); + } +} diff --git a/core-java-modules/core-java-lang-oop-methods/pom.xml b/core-java-modules/core-java-lang-oop-methods/pom.xml index 77e8ded8e7..3590b85454 100644 --- a/core-java-modules/core-java-lang-oop-methods/pom.xml +++ b/core-java-modules/core-java-lang-oop-methods/pom.xml @@ -14,6 +14,17 @@ jar + + org.projectlombok + lombok + ${lombok.version} + + + commons-lang + commons-lang + ${commons-lang.version} + + org.assertj assertj-core @@ -29,6 +40,9 @@ + 1.18.12 + 2.6 + 3.10.0 3.0.3 diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/apachecommons/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/apachecommons/User.java new file mode 100644 index 0000000000..4be082019a --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/apachecommons/User.java @@ -0,0 +1,42 @@ +package com.baeldung.hashcode.apachecommons; + +import org.apache.commons.lang.builder.HashCodeBuilder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class User { + + private final Logger logger = LoggerFactory.getLogger(User.class); + private long id; + private String name; + private String email; + + public User(long id, String name, String email) { + this.id = id; + this.name = name; + this.email = email; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (this.getClass() != o.getClass()) + return false; + User user = (User) o; + return id == user.id && (name.equals(user.name) && email.equals(user.email)); + } + + @Override + public int hashCode() { + return new HashCodeBuilder(17, 37). + append(id). + append(name). + append(email). + toHashCode(); + } + // getters and setters here + +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/eclipse/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/eclipse/User.java new file mode 100644 index 0000000000..e852eef96e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/eclipse/User.java @@ -0,0 +1,42 @@ +package com.baeldung.hashcode.eclipse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class User { + + private final Logger logger = LoggerFactory.getLogger(User.class); + private long id; + private String name; + private String email; + + public User(long id, String name, String email) { + this.id = id; + this.name = name; + this.email = email; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (this.getClass() != o.getClass()) + return false; + User user = (User) o; + return id == user.id && (name.equals(user.name) && email.equals(user.email)); + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((email == null) ? 0 : email.hashCode()); + result = prime * result + (int) (id ^ (id >>> 32)); + result = prime * result + ((name == null) ? 0 : name.hashCode()); + return result; + } + // getters and setters here + +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/improved/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/improved/User.java new file mode 100644 index 0000000000..773a2c7e45 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/improved/User.java @@ -0,0 +1,37 @@ +package com.baeldung.hashcode.improved; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class User { + + private final Logger logger = LoggerFactory.getLogger(User.class); + private long id; + private String name; + private String email; + + public User(long id, String name, String email) { + this.id = id; + this.name = name; + this.email = email; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (this.getClass() != o.getClass()) + return false; + User user = (User) o; + return id == user.id && (name.equals(user.name) && email.equals(user.email)); + } + + @Override + public int hashCode() { + return (int) id * name.hashCode() * email.hashCode(); + } + // getters and setters here + +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/intellij/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/intellij/User.java new file mode 100644 index 0000000000..f7bf1ab735 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/intellij/User.java @@ -0,0 +1,40 @@ +package com.baeldung.hashcode.intellij; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class User { + + private final Logger logger = LoggerFactory.getLogger(User.class); + private long id; + private String name; + private String email; + + public User(long id, String name, String email) { + this.id = id; + this.name = name; + this.email = email; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (this.getClass() != o.getClass()) + return false; + User user = (User) o; + return id == user.id && (name.equals(user.name) && email.equals(user.email)); + } + + @Override + public int hashCode() { + int result = (int) (id ^ (id >>> 32)); + result = 31 * result + name.hashCode(); + result = 31 * result + email.hashCode(); + return result; + } + // getters and setters here + +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/lombok/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/lombok/User.java new file mode 100644 index 0000000000..e34246ce24 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/lombok/User.java @@ -0,0 +1,22 @@ +package com.baeldung.hashcode.lombok; + +import lombok.EqualsAndHashCode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +@EqualsAndHashCode +public class User { + + private final Logger logger = LoggerFactory.getLogger(User.class); + private long id; + private String name; + private String email; + + public User(long id, String name, String email) { + this.id = id; + this.name = name; + this.email = email; + } + // getters and setters here + +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/naive/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/naive/User.java new file mode 100644 index 0000000000..b0a33ad3e9 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/naive/User.java @@ -0,0 +1,37 @@ +package com.baeldung.hashcode.naive; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class User { + + private final Logger logger = LoggerFactory.getLogger(User.class); + private long id; + private String name; + private String email; + + public User(long id, String name, String email) { + this.id = id; + this.name = name; + this.email = email; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null) + return false; + if (this.getClass() != o.getClass()) + return false; + User user = (User) o; + return id == user.id && (name.equals(user.name) && email.equals(user.email)); + } + + @Override + public int hashCode() { + return 1; + } + // getters and setters here + +} diff --git a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/standard/User.java similarity index 89% rename from core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java rename to core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/standard/User.java index 524f176e6b..f8fd5cedbd 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/entities/User.java +++ b/core-java-modules/core-java-lang-oop-methods/src/main/java/com/baeldung/hashcode/standard/User.java @@ -1,4 +1,4 @@ -package com.baeldung.hashcode.entities; +package com.baeldung.hashcode.standard; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,7 +34,6 @@ public class User { hash = 31 * hash + (int) id; hash = 31 * hash + (name == null ? 0 : name.hashCode()); hash = 31 * hash + (email == null ? 0 : email.hashCode()); - logger.info("hashCode() method called - Computed hash: " + hash); return hash; } // getters and setters here diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java index 7dfc6d47a3..308004452b 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java @@ -38,7 +38,7 @@ public class TeamUnitTest { } @Test - public void equalsContract() { + public void equalsHashCodeContracts() { EqualsVerifier.forClass(Team.class).verify(); } diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlock.java b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlockDemo.java similarity index 87% rename from core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlock.java rename to core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlockDemo.java index f3eb447bdd..637bb5e82a 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlock.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/main/java/com/baeldung/staticmodifier/StaticBlockDemo.java @@ -3,7 +3,7 @@ package com.baeldung.staticmodifier; import java.util.LinkedList; import java.util.List; -public class StaticBlock { +public class StaticBlockDemo { private static List ranks = new LinkedList<>(); static { @@ -23,6 +23,6 @@ public class StaticBlock { } public static void setRanks(List ranks) { - StaticBlock.ranks = ranks; + StaticBlockDemo.ranks = ranks; } } diff --git a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockUnitTest.java b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockDemoUnitTest.java similarity index 80% rename from core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockUnitTest.java rename to core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockDemoUnitTest.java index 03f3e0440c..f31a8e8895 100644 --- a/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockUnitTest.java +++ b/core-java-modules/core-java-lang-oop-modifiers/src/test/java/com/baeldung/staticmodifier/StaticBlockDemoUnitTest.java @@ -7,11 +7,11 @@ import java.util.List; import org.junit.Test; -public class StaticBlockUnitTest { +public class StaticBlockDemoUnitTest { @Test public void whenAddedListElementsThroughStaticBlock_thenEnsureCorrectOrder() { - List actualList = StaticBlock.getRanks(); + List actualList = StaticBlockDemo.getRanks(); assertThat(actualList, contains("Lieutenant", "Captain", "Major", "Colonel", "General")); } } diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/ComputerBuilder.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/ComputerBuilder.java new file mode 100644 index 0000000000..4d8574e93f --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/ComputerBuilder.java @@ -0,0 +1,13 @@ +package com.baeldung.inheritancecomposition.model; + +public abstract class ComputerBuilder { + + public final void buildComputer() { + addProcessor(); + addMemory(); + } + + public abstract void addProcessor(); + + public abstract void addMemory(); +} diff --git a/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardComputerBuilder.java b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardComputerBuilder.java new file mode 100644 index 0000000000..76c4732ace --- /dev/null +++ b/core-java-modules/core-java-lang-oop-patterns/src/main/java/com/baeldung/inheritancecomposition/model/StandardComputerBuilder.java @@ -0,0 +1,13 @@ +package com.baeldung.inheritancecomposition.model; + +public class StandardComputerBuilder extends ComputerBuilder { + @Override + public void addProcessor() { + // method implementation + } + + @Override + public void addMemory() { + // method implementation + } +} diff --git a/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerTest.java similarity index 91% rename from core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerTest.java index 9fa8ee9cd5..4e49bb5b41 100644 --- a/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInner.java +++ b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerTest.java @@ -6,7 +6,7 @@ abstract class SimpleAbstractClass { abstract void run(); } -public class AnonymousInner { +public class AnonymousInnerTest { @Test public void run() { From 9e83dbbc854f40b2b7ba6367cf8c3c16431652d3 Mon Sep 17 00:00:00 2001 From: mikr Date: Tue, 28 Apr 2020 22:12:00 +0200 Subject: [PATCH 113/157] JAVA-618 Restore code for Global Exception Handler --- .../baeldung/exceptions/globalexceptionhandler}/Arithmetic.java | 2 +- .../globalexceptionhandler}/ArrayIndexOutOfBounds.java | 2 +- .../baeldung/exceptions/globalexceptionhandler}/ClassCast.java | 2 +- .../exceptions/globalexceptionhandler}/FileNotFound.java | 2 +- .../globalexceptionhandler}/GlobalExceptionHandler.java | 2 +- .../exceptions/globalexceptionhandler}/IllegalArgument.java | 2 +- .../exceptions/globalexceptionhandler}/IllegalState.java | 2 +- .../globalexceptionhandler}/InterruptedExceptionExample.java | 2 +- .../exceptions/globalexceptionhandler}/MalformedURL.java | 2 +- .../exceptions/globalexceptionhandler}/NullPointer.java | 2 +- .../exceptions/globalexceptionhandler}/NumberFormat.java | 2 +- .../globalexceptionhandler}/ParseExceptionExample.java | 2 +- .../globalexceptionhandler}/StringIndexOutOfBounds.java | 2 +- .../globalexceptionhandler}/GlobalExceptionHandlerUnitTest.java | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/Arithmetic.java (87%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/ArrayIndexOutOfBounds.java (92%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/ClassCast.java (92%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/FileNotFound.java (91%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/GlobalExceptionHandler.java (92%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/IllegalArgument.java (87%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/IllegalState.java (92%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/InterruptedExceptionExample.java (91%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/MalformedURL.java (89%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/NullPointer.java (93%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/NumberFormat.java (90%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/ParseExceptionExample.java (90%) rename core-java-modules/{core-java-reflection/src/main/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler}/StringIndexOutOfBounds.java (91%) rename core-java-modules/{core-java-reflection/src/test/java/com/baeldung/reflection/exceptions => core-java-exceptions/src/test/java/com/baeldung/exceptions/globalexceptionhandler}/GlobalExceptionHandlerUnitTest.java (97%) diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/Arithmetic.java similarity index 87% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/Arithmetic.java index 138916ec60..db29198b39 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/Arithmetic.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/Arithmetic.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ArrayIndexOutOfBounds.java similarity index 92% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ArrayIndexOutOfBounds.java index 93b53f284c..54c95f224c 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ArrayIndexOutOfBounds.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ArrayIndexOutOfBounds.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ClassCast.java similarity index 92% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ClassCast.java index 183f8f54a3..8f8a6cf9e6 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ClassCast.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ClassCast.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/FileNotFound.java similarity index 91% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/FileNotFound.java index bb9e0bf4ac..a9f2e5ee84 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/FileNotFound.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/FileNotFound.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import java.io.BufferedReader; import java.io.File; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/GlobalExceptionHandler.java similarity index 92% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/GlobalExceptionHandler.java index ab46c83da4..f2e89f44e3 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/GlobalExceptionHandler.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/GlobalExceptionHandler.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/IllegalArgument.java similarity index 87% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/IllegalArgument.java index 801536cb2d..d54757dfac 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalArgument.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/IllegalArgument.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/IllegalState.java similarity index 92% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/IllegalState.java index e8ddcea3c2..0a812d2b82 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/IllegalState.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/IllegalState.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import java.util.ArrayList; import java.util.Iterator; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/InterruptedExceptionExample.java similarity index 91% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/InterruptedExceptionExample.java index 319fd33591..d0c8bb2cd0 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/InterruptedExceptionExample.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/InterruptedExceptionExample.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/MalformedURL.java similarity index 89% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/MalformedURL.java index 57fcddf76b..9a02f005fd 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/MalformedURL.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/MalformedURL.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import java.net.MalformedURLException; import java.net.URL; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/NullPointer.java similarity index 93% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/NullPointer.java index 2402a786a9..445cbecdc8 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NullPointer.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/NullPointer.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/NumberFormat.java similarity index 90% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/NumberFormat.java index 7050e70aee..576fe51f78 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/NumberFormat.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/NumberFormat.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ParseExceptionExample.java similarity index 90% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ParseExceptionExample.java index f7fb4c91e4..e3b3e04b10 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/ParseExceptionExample.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/ParseExceptionExample.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import java.text.DateFormat; import java.text.ParseException; diff --git a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/StringIndexOutOfBounds.java similarity index 91% rename from core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/StringIndexOutOfBounds.java index bc297be498..0ee132e568 100644 --- a/core-java-modules/core-java-reflection/src/main/java/com/baeldung/reflection/exceptions/StringIndexOutOfBounds.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/globalexceptionhandler/StringIndexOutOfBounds.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/globalexceptionhandler/GlobalExceptionHandlerUnitTest.java similarity index 97% rename from core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/globalexceptionhandler/GlobalExceptionHandlerUnitTest.java index 394de9c576..74ceb3b442 100644 --- a/core-java-modules/core-java-reflection/src/test/java/com/baeldung/reflection/exceptions/GlobalExceptionHandlerUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/globalexceptionhandler/GlobalExceptionHandlerUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.globalexceptionhandler; import org.junit.After; import org.junit.Before; From c223b669be5cc7d913aac5821bd9af034a7a543f Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Mon, 15 Apr 2019 20:47:23 +0200 Subject: [PATCH 114/157] root cause finder --- .../baeldung/exceptions/RootCauseFinder.java | 61 +++++++++++++++++++ .../exceptions/RootCauseFinderTest.java | 51 ++++++++++++++++ 2 files changed, 112 insertions(+) create mode 100644 core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java create mode 100644 core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java diff --git a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java new file mode 100644 index 0000000000..a7963c35a8 --- /dev/null +++ b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java @@ -0,0 +1,61 @@ +package com.baeldung.exceptions; + +import java.util.Objects; + +/** + * Utility class to find root cause exceptions. + */ +public class RootCauseFinder { + + public static Throwable findCauseUsingPlainJava(Throwable throwable) { + Objects.requireNonNull(throwable); + Throwable rootCause = throwable; + while (rootCause.getCause() != null) { + rootCause = rootCause.getCause(); + } + return rootCause; + } + + static class IntParser { + + private IntParser() { + } + + public static int parse(String input) throws InvalidNumber { + if (input == null || input.isEmpty()) { + throw new IllegalArgumentException(); + } + + try { + return new IntParser().stringToInt(input.trim()); + } catch (NaNException ex) { + throw new InvalidNumber(input, ex); + } + } + + private int stringToInt(String numberAsString) throws NaNException { + try { + return Integer.valueOf(numberAsString); + } catch (NumberFormatException ex) { + throw new NaNException(numberAsString, ex); + } + } + + } + + static class InvalidNumber extends Exception { + + InvalidNumber(String input, Throwable thr) { + super("Invalid input for a number: " + input, thr); + } + } + + static class NaNException extends Exception { + + NaNException(String number, Throwable thr) { + super(number + "is not a number", thr); + } + + } + +} diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java new file mode 100644 index 0000000000..1e58e3f602 --- /dev/null +++ b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java @@ -0,0 +1,51 @@ +package com.baeldung.exceptions; + +import com.google.common.base.Throwables; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.junit.jupiter.api.Test; + +import static com.baeldung.exceptions.RootCauseFinder.*; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Tests the {@link RootCauseFinder}. + */ +public class RootCauseFinderTest { + + @Test + public void givenNestedException_whenFindingRootCauseUsingJava_thenRootCauseFound() { + try { + IntParser.parse("text"); + } catch (InvalidNumber ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof NumberFormatException); + } + } + + @Test + public void givenNonNestedException_whenFindingRootCauseUsingJava_thenRootCauseFound() { + try { + IntParser.parse(null); + } catch (Exception ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof IllegalArgumentException); + } + } + + @Test + public void givenNestedException_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { + try { + IntParser.parse("text"); + } catch (InvalidNumber ex) { + assertTrue(ExceptionUtils.getRootCause(ex) instanceof NumberFormatException); + } + } + + @Test + public void givenNestedException_whenFindingRootCauseUsingGuava_thenRootCauseFound() { + try { + IntParser.parse("text"); + } catch (InvalidNumber ex) { + assertTrue(Throwables.getRootCause(ex) instanceof NumberFormatException); + } + } + +} From c59d9dbf8f886a80d1b1dd2a7b1e3cc2593099e6 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Mon, 29 Apr 2019 19:58:51 +0200 Subject: [PATCH 115/157] changed example for finder of root cause exception --- .../baeldung/exceptions/RootCauseFinder.java | 68 ++++++++++++++----- .../exceptions/RootCauseFinderTest.java | 57 ++++++++++++---- 2 files changed, 94 insertions(+), 31 deletions(-) diff --git a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java index a7963c35a8..11f29a2cf0 100644 --- a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java +++ b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java @@ -1,5 +1,8 @@ package com.baeldung.exceptions; +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeParseException; import java.util.Objects; /** @@ -16,44 +19,75 @@ public class RootCauseFinder { return rootCause; } - static class IntParser { + /** + * Calculates the age of a person from a given date. + */ + static class AgeCalculator { - private IntParser() { + private AgeCalculator() { } - public static int parse(String input) throws InvalidNumber { - if (input == null || input.isEmpty()) { + public static int calculateAge(String birthDate) throws CalculationException { + if (birthDate == null || birthDate.isEmpty()) { throw new IllegalArgumentException(); } try { - return new IntParser().stringToInt(input.trim()); - } catch (NaNException ex) { - throw new InvalidNumber(input, ex); + return calculateDifference(birthDate).getYears(); + } catch (DateParseException ex) { + throw new CalculationException(ex); } } - private int stringToInt(String numberAsString) throws NaNException { + private static Period calculateDifference(String birthDateAsString) throws DateParseException { + + LocalDate birthDate = null; try { - return Integer.valueOf(numberAsString); - } catch (NumberFormatException ex) { - throw new NaNException(numberAsString, ex); + birthDate = LocalDate.parse(birthDateAsString); + } catch (DateTimeParseException ex) { + throw new InvalidFormatException(birthDateAsString, ex); } + + LocalDate today = LocalDate.now(); + + if (birthDate.isAfter(today)) { + throw new DateOutOfRangeException(birthDateAsString); + } + + return Period.between(birthDate, today); } } - static class InvalidNumber extends Exception { + static class CalculationException extends Exception { - InvalidNumber(String input, Throwable thr) { - super("Invalid input for a number: " + input, thr); + CalculationException(DateParseException ex) { + super(ex); } } - static class NaNException extends Exception { + static class DateParseException extends Exception { - NaNException(String number, Throwable thr) { - super(number + "is not a number", thr); + DateParseException(String input) { + super(input); + } + + DateParseException(String input, Throwable thr) { + super(input, thr); + } + } + + static class InvalidFormatException extends DateParseException { + + InvalidFormatException(String input, Throwable thr) { + super("Invalid date format: " + input, thr); + } + } + + static class DateOutOfRangeException extends DateParseException { + + DateOutOfRangeException(String date) { + super("Date out of range: " + date); } } diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java index 1e58e3f602..c333a7ac26 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java +++ b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java @@ -4,6 +4,8 @@ import com.google.common.base.Throwables; import org.apache.commons.lang3.exception.ExceptionUtils; import org.junit.jupiter.api.Test; +import java.time.format.DateTimeParseException; + import static com.baeldung.exceptions.RootCauseFinder.*; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -13,38 +15,65 @@ import static org.junit.jupiter.api.Assertions.assertTrue; public class RootCauseFinderTest { @Test - public void givenNestedException_whenFindingRootCauseUsingJava_thenRootCauseFound() { + public void givenWrongFormatDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { try { - IntParser.parse("text"); - } catch (InvalidNumber ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof NumberFormatException); + AgeCalculator.calculateAge("010102"); + } catch (CalculationException ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof DateTimeParseException); } } @Test - public void givenNonNestedException_whenFindingRootCauseUsingJava_thenRootCauseFound() { + public void givenOutOfRangeDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { try { - IntParser.parse(null); + AgeCalculator.calculateAge("2020-04-04"); + } catch (CalculationException ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof DateOutOfRangeException); + } + } + + @Test + public void givenNullDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge(null); } catch (Exception ex) { assertTrue(findCauseUsingPlainJava(ex) instanceof IllegalArgumentException); } } @Test - public void givenNestedException_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { + public void givenWrongFormatDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { try { - IntParser.parse("text"); - } catch (InvalidNumber ex) { - assertTrue(ExceptionUtils.getRootCause(ex) instanceof NumberFormatException); + AgeCalculator.calculateAge("010102"); + } catch (CalculationException ex) { + assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateTimeParseException); } } @Test - public void givenNestedException_whenFindingRootCauseUsingGuava_thenRootCauseFound() { + public void givenOutOfRangeDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { try { - IntParser.parse("text"); - } catch (InvalidNumber ex) { - assertTrue(Throwables.getRootCause(ex) instanceof NumberFormatException); + AgeCalculator.calculateAge("2020-04-04"); + } catch (CalculationException ex) { + assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateOutOfRangeException); + } + } + + @Test + public void givenWrongFormatDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("010102"); + } catch (CalculationException ex) { + assertTrue(Throwables.getRootCause(ex) instanceof DateTimeParseException); + } + } + + @Test + public void givenOutOfRangeDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("2020-04-04"); + } catch (CalculationException ex) { + assertTrue(Throwables.getRootCause(ex) instanceof DateOutOfRangeException); } } From cdd14b23f7b491964d0c755d2248f8bf886db80b Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Wed, 1 May 2019 13:10:42 +0200 Subject: [PATCH 116/157] AgeCalculator changes --- .../com/baeldung/exceptions/RootCauseFinder.java | 14 +++++++------- .../baeldung/exceptions/RootCauseFinderTest.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java index 11f29a2cf0..e05dc7a6cd 100644 --- a/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java +++ b/core-java-modules/core-java-lang-2/src/test/java/com/baeldung/exceptions/RootCauseFinder.java @@ -33,28 +33,28 @@ public class RootCauseFinder { } try { - return calculateDifference(birthDate).getYears(); + return Period + .between(parseDate(birthDate), LocalDate.now()) + .getYears(); } catch (DateParseException ex) { throw new CalculationException(ex); } } - private static Period calculateDifference(String birthDateAsString) throws DateParseException { + private static LocalDate parseDate(String birthDateAsString) throws DateParseException { - LocalDate birthDate = null; + LocalDate birthDate; try { birthDate = LocalDate.parse(birthDateAsString); } catch (DateTimeParseException ex) { throw new InvalidFormatException(birthDateAsString, ex); } - LocalDate today = LocalDate.now(); - - if (birthDate.isAfter(today)) { + if (birthDate.isAfter(LocalDate.now())) { throw new DateOutOfRangeException(birthDateAsString); } - return Period.between(birthDate, today); + return birthDate; } } diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java index c333a7ac26..cfac81b812 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java +++ b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java @@ -2,9 +2,12 @@ package com.baeldung.exceptions; import com.google.common.base.Throwables; import org.apache.commons.lang3.exception.ExceptionUtils; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import java.time.LocalDate; import java.time.format.DateTimeParseException; +import java.time.temporal.ChronoUnit; import static com.baeldung.exceptions.RootCauseFinder.*; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -14,6 +17,19 @@ import static org.junit.jupiter.api.Assertions.assertTrue; */ public class RootCauseFinderTest { + @Test + public void givenBirthDate_whenCalculatingAge_thenAgeReturned() { + try { + int age = AgeCalculator.calculateAge("1990-01-01"); + Assertions.assertEquals(1990, LocalDate + .now() + .minus(age, ChronoUnit.YEARS) + .getYear()); + } catch (CalculationException e) { + Assertions.fail(e.getMessage()); + } + } + @Test public void givenWrongFormatDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { try { From d973864c8b014e3c7db92dd14d6751e8e5980054 Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Wed, 1 May 2019 13:10:42 +0200 Subject: [PATCH 117/157] AgeCalculator changesJava-618 Restore RootCauseFinder code --- .../baeldung/exceptions/RootCauseFinder.java | 95 ++++++++++++++++++ .../exceptions/RootCauseFinderTest.java | 96 +++++++++++++++++++ 2 files changed, 191 insertions(+) create mode 100644 core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java create mode 100644 core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java diff --git a/core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java new file mode 100644 index 0000000000..e05dc7a6cd --- /dev/null +++ b/core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java @@ -0,0 +1,95 @@ +package com.baeldung.exceptions; + +import java.time.LocalDate; +import java.time.Period; +import java.time.format.DateTimeParseException; +import java.util.Objects; + +/** + * Utility class to find root cause exceptions. + */ +public class RootCauseFinder { + + public static Throwable findCauseUsingPlainJava(Throwable throwable) { + Objects.requireNonNull(throwable); + Throwable rootCause = throwable; + while (rootCause.getCause() != null) { + rootCause = rootCause.getCause(); + } + return rootCause; + } + + /** + * Calculates the age of a person from a given date. + */ + static class AgeCalculator { + + private AgeCalculator() { + } + + public static int calculateAge(String birthDate) throws CalculationException { + if (birthDate == null || birthDate.isEmpty()) { + throw new IllegalArgumentException(); + } + + try { + return Period + .between(parseDate(birthDate), LocalDate.now()) + .getYears(); + } catch (DateParseException ex) { + throw new CalculationException(ex); + } + } + + private static LocalDate parseDate(String birthDateAsString) throws DateParseException { + + LocalDate birthDate; + try { + birthDate = LocalDate.parse(birthDateAsString); + } catch (DateTimeParseException ex) { + throw new InvalidFormatException(birthDateAsString, ex); + } + + if (birthDate.isAfter(LocalDate.now())) { + throw new DateOutOfRangeException(birthDateAsString); + } + + return birthDate; + } + + } + + static class CalculationException extends Exception { + + CalculationException(DateParseException ex) { + super(ex); + } + } + + static class DateParseException extends Exception { + + DateParseException(String input) { + super(input); + } + + DateParseException(String input, Throwable thr) { + super(input, thr); + } + } + + static class InvalidFormatException extends DateParseException { + + InvalidFormatException(String input, Throwable thr) { + super("Invalid date format: " + input, thr); + } + } + + static class DateOutOfRangeException extends DateParseException { + + DateOutOfRangeException(String date) { + super("Date out of range: " + date); + } + + } + +} diff --git a/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java b/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java new file mode 100644 index 0000000000..cfac81b812 --- /dev/null +++ b/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java @@ -0,0 +1,96 @@ +package com.baeldung.exceptions; + +import com.google.common.base.Throwables; +import org.apache.commons.lang3.exception.ExceptionUtils; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.time.LocalDate; +import java.time.format.DateTimeParseException; +import java.time.temporal.ChronoUnit; + +import static com.baeldung.exceptions.RootCauseFinder.*; +import static org.junit.jupiter.api.Assertions.assertTrue; + +/** + * Tests the {@link RootCauseFinder}. + */ +public class RootCauseFinderTest { + + @Test + public void givenBirthDate_whenCalculatingAge_thenAgeReturned() { + try { + int age = AgeCalculator.calculateAge("1990-01-01"); + Assertions.assertEquals(1990, LocalDate + .now() + .minus(age, ChronoUnit.YEARS) + .getYear()); + } catch (CalculationException e) { + Assertions.fail(e.getMessage()); + } + } + + @Test + public void givenWrongFormatDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("010102"); + } catch (CalculationException ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof DateTimeParseException); + } + } + + @Test + public void givenOutOfRangeDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("2020-04-04"); + } catch (CalculationException ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof DateOutOfRangeException); + } + } + + @Test + public void givenNullDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge(null); + } catch (Exception ex) { + assertTrue(findCauseUsingPlainJava(ex) instanceof IllegalArgumentException); + } + } + + @Test + public void givenWrongFormatDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("010102"); + } catch (CalculationException ex) { + assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateTimeParseException); + } + } + + @Test + public void givenOutOfRangeDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("2020-04-04"); + } catch (CalculationException ex) { + assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateOutOfRangeException); + } + } + + @Test + public void givenWrongFormatDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("010102"); + } catch (CalculationException ex) { + assertTrue(Throwables.getRootCause(ex) instanceof DateTimeParseException); + } + } + + @Test + public void givenOutOfRangeDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { + try { + AgeCalculator.calculateAge("2020-04-04"); + } catch (CalculationException ex) { + assertTrue(Throwables.getRootCause(ex) instanceof DateOutOfRangeException); + } + } + +} From 491e79bd3ea1f958392d158df85c8015f2e5785c Mon Sep 17 00:00:00 2001 From: Marcos Lopez Gonzalez Date: Sat, 4 May 2019 19:59:12 +0200 Subject: [PATCH 118/157] test renamed to end with UnitTest suffix --- .../{RootCauseFinderTest.java => RootCauseFinderUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java/src/test/java/com/baeldung/exceptions/{RootCauseFinderTest.java => RootCauseFinderUnitTest.java} (98%) diff --git a/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java b/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java rename to core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java index cfac81b812..03e6ac0f00 100644 --- a/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java +++ b/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java @@ -15,7 +15,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; /** * Tests the {@link RootCauseFinder}. */ -public class RootCauseFinderTest { +public class RootCauseFinderUnitTest { @Test public void givenBirthDate_whenCalculatingAge_thenAgeReturned() { From e7cd7da8b8c4635102e64a86ca30c999e33f4b48 Mon Sep 17 00:00:00 2001 From: mikr Date: Tue, 28 Apr 2020 23:37:45 +0200 Subject: [PATCH 119/157] Java-618 Restore RootCauseFinder code (move classes to core-java-modules) --- .../baeldung/exceptions/rootcausefinder}/RootCauseFinder.java | 2 +- .../exceptions/rootcausefinder}/RootCauseFinderUnitTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename {core-java/src/main/java/com/baeldung/exceptions => core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/rootcausefinder}/RootCauseFinder.java (98%) rename {core-java/src/test/java/com/baeldung/exceptions => core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder}/RootCauseFinderUnitTest.java (98%) diff --git a/core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinder.java similarity index 98% rename from core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java rename to core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinder.java index e05dc7a6cd..06610f3874 100644 --- a/core-java/src/main/java/com/baeldung/exceptions/RootCauseFinder.java +++ b/core-java-modules/core-java-exceptions/src/main/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinder.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.rootcausefinder; import java.time.LocalDate; import java.time.Period; diff --git a/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java similarity index 98% rename from core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java rename to core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java index 03e6ac0f00..f963f23712 100644 --- a/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.exceptions; +package com.baeldung.exceptions.rootcausefinder; import com.google.common.base.Throwables; import org.apache.commons.lang3.exception.ExceptionUtils; From f01f9f9d86c98e8e61fd55bde798938de93f2a33 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Wed, 29 Apr 2020 09:08:43 +0200 Subject: [PATCH 120/157] [JAVA-621] Used *UnitTest suffix instead of Test for compliance with Maven PMD (article need update) --- .../{AnonymousInnerTest.java => AnonymousInnerUnitTest.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/{AnonymousInnerTest.java => AnonymousInnerUnitTest.java} (90%) diff --git a/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerTest.java b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerUnitTest.java similarity index 90% rename from core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerTest.java rename to core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerUnitTest.java index 4e49bb5b41..98917b9e05 100644 --- a/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerTest.java +++ b/core-java-modules/core-java-lang-oop-types/src/test/java/com/baeldung/nestedclass/AnonymousInnerUnitTest.java @@ -6,7 +6,7 @@ abstract class SimpleAbstractClass { abstract void run(); } -public class AnonymousInnerTest { +public class AnonymousInnerUnitTest { @Test public void run() { From 666ca1ac69e13b8a20e87aabde9aeb25f066e128 Mon Sep 17 00:00:00 2001 From: mikr Date: Wed, 29 Apr 2020 10:13:58 +0200 Subject: [PATCH 121/157] Java-618 Fix build failure --- core-java-modules/core-java-exceptions/pom.xml | 6 ++++++ .../exceptions/rootcausefinder/RootCauseFinderUnitTest.java | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-exceptions/pom.xml b/core-java-modules/core-java-exceptions/pom.xml index 60c5e2650a..0778b6b5a3 100644 --- a/core-java-modules/core-java-exceptions/pom.xml +++ b/core-java-modules/core-java-exceptions/pom.xml @@ -29,6 +29,11 @@ ${lombok.version} provided + + org.apache.commons + commons-lang3 + ${commons.lang3.version} + org.assertj @@ -40,6 +45,7 @@ 1.5.0-b01 + 3.10 3.10.0 diff --git a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java index f963f23712..f42388857a 100644 --- a/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java +++ b/core-java-modules/core-java-exceptions/src/test/java/com/baeldung/exceptions/rootcausefinder/RootCauseFinderUnitTest.java @@ -1,5 +1,7 @@ package com.baeldung.exceptions.rootcausefinder; +import com.baeldung.exceptions.rootcausefinder.RootCauseFinder.CalculationException; +import com.baeldung.exceptions.rootcausefinder.RootCauseFinder.DateOutOfRangeException; import com.google.common.base.Throwables; import org.apache.commons.lang3.exception.ExceptionUtils; import org.junit.jupiter.api.Assertions; @@ -9,7 +11,8 @@ import java.time.LocalDate; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoUnit; -import static com.baeldung.exceptions.RootCauseFinder.*; +import static com.baeldung.exceptions.rootcausefinder.RootCauseFinder.AgeCalculator; +import static com.baeldung.exceptions.rootcausefinder.RootCauseFinder.findCauseUsingPlainJava; import static org.junit.jupiter.api.Assertions.assertTrue; /** From da22d7a839156017cfc815b3fd50e3e6180bf295 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Wed, 29 Apr 2020 10:14:43 +0200 Subject: [PATCH 122/157] [JAVA-621] Fixed package and import --- .../com/baeldung/hashcode/{entities => }/UserUnitTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) rename core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/{entities => }/UserUnitTest.java (90%) diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/UserUnitTest.java similarity index 90% rename from core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java rename to core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/UserUnitTest.java index 44ea7efed1..51475acabf 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/entities/UserUnitTest.java +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/UserUnitTest.java @@ -1,5 +1,6 @@ -package com.baeldung.hashcode.entities; +package com.baeldung.hashcode; +import com.baeldung.hashcode.standard.User; import org.junit.After; import org.junit.Assert; import org.junit.Before; From 95a29d7e0b889826058564d17b8bcfacdffc23bf Mon Sep 17 00:00:00 2001 From: mikr Date: Wed, 29 Apr 2020 10:24:20 +0200 Subject: [PATCH 123/157] Java-618 Fix build failure (2) --- .../exceptions/RootCauseFinderTest.java | 96 ------------------- 1 file changed, 96 deletions(-) delete mode 100644 core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java b/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java deleted file mode 100644 index cfac81b812..0000000000 --- a/core-java-modules/core-java/src/test/java/com/baeldung/exceptions/RootCauseFinderTest.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.baeldung.exceptions; - -import com.google.common.base.Throwables; -import org.apache.commons.lang3.exception.ExceptionUtils; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -import java.time.LocalDate; -import java.time.format.DateTimeParseException; -import java.time.temporal.ChronoUnit; - -import static com.baeldung.exceptions.RootCauseFinder.*; -import static org.junit.jupiter.api.Assertions.assertTrue; - -/** - * Tests the {@link RootCauseFinder}. - */ -public class RootCauseFinderTest { - - @Test - public void givenBirthDate_whenCalculatingAge_thenAgeReturned() { - try { - int age = AgeCalculator.calculateAge("1990-01-01"); - Assertions.assertEquals(1990, LocalDate - .now() - .minus(age, ChronoUnit.YEARS) - .getYear()); - } catch (CalculationException e) { - Assertions.fail(e.getMessage()); - } - } - - @Test - public void givenWrongFormatDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("010102"); - } catch (CalculationException ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof DateTimeParseException); - } - } - - @Test - public void givenOutOfRangeDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("2020-04-04"); - } catch (CalculationException ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof DateOutOfRangeException); - } - } - - @Test - public void givenNullDate_whenFindingRootCauseUsingJava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge(null); - } catch (Exception ex) { - assertTrue(findCauseUsingPlainJava(ex) instanceof IllegalArgumentException); - } - } - - @Test - public void givenWrongFormatDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("010102"); - } catch (CalculationException ex) { - assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateTimeParseException); - } - } - - @Test - public void givenOutOfRangeDate_whenFindingRootCauseUsingApacheCommons_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("2020-04-04"); - } catch (CalculationException ex) { - assertTrue(ExceptionUtils.getRootCause(ex) instanceof DateOutOfRangeException); - } - } - - @Test - public void givenWrongFormatDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("010102"); - } catch (CalculationException ex) { - assertTrue(Throwables.getRootCause(ex) instanceof DateTimeParseException); - } - } - - @Test - public void givenOutOfRangeDate_whenFindingRootCauseUsingGuava_thenRootCauseFound() { - try { - AgeCalculator.calculateAge("2020-04-04"); - } catch (CalculationException ex) { - assertTrue(Throwables.getRootCause(ex) instanceof DateOutOfRangeException); - } - } - -} From 5aa57193e1328935b4cc1775ae378d846a16fd0b Mon Sep 17 00:00:00 2001 From: Ankur Gupta Date: Wed, 29 Apr 2020 20:10:16 +0530 Subject: [PATCH 124/157] ankurguptajec@gmail.com (#9192) * Java Example of Hexagonal Architecture * removing unnecessary maven files from pull request and spaces in code * Removing unnecessary lines * Example code for using Multiple Cache Manager in SpringBoot * BAEL-3963:Using multiple cache managers in Spring * removing new module created in last pull request * Fixes as per editor Suggestions * fixing spacing issue in pom.xml * Fixing spacing issue in pom.xml * Fixing spacing issue 2 * Formatting space issues in pom.xml Co-authored-by: Ankur Gupta --- spring-caching/pom.xml | 120 ++++++++++++++++++++--------------------- 1 file changed, 59 insertions(+), 61 deletions(-) diff --git a/spring-caching/pom.xml b/spring-caching/pom.xml index f56d3cf328..80644f8a5f 100644 --- a/spring-caching/pom.xml +++ b/spring-caching/pom.xml @@ -2,66 +2,64 @@ - 4.0.0 - spring-caching - 0.1-SNAPSHOT - spring-caching - war + 4.0.0 + spring-caching + 0.1-SNAPSHOT + spring-caching + war - - com.baeldung - parent-boot-2 - 0.0.1-SNAPSHOT - ../parent-boot-2 - + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../parent-boot-2 + - - - org.springframework.boot - spring-boot-starter-web - - - org.springframework - spring-context - - - org.springframework.boot - spring-boot-starter-cache - - - org.springframework - spring-web - - - org.springframework - spring-webmvc - - - org.ehcache - ehcache - - - org.springframework - spring-test - test - - - com.github.ben-manes.caffeine - caffeine - - - com.h2database - h2 - runtime - - - org.springframework.boot - spring-boot-starter-jdbc - - - - - 3.5.2 - - - \ No newline at end of file + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework + spring-context + + + org.springframework.boot + spring-boot-starter-cache + + + org.springframework + spring-web + + + org.springframework + spring-webmvc + + + org.ehcache + ehcache + + + org.springframework + spring-test + test + + + com.github.ben-manes.caffeine + caffeine + + + com.h2database + h2 + runtime + + + org.springframework.boot + spring-boot-starter-jdbc + + + + 3.5.2 + + From 9bf7546d42eae5dd8d191c29ee7bb56c242120bf Mon Sep 17 00:00:00 2001 From: Sasa M Date: Wed, 29 Apr 2020 21:55:30 +0200 Subject: [PATCH 125/157] Creating TypeMap to use property mapping and converter class --- .../com/baeldung/modelmapper/MapperUtil.java | 2 +- .../baeldung/modelmapper/UserPropertyMap.java | 37 ------------------- .../modelmapper/UsersListConverter.java | 23 ++++++++++++ .../modelmapper/UsersListMappingUnitTest.java | 30 +++++++++------ 4 files changed, 43 insertions(+), 49 deletions(-) delete mode 100644 java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java create mode 100644 java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java index 9c6a5a0320..23a549e652 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/MapperUtil.java @@ -6,7 +6,7 @@ import java.util.List; import java.util.stream.Collectors; /** - * This is a helper class that contains method for generic mapping of the users list. + * This is a helper class that contains method for custom mapping of the users list. * Initially, an instance of ModelMapper was created. * * @author Sasa Milenkovic diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java deleted file mode 100644 index 5b2942b158..0000000000 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.modelmapper; - -import org.modelmapper.AbstractConverter; -import org.modelmapper.Converter; -import org.modelmapper.PropertyMap; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * UserPropertyMap class instantiates the converter to map the data from the UserList to the UsersLisDTO. - * In the configuration method, we call a converter to do the mapping. - * - * @author Sasa Milenkovic - */ -public class UserPropertyMap extends PropertyMap { - - - Converter, List> converter = new AbstractConverter, List>() { - - - @Override - protected List convert(List users) { - - return users - .stream() - .map(User::getUsername) - .collect(Collectors.toList()); - } - }; - - @Override - protected void configure() { - - using(converter).map(source.getUsers(), destination.getUsernames()); - } -} diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java new file mode 100644 index 0000000000..19423713e2 --- /dev/null +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UsersListConverter.java @@ -0,0 +1,23 @@ +package com.baeldung.modelmapper; + +import org.modelmapper.AbstractConverter; + +import java.util.List; +import java.util.stream.Collectors; + +/** + * UsersListConverter class map the property data from the list of users into the list of user names. + * + * @author Sasa Milenkovic + */ +public class UsersListConverter extends AbstractConverter, List> { + + @Override + protected List convert(List users) { + + return users + .stream() + .map(User::getUsername) + .collect(Collectors.toList()); + } +} diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java index 982622e1f5..a8a72b12f7 100644 --- a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UsersListMappingUnitTest.java @@ -4,6 +4,7 @@ import org.hamcrest.Matchers; import org.junit.Before; import org.junit.Test; import org.modelmapper.ModelMapper; +import org.modelmapper.TypeMap; import org.modelmapper.TypeToken; import java.util.ArrayList; @@ -12,14 +13,12 @@ import java.util.List; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasItems; import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.collection.IsCollectionWithSize.hasSize; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; /** * This class has test methods of mapping Integer to Character list, - * mapping user list to DTO list using MapperUtil generic methods and Converter + * mapping users list to DTO list using MapperUtil custom type method and property mapping using converter class * * @author Sasa Milenkovic */ @@ -32,7 +31,12 @@ public class UsersListMappingUnitTest { public void init() { modelMapper = new ModelMapper(); - modelMapper.addMappings(new UserPropertyMap()); + + TypeMap typeMap = modelMapper.createTypeMap(UserList.class, UserListDTO.class); + + typeMap.addMappings(mapper -> mapper.using(new UsersListConverter()) + .map(UserList::getUsers, UserListDTO::setUsernames)); + users = new ArrayList(); users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); @@ -41,7 +45,7 @@ public class UsersListMappingUnitTest { } @Test - public void whenMapIntegerToCharList() { + public void whenInteger_thenMapToCharacter() { List integers = new ArrayList(); @@ -57,9 +61,9 @@ public class UsersListMappingUnitTest { } @Test - public void givenUsersList_whenUseGenericType_thenMapToDto() { + public void givenUsersList_whenUseGenericType_thenMapToUserDTO() { - // Mapping lists using custom type methods + // Mapping lists using custom (generic) type mapping List userDtoList = MapperUtil.mapList(users, UserDTO.class); @@ -68,16 +72,20 @@ public class UsersListMappingUnitTest { .and(hasProperty("email", equalTo("user1@baeldung.com"))) .and(hasProperty("username", equalTo("user1"))))); - // Mapping lists using PropertyMap and Converter + + } + + @Test + public void givenUsersList_whenUseConverter_thenMapToUsernames() { + + // Mapping lists using property mapping and converter UserList userList = new UserList(); userList.setUsers(users); UserListDTO dtos = new UserListDTO(); modelMapper.map(userList, dtos); - assertNotNull(dtos); - assertThat(dtos, Matchers.hasProperty("usernames")); - assertThat(dtos.getUsernames(), hasSize(3)); + assertThat(dtos.getUsernames(), hasItems("user1", "user2", "user3")); } From 2c99a832cdf6a9850790aad0b4ab69f2b6192ac0 Mon Sep 17 00:00:00 2001 From: SippingCode <55111084+SippingCode@users.noreply.github.com> Date: Thu, 30 Apr 2020 08:16:05 +0200 Subject: [PATCH 126/157] Bael 3970 (#9132) * Manual logout with Spring Security - Basic manual logout - logout with Clear Data Site Header * Add missing annotation for controller. Change mapping URL value. * Add intergration tests for manual logouts. * BAEL-3970 - Add asserts on test. Fix tests names. Remove unused imports. * BAEL-3970 - Use PostMapping annotation. Remove unnecessary information for security configuration. * remove logout controllers * Add multiple entrypoints configurations. Create custom handlers for different logouts (basic, cookie clearing, clear-site-data). * Refactor configuration with lambda DSL. --- .../manuallogout/BasicAuthController.java | 32 ------- .../manuallogout/ClearSiteDataController.java | 29 ------ .../SimpleSecurityConfiguration.java | 89 ++++++++++++++----- .../ManualLogoutIntegrationTest.java | 24 +++-- 4 files changed, 84 insertions(+), 90 deletions(-) delete mode 100644 spring-5-security/src/main/java/com/baeldung/manuallogout/BasicAuthController.java delete mode 100644 spring-5-security/src/main/java/com/baeldung/manuallogout/ClearSiteDataController.java diff --git a/spring-5-security/src/main/java/com/baeldung/manuallogout/BasicAuthController.java b/spring-5-security/src/main/java/com/baeldung/manuallogout/BasicAuthController.java deleted file mode 100644 index 8f01940dce..0000000000 --- a/spring-5-security/src/main/java/com/baeldung/manuallogout/BasicAuthController.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.manuallogout; - -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.http.Cookie; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -@Controller -public class BasicAuthController { - - @RequestMapping(value = {"/basiclogout"}, method = RequestMethod.POST) - public String logout(HttpServletRequest request, HttpServletResponse response) { - HttpSession session; - SecurityContextHolder.clearContext(); - session = request.getSession(false); - if (session != null) { - session.invalidate(); - } - for (Cookie cookie : request.getCookies()) { - String cookieName = cookie.getName(); - Cookie cookieToDelete = new Cookie(cookieName, null); - cookieToDelete.setMaxAge(0); - response.addCookie(cookieToDelete); - } - return "redirect:/login?logout"; - } -} diff --git a/spring-5-security/src/main/java/com/baeldung/manuallogout/ClearSiteDataController.java b/spring-5-security/src/main/java/com/baeldung/manuallogout/ClearSiteDataController.java deleted file mode 100644 index 7eef397da3..0000000000 --- a/spring-5-security/src/main/java/com/baeldung/manuallogout/ClearSiteDataController.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.manuallogout; - -import org.springframework.security.core.Authentication; -import org.springframework.security.core.context.SecurityContextHolder; -import org.springframework.security.web.authentication.logout.HeaderWriterLogoutHandler; -import org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter; -import org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive; -import org.springframework.stereotype.Controller; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -@Controller -public class ClearSiteDataController { - - Directive[] SOURCE = {Directive.COOKIES, Directive.STORAGE, Directive.EXECUTION_CONTEXTS, Directive.CACHE}; - - @RequestMapping(value = {"/csdlogout"}, method = RequestMethod.POST) - public String logout(HttpServletRequest request, HttpServletResponse response) { - Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - if (auth != null) { - ClearSiteDataHeaderWriter csdHeaderWriter = new ClearSiteDataHeaderWriter(SOURCE); - new HeaderWriterLogoutHandler(csdHeaderWriter).logout(request, response, auth); - } - return "redirect:/login?logout"; - } -} diff --git a/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java b/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java index 6f14f6fca2..63394b64f2 100644 --- a/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java +++ b/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java @@ -1,39 +1,80 @@ package com.baeldung.manuallogout; import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler; +import org.springframework.security.web.authentication.logout.HeaderWriterLogoutHandler; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices; +import org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter; + +import javax.servlet.http.Cookie; + +import static org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter.Directive.*; @Configuration @EnableWebSecurity -public class SimpleSecurityConfiguration extends WebSecurityConfigurerAdapter { +public class SimpleSecurityConfiguration { - @Override - protected void configure(HttpSecurity http) throws Exception { - http.formLogin() - .loginProcessingUrl("/login") - .loginPage("/login") - .usernameParameter("username") - .passwordParameter("password") - .defaultSuccessUrl("/") - .failureUrl("/login?error"); + @Order(3) + @Configuration + public static class DefaultLogoutConfiguration extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .antMatcher("/basic/**") + .authorizeRequests(authz -> authz.anyRequest().permitAll()) + .logout(logout -> logout + .logoutUrl("/basic/basiclogout") + .addLogoutHandler(new SecurityContextLogoutHandler()) + .addLogoutHandler(new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY)) + ); + } } - @Override - protected void configure(AuthenticationManagerBuilder auth) throws Exception { - auth.inMemoryAuthentication() - .withUser("user") - .password("password") - .roles("USER") - .and() - .withUser("manager") - .password("password") - .credentialsExpired(true) - .accountExpired(true) - .accountLocked(true) - .authorities("WRITE_PRIVILEGES", "READ_PRIVILEGES") - .roles("MANAGER"); + @Order(2) + @Configuration + public static class AllCookieClearingLogoutConfiguration extends WebSecurityConfigurerAdapter { + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .antMatcher("/cookies/**") + .authorizeRequests(authz -> authz.anyRequest().permitAll()) + .logout(logout -> logout + .logoutUrl("/cookies/cookielogout") + .addLogoutHandler(new SecurityContextLogoutHandler()) + .addLogoutHandler((request, response, auth) -> { + for (Cookie cookie : request.getCookies()) { + String cookieName = cookie.getName(); + Cookie cookieToDelete = new Cookie(cookieName, null); + cookieToDelete.setMaxAge(0); + response.addCookie(cookieToDelete); + } + } + )); + } + } + + @Order(1) + @Configuration + public static class ClearSiteDataHeaderLogoutConfiguration extends WebSecurityConfigurerAdapter { + + private static final ClearSiteDataHeaderWriter.Directive[] SOURCE = + { CACHE, COOKIES, STORAGE, EXECUTION_CONTEXTS }; + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .antMatcher("/csd/**") + .authorizeRequests(authz -> authz.anyRequest().permitAll()) + .logout(logout -> logout + .logoutUrl("/csd/csdlogout") + .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(SOURCE))) + ); + } } } diff --git a/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java b/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java index a64cb82910..09e7daf877 100644 --- a/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java +++ b/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java @@ -7,6 +7,7 @@ import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockHttpSession; import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; @@ -36,7 +37,22 @@ public class ManualLogoutIntegrationTest { @WithMockUser(value = "spring") @Test - public void givenLoggedUserWhenUserLogoutThenSessionCleared() throws Exception { + public void givenLoggedUserWhenUserLogoutThenSessionClearedAndNecessaryCookieCleared() throws Exception { + + MockHttpServletRequest requestStateAfterLogout = this.mockMvc.perform(post("/basic/basiclogout").secure(true).with(csrf())) + .andExpect(status().is3xxRedirection()) + .andExpect(unauthenticated()) + .andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 0)) + .andReturn() + .getRequest(); + + HttpSession sessionStateAfterLogout = requestStateAfterLogout.getSession(); + assertNull(sessionStateAfterLogout.getAttribute(ATTRIBUTE_NAME)); + } + + @WithMockUser(value = "spring") + @Test + public void givenLoggedUserWhenUserLogoutThenSessionClearedAndAllCookiesCleared() throws Exception { MockHttpSession session = new MockHttpSession(); session.setAttribute(ATTRIBUTE_NAME, ATTRIBUTE_VALUE); @@ -44,7 +60,7 @@ public class ManualLogoutIntegrationTest { Cookie randomCookie = new Cookie(COOKIE_NAME, COOKIE_VALUE); randomCookie.setMaxAge(EXPIRY); // 10 minutes - MockHttpServletRequest requestStateAfterLogout = this.mockMvc.perform(post("/basiclogout").secure(true).with(csrf()).session(session).cookie(randomCookie)) + MockHttpServletRequest requestStateAfterLogout = this.mockMvc.perform(post("/cookies/cookielogout").secure(true).with(csrf()).session(session).cookie(randomCookie)) .andExpect(status().is3xxRedirection()) .andExpect(unauthenticated()) .andExpect(cookie().maxAge(COOKIE_NAME, 0)) @@ -53,15 +69,13 @@ public class ManualLogoutIntegrationTest { HttpSession sessionStateAfterLogout = requestStateAfterLogout.getSession(); assertNull(sessionStateAfterLogout.getAttribute(ATTRIBUTE_NAME)); - - } @WithMockUser(value = "spring") @Test public void givenLoggedUserWhenUserLogoutThenClearDataSiteHeaderPresent() throws Exception { - this.mockMvc.perform(post("/csdlogout").secure(true).with(csrf())) + this.mockMvc.perform(post("/csd/csdlogout").secure(true).with(csrf())) .andDo(print()) .andExpect(status().is3xxRedirection()) .andExpect(header().exists(CLEAR_SITE_DATA_HEADER)) From 89da31cbcebd898b84557cc38b0af546d66ff34d Mon Sep 17 00:00:00 2001 From: Kamlesh Kumar Date: Thu, 30 Apr 2020 17:48:30 +0530 Subject: [PATCH 127/157] BAEL-3837: Java Deadlock and Livelock (#8943) --- .../deadlockAndLivelock/DeadlockExample.java | 60 +++++++++++++ .../deadlockAndLivelock/LivelockExample.java | 86 +++++++++++++++++++ 2 files changed, 146 insertions(+) create mode 100644 core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/DeadlockExample.java create mode 100644 core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/DeadlockExample.java b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/DeadlockExample.java new file mode 100644 index 0000000000..bcdaf302ea --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/DeadlockExample.java @@ -0,0 +1,60 @@ +package com.baeldung.deadlockAndLivelock; + +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public class DeadlockExample { + + private Lock lock1 = new ReentrantLock(true); + private Lock lock2 = new ReentrantLock(true); + + public static void main(String[] args) { + DeadlockExample deadlock = new DeadlockExample(); + new Thread(deadlock::operation1, "T1").start(); + new Thread(deadlock::operation2, "T2").start(); + + } + + public void operation1() { + lock1.lock(); + print("lock1 acquired, waiting to acquire lock2."); + sleep(50); + + lock2.lock(); + print("lock2 acquired"); + + print("executing first operation."); + + lock2.unlock(); + lock1.unlock(); + + } + + public void operation2() { + lock2.lock(); + print("lock2 acquired, waiting to acquire lock1."); + sleep(50); + + lock1.lock(); + print("lock1 acquired"); + + print("executing second operation."); + + lock1.unlock(); + lock2.unlock(); + } + + public void print(String message) { + System.out.println("Thread " + Thread.currentThread() + .getName() + ": " + message); + } + + public void sleep(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + +} diff --git a/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java new file mode 100644 index 0000000000..b0d66a92c2 --- /dev/null +++ b/core-java-modules/core-java-concurrency-advanced-3/src/main/java/com/baeldung/deadlockAndLivelock/LivelockExample.java @@ -0,0 +1,86 @@ +package com.baeldung.deadlockAndLivelock; + +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public class LivelockExample { + + private Lock lock1 = new ReentrantLock(true); + private Lock lock2 = new ReentrantLock(true); + + public static void main(String[] args) { + LivelockExample livelock = new LivelockExample(); + new Thread(livelock::operation1, "T1").start(); + new Thread(livelock::operation2, "T2").start(); + + } + + public void operation1() { + while (true) { + tryLock(lock1, 50); + print("lock1 acquired, trying to acquire lock2."); + sleep(50); + + if (tryLock(lock2)) { + print("lock2 acquired."); + } else { + print("cannot acquire lock2, releasing lock1."); + lock1.unlock(); + continue; + } + + print("executing first operation."); + break; + } + lock2.unlock(); + lock1.unlock(); + } + + public void operation2() { + while (true) { + tryLock(lock2, 50); + print("lock2 acquired, trying to acquire lock1."); + sleep(50); + + if (tryLock(lock1)) { + print("lock1 acquired."); + } else { + print("cannot acquire lock1, releasing lock2."); + lock2.unlock(); + continue; + } + + print("executing second operation."); + break; + } + lock1.unlock(); + lock2.unlock(); + } + + public void print(String message) { + System.out.println("Thread " + Thread.currentThread() + .getName() + ": " + message); + } + + public void sleep(long millis) { + try { + Thread.sleep(millis); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public void tryLock(Lock lock, long millis) { + try { + lock.tryLock(10, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public boolean tryLock(Lock lock) { + return lock.tryLock(); + } + +} From 4bb9f166b6df24f11549f9f2627aaf26fbb9e7b6 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Sun, 19 Apr 2020 21:02:17 +0200 Subject: [PATCH 128/157] Source project for the draft article --- model-mapper/src/Main.java | 58 +++++++++++++++ model-mapper/src/com/baeldung/model/User.java | 70 +++++++++++++++++++ .../src/com/baeldung/model/UserDTO.java | 49 +++++++++++++ .../src/com/baeldung/model/UserList.java | 21 ++++++ .../src/com/baeldung/util/MapperUtil.java | 47 +++++++++++++ .../com/baeldung/util/UserPropertyMap.java | 36 ++++++++++ 6 files changed, 281 insertions(+) create mode 100644 model-mapper/src/Main.java create mode 100644 model-mapper/src/com/baeldung/model/User.java create mode 100644 model-mapper/src/com/baeldung/model/UserDTO.java create mode 100644 model-mapper/src/com/baeldung/model/UserList.java create mode 100644 model-mapper/src/com/baeldung/util/MapperUtil.java create mode 100644 model-mapper/src/com/baeldung/util/UserPropertyMap.java diff --git a/model-mapper/src/Main.java b/model-mapper/src/Main.java new file mode 100644 index 0000000000..a6deb49168 --- /dev/null +++ b/model-mapper/src/Main.java @@ -0,0 +1,58 @@ +import com.baeldung.model.User; +import com.baeldung.model.UserDTO; +import com.baeldung.model.UserList; +import com.baeldung.util.MapperUtil; +import com.baeldung.util.UserPropertyMap; +import org.modelmapper.ModelMapper; +import org.modelmapper.TypeToken; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ + +public class Main { + + public static void main(String[] args) { + + //Instantiate ModelMapper + + ModelMapper mapper = new ModelMapper(); + mapper.addMappings(new UserPropertyMap()); + + // Mapping lists using TypeToken generic class + + List integers = new ArrayList(); + + integers.add(1); + integers.add(2); + integers.add(3); + + List characters = mapper.map(integers, new TypeToken>() {}.getType()); + + System.out.println("Character list: " + characters); + + // Mapping lists using generic type methods + + List users = new ArrayList(); + users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); + users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); + users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); + + List userDtoList = MapperUtil.mapList(users, UserDTO.class); + userDtoList.stream().map(userDto -> userDto.getEmail()).forEachOrdered(System.out::println); + + // Mapping lists using PropertyMap and Converter + + UserList userList = new UserList(); + userList.setUsers(users); + UserDTO dto = new UserDTO(); + + mapper.map(userList, dto); + dto.getUsernames().forEach(System.out::println); + + } +} diff --git a/model-mapper/src/com/baeldung/model/User.java b/model-mapper/src/com/baeldung/model/User.java new file mode 100644 index 0000000000..73e4baafb5 --- /dev/null +++ b/model-mapper/src/com/baeldung/model/User.java @@ -0,0 +1,70 @@ +package com.baeldung.model; + +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ +public class User { + + private String userId; + private String userName; + private String email; + private String contactNumber; + private String userType; + + // Standard constructors, getters and setters + + public User(){} + + public User(String userId, String userName, String email, String contactNumber, String userType) { + this.userId = userId; + this.userName = userName; + this.email = email; + this.contactNumber = contactNumber; + this.userType = userType; + } + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + 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 String getContactNumber() { + return contactNumber; + } + + public void setContactNumber(String contactNumber) { + this.contactNumber = contactNumber; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + +} diff --git a/model-mapper/src/com/baeldung/model/UserDTO.java b/model-mapper/src/com/baeldung/model/UserDTO.java new file mode 100644 index 0000000000..ed056ace8c --- /dev/null +++ b/model-mapper/src/com/baeldung/model/UserDTO.java @@ -0,0 +1,49 @@ +package com.baeldung.model; + +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ +public class UserDTO { + + private String userId; + private String userName; + private String email; + private List usernames; + + // getters and setters + + public String getUserId() { + return userId; + } + + public void setUserId(String userId) { + this.userId = userId; + } + + 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 List getUsernames() { + return usernames; + } + + public void setUsernames(List usernames) { + this.usernames = usernames; + } +} diff --git a/model-mapper/src/com/baeldung/model/UserList.java b/model-mapper/src/com/baeldung/model/UserList.java new file mode 100644 index 0000000000..b30d5507d5 --- /dev/null +++ b/model-mapper/src/com/baeldung/model/UserList.java @@ -0,0 +1,21 @@ +package com.baeldung.model; + +import java.util.Collection; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ + +public class UserList { + + private Collection users; + + public Collection getUsers() { + return users; + } + + public void setUsers(Collection users) { + this.users = users; + } +} diff --git a/model-mapper/src/com/baeldung/util/MapperUtil.java b/model-mapper/src/com/baeldung/util/MapperUtil.java new file mode 100644 index 0000000000..fe10b7777d --- /dev/null +++ b/model-mapper/src/com/baeldung/util/MapperUtil.java @@ -0,0 +1,47 @@ +package com.baeldung.util; + +import org.modelmapper.ModelMapper; +import org.modelmapper.convention.MatchingStrategies; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ +public class MapperUtil { + + + private static ModelMapper modelMapper = new ModelMapper(); + + + static { + + modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); + + } + + private MapperUtil() { + + + } + + public static T mapTo(final S source, final Class target) { + + return modelMapper.map(source, target); + } + + public static List mapList(final List sourceList, final Class target) { + + List targetList = new ArrayList(); + + for (S source : sourceList) { + + targetList.add(modelMapper.map(source, target)); + } + + return targetList; + } + +} diff --git a/model-mapper/src/com/baeldung/util/UserPropertyMap.java b/model-mapper/src/com/baeldung/util/UserPropertyMap.java new file mode 100644 index 0000000000..4346174440 --- /dev/null +++ b/model-mapper/src/com/baeldung/util/UserPropertyMap.java @@ -0,0 +1,36 @@ +package com.baeldung.util; + +import com.baeldung.model.User; +import com.baeldung.model.UserDTO; +import com.baeldung.model.UserList; +import org.modelmapper.AbstractConverter; +import org.modelmapper.Converter; +import org.modelmapper.PropertyMap; +import java.util.ArrayList; +import java.util.List; + +/** + * @author sasam0320 + * @date 4/18/2020 + */ + +public class UserPropertyMap extends PropertyMap { + + + Converter, List> converter = new AbstractConverter, List>() { + + List usernames = new ArrayList<>(); + + protected List convert(List users) { + + users.forEach(user -> usernames.add(user.getUserName())); + return usernames; + } + + }; + + @Override + protected void configure() { + using(converter).map(source.getUsers(), destination.getUsernames()); + } +} From b9cbfa49c4aa8c4ff114f634b82a3514f0785d84 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Tue, 21 Apr 2020 18:46:45 +0200 Subject: [PATCH 129/157] Moving com.baeldung.modelmmaper package to java-collections-conversations module --- .../modelmapper}/UserPropertyMap.java | 12 ++- .../baeldung/modelmapper/UserMappingTest.java | 85 +++++++++++++++++++ model-mapper/src/Main.java | 58 ------------- model-mapper/src/com/baeldung/model/User.java | 70 --------------- .../src/com/baeldung/model/UserDTO.java | 49 ----------- .../src/com/baeldung/model/UserList.java | 21 ----- .../src/com/baeldung/util/MapperUtil.java | 47 ---------- 7 files changed, 90 insertions(+), 252 deletions(-) rename {model-mapper/src/com/baeldung/util => java-collections-conversions-2/src/main/java/com/baeldung/modelmapper}/UserPropertyMap.java (68%) create mode 100644 java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java delete mode 100644 model-mapper/src/Main.java delete mode 100644 model-mapper/src/com/baeldung/model/User.java delete mode 100644 model-mapper/src/com/baeldung/model/UserDTO.java delete mode 100644 model-mapper/src/com/baeldung/model/UserList.java delete mode 100644 model-mapper/src/com/baeldung/util/MapperUtil.java diff --git a/model-mapper/src/com/baeldung/util/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java similarity index 68% rename from model-mapper/src/com/baeldung/util/UserPropertyMap.java rename to java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 4346174440..9fa945ce32 100644 --- a/model-mapper/src/com/baeldung/util/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -1,8 +1,5 @@ -package com.baeldung.util; +package com.baeldung.modelmapper; -import com.baeldung.model.User; -import com.baeldung.model.UserDTO; -import com.baeldung.model.UserList; import org.modelmapper.AbstractConverter; import org.modelmapper.Converter; import org.modelmapper.PropertyMap; @@ -11,10 +8,11 @@ import java.util.List; /** * @author sasam0320 - * @date 4/18/2020 + * @description + * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. + * In the configuration method, we call a converter to do the mapping. */ - -public class UserPropertyMap extends PropertyMap { +public class UserPropertyMap extends PropertyMap { Converter, List> converter = new AbstractConverter, List>() { diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java new file mode 100644 index 0000000000..44a929621b --- /dev/null +++ b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java @@ -0,0 +1,85 @@ +package com.baeldung.modelmapper; + +import org.hamcrest.Matchers; +import org.junit.Before; +import org.junit.Test; +import org.modelmapper.ModelMapper; +import org.modelmapper.TypeToken; + +import java.util.ArrayList; +import java.util.List; + +import static org.hamcrest.Matchers.equalTo; +import static org.hamcrest.Matchers.hasItems; +import static org.hamcrest.Matchers.hasProperty; +import static org.hamcrest.collection.IsCollectionWithSize.hasSize; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; + + +/** + * @sasam0320 + * @description + * This class has test methods of mapping Integer to Character list, + * mapping user list to DTO list using MapperUtil generic methods and Converter + */ +public class UserMappingTest { + + private ModelMapper mapper; + private List users; + + @Before + public void init() { + + mapper = new ModelMapper(); + mapper.addMappings(new UserPropertyMap()); + users = new ArrayList(); + users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); + users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); + users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); + + } + + @Test + public void testMapIntegerList() { + + List integers = new ArrayList(); + + integers.add(1); + integers.add(2); + integers.add(3); + + List characters = mapper.map(integers, new TypeToken>() { + }.getType()); + + assertThat(characters, hasItems('1','2','3')); + + } + + @Test + public void testMapGenericTypeLists() { + + // Mapping lists using generic type methods + + List userDtoList = MapperUtil.mapList(users, UserDTO.class); + + assertThat(userDtoList, Matchers.hasItem( + Matchers.both(hasProperty("userId", equalTo("b100"))) + .and(hasProperty("email", equalTo("user1@baeldung.com"))) + .and(hasProperty("userName", equalTo("user1"))))); + + // Mapping lists using PropertyMap and Converter + + UserList userList = new UserList(); + userList.setUsers(users); + UserListDTO dto = new UserListDTO(); + mapper.map(userList, dto); + + assertNotNull(dto); + assertThat(dto, Matchers.hasProperty("usernames")); + assertThat(dto.getUsernames(), hasSize(3)); + + } + +} \ No newline at end of file diff --git a/model-mapper/src/Main.java b/model-mapper/src/Main.java deleted file mode 100644 index a6deb49168..0000000000 --- a/model-mapper/src/Main.java +++ /dev/null @@ -1,58 +0,0 @@ -import com.baeldung.model.User; -import com.baeldung.model.UserDTO; -import com.baeldung.model.UserList; -import com.baeldung.util.MapperUtil; -import com.baeldung.util.UserPropertyMap; -import org.modelmapper.ModelMapper; -import org.modelmapper.TypeToken; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author sasam0320 - * @date 4/18/2020 - */ - -public class Main { - - public static void main(String[] args) { - - //Instantiate ModelMapper - - ModelMapper mapper = new ModelMapper(); - mapper.addMappings(new UserPropertyMap()); - - // Mapping lists using TypeToken generic class - - List integers = new ArrayList(); - - integers.add(1); - integers.add(2); - integers.add(3); - - List characters = mapper.map(integers, new TypeToken>() {}.getType()); - - System.out.println("Character list: " + characters); - - // Mapping lists using generic type methods - - List users = new ArrayList(); - users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); - users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); - users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); - - List userDtoList = MapperUtil.mapList(users, UserDTO.class); - userDtoList.stream().map(userDto -> userDto.getEmail()).forEachOrdered(System.out::println); - - // Mapping lists using PropertyMap and Converter - - UserList userList = new UserList(); - userList.setUsers(users); - UserDTO dto = new UserDTO(); - - mapper.map(userList, dto); - dto.getUsernames().forEach(System.out::println); - - } -} diff --git a/model-mapper/src/com/baeldung/model/User.java b/model-mapper/src/com/baeldung/model/User.java deleted file mode 100644 index 73e4baafb5..0000000000 --- a/model-mapper/src/com/baeldung/model/User.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung.model; - -import java.util.List; - -/** - * @author sasam0320 - * @date 4/18/2020 - */ -public class User { - - private String userId; - private String userName; - private String email; - private String contactNumber; - private String userType; - - // Standard constructors, getters and setters - - public User(){} - - public User(String userId, String userName, String email, String contactNumber, String userType) { - this.userId = userId; - this.userName = userName; - this.email = email; - this.contactNumber = contactNumber; - this.userType = userType; - } - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - } - - 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 String getContactNumber() { - return contactNumber; - } - - public void setContactNumber(String contactNumber) { - this.contactNumber = contactNumber; - } - - public String getUserType() { - return userType; - } - - public void setUserType(String userType) { - this.userType = userType; - } - - -} diff --git a/model-mapper/src/com/baeldung/model/UserDTO.java b/model-mapper/src/com/baeldung/model/UserDTO.java deleted file mode 100644 index ed056ace8c..0000000000 --- a/model-mapper/src/com/baeldung/model/UserDTO.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.baeldung.model; - -import java.util.List; - -/** - * @author sasam0320 - * @date 4/18/2020 - */ -public class UserDTO { - - private String userId; - private String userName; - private String email; - private List usernames; - - // getters and setters - - public String getUserId() { - return userId; - } - - public void setUserId(String userId) { - this.userId = userId; - } - - 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 List getUsernames() { - return usernames; - } - - public void setUsernames(List usernames) { - this.usernames = usernames; - } -} diff --git a/model-mapper/src/com/baeldung/model/UserList.java b/model-mapper/src/com/baeldung/model/UserList.java deleted file mode 100644 index b30d5507d5..0000000000 --- a/model-mapper/src/com/baeldung/model/UserList.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.baeldung.model; - -import java.util.Collection; - -/** - * @author sasam0320 - * @date 4/18/2020 - */ - -public class UserList { - - private Collection users; - - public Collection getUsers() { - return users; - } - - public void setUsers(Collection users) { - this.users = users; - } -} diff --git a/model-mapper/src/com/baeldung/util/MapperUtil.java b/model-mapper/src/com/baeldung/util/MapperUtil.java deleted file mode 100644 index fe10b7777d..0000000000 --- a/model-mapper/src/com/baeldung/util/MapperUtil.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.baeldung.util; - -import org.modelmapper.ModelMapper; -import org.modelmapper.convention.MatchingStrategies; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author sasam0320 - * @date 4/18/2020 - */ -public class MapperUtil { - - - private static ModelMapper modelMapper = new ModelMapper(); - - - static { - - modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT); - - } - - private MapperUtil() { - - - } - - public static T mapTo(final S source, final Class target) { - - return modelMapper.map(source, target); - } - - public static List mapList(final List sourceList, final Class target) { - - List targetList = new ArrayList(); - - for (S source : sourceList) { - - targetList.add(modelMapper.map(source, target)); - } - - return targetList; - } - -} From 4bc8c329fc8e8c247f296a1a68b2f436737ed3b1 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Tue, 21 Apr 2020 21:29:38 +0200 Subject: [PATCH 130/157] Renaming test methods and formatting --- .../baeldung/modelmapper/UserPropertyMap.java | 3 +- .../baeldung/modelmapper/UserMappingTest.java | 85 ------------------- 2 files changed, 1 insertion(+), 87 deletions(-) delete mode 100644 java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 9fa945ce32..3d9059c520 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -7,10 +7,9 @@ import java.util.ArrayList; import java.util.List; /** - * @author sasam0320 - * @description * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. * In the configuration method, we call a converter to do the mapping. + * @author sasam0320 */ public class UserPropertyMap extends PropertyMap { diff --git a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java b/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java deleted file mode 100644 index 44a929621b..0000000000 --- a/java-collections-conversions-2/src/test/java/com/baeldung/modelmapper/UserMappingTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.baeldung.modelmapper; - -import org.hamcrest.Matchers; -import org.junit.Before; -import org.junit.Test; -import org.modelmapper.ModelMapper; -import org.modelmapper.TypeToken; - -import java.util.ArrayList; -import java.util.List; - -import static org.hamcrest.Matchers.equalTo; -import static org.hamcrest.Matchers.hasItems; -import static org.hamcrest.Matchers.hasProperty; -import static org.hamcrest.collection.IsCollectionWithSize.hasSize; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; - - -/** - * @sasam0320 - * @description - * This class has test methods of mapping Integer to Character list, - * mapping user list to DTO list using MapperUtil generic methods and Converter - */ -public class UserMappingTest { - - private ModelMapper mapper; - private List users; - - @Before - public void init() { - - mapper = new ModelMapper(); - mapper.addMappings(new UserPropertyMap()); - users = new ArrayList(); - users.add(new User("b100", "user1", "user1@baeldung.com", "111-222", "USER")); - users.add(new User("b101", "user2", "user2@baeldung.com", "111-333", "USER")); - users.add(new User("b102", "user3", "user3@baeldung.com", "111-444", "ADMIN")); - - } - - @Test - public void testMapIntegerList() { - - List integers = new ArrayList(); - - integers.add(1); - integers.add(2); - integers.add(3); - - List characters = mapper.map(integers, new TypeToken>() { - }.getType()); - - assertThat(characters, hasItems('1','2','3')); - - } - - @Test - public void testMapGenericTypeLists() { - - // Mapping lists using generic type methods - - List userDtoList = MapperUtil.mapList(users, UserDTO.class); - - assertThat(userDtoList, Matchers.hasItem( - Matchers.both(hasProperty("userId", equalTo("b100"))) - .and(hasProperty("email", equalTo("user1@baeldung.com"))) - .and(hasProperty("userName", equalTo("user1"))))); - - // Mapping lists using PropertyMap and Converter - - UserList userList = new UserList(); - userList.setUsers(users); - UserListDTO dto = new UserListDTO(); - mapper.map(userList, dto); - - assertNotNull(dto); - assertThat(dto, Matchers.hasProperty("usernames")); - assertThat(dto.getUsernames(), hasSize(3)); - - } - -} \ No newline at end of file From 58dc739c3efd0f03dcbae6fe9743a2f60baadab2 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Tue, 21 Apr 2020 22:26:22 +0200 Subject: [PATCH 131/157] changes in build pom.xml --- .../main/java/com/baeldung/modelmapper/UserPropertyMap.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 3d9059c520..d2c32a307d 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -3,13 +3,15 @@ package com.baeldung.modelmapper; import org.modelmapper.AbstractConverter; import org.modelmapper.Converter; import org.modelmapper.PropertyMap; + import java.util.ArrayList; import java.util.List; /** * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. * In the configuration method, we call a converter to do the mapping. - * @author sasam0320 + * + * @author Sasa Milenkovic */ public class UserPropertyMap extends PropertyMap { From 9f0d8cf6aba2043abddb6bb2c5ef63785ffbb4d0 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Sat, 25 Apr 2020 21:57:43 +0200 Subject: [PATCH 132/157] Refactoring code in com.baeldung.modelmapper package --- .../java/com/baeldung/modelmapper/UserPropertyMap.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index d2c32a307d..0d2ebf7b4c 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -18,14 +18,15 @@ public class UserPropertyMap extends PropertyMap { Converter, List> converter = new AbstractConverter, List>() { - List usernames = new ArrayList<>(); + protected List usernames; + @Override protected List convert(List users) { - users.forEach(user -> usernames.add(user.getUserName())); + usernames = new ArrayList(); + users.forEach(user -> usernames.add(user.getUsername())); return usernames; } - }; @Override From c2e64bea7273cb971caa03e750a1683a7e7a0fd8 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Sun, 26 Apr 2020 18:37:31 +0200 Subject: [PATCH 133/157] Customizing Java 8 code in modemmapper package --- .../com/baeldung/modelmapper/UserPropertyMap.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java index 0d2ebf7b4c..5b2942b158 100644 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java @@ -4,11 +4,11 @@ import org.modelmapper.AbstractConverter; import org.modelmapper.Converter; import org.modelmapper.PropertyMap; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** - * UserPropertyMap class instantiates the converter to map the data from the user list to the user name list. + * UserPropertyMap class instantiates the converter to map the data from the UserList to the UsersLisDTO. * In the configuration method, we call a converter to do the mapping. * * @author Sasa Milenkovic @@ -18,19 +18,20 @@ public class UserPropertyMap extends PropertyMap { Converter, List> converter = new AbstractConverter, List>() { - protected List usernames; @Override protected List convert(List users) { - usernames = new ArrayList(); - users.forEach(user -> usernames.add(user.getUsername())); - return usernames; + return users + .stream() + .map(User::getUsername) + .collect(Collectors.toList()); } }; @Override protected void configure() { + using(converter).map(source.getUsers(), destination.getUsernames()); } } From 9e6dd6f41bbe105e52e59139c5114ce5ae1fbf40 Mon Sep 17 00:00:00 2001 From: Sasa M Date: Wed, 29 Apr 2020 21:55:30 +0200 Subject: [PATCH 134/157] Creating TypeMap to use property mapping and converter class --- .../baeldung/modelmapper/UserPropertyMap.java | 37 ------------------- 1 file changed, 37 deletions(-) delete mode 100644 java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java diff --git a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java b/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java deleted file mode 100644 index 5b2942b158..0000000000 --- a/java-collections-conversions-2/src/main/java/com/baeldung/modelmapper/UserPropertyMap.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.baeldung.modelmapper; - -import org.modelmapper.AbstractConverter; -import org.modelmapper.Converter; -import org.modelmapper.PropertyMap; - -import java.util.List; -import java.util.stream.Collectors; - -/** - * UserPropertyMap class instantiates the converter to map the data from the UserList to the UsersLisDTO. - * In the configuration method, we call a converter to do the mapping. - * - * @author Sasa Milenkovic - */ -public class UserPropertyMap extends PropertyMap { - - - Converter, List> converter = new AbstractConverter, List>() { - - - @Override - protected List convert(List users) { - - return users - .stream() - .map(User::getUsername) - .collect(Collectors.toList()); - } - }; - - @Override - protected void configure() { - - using(converter).map(source.getUsers(), destination.getUsernames()); - } -} From cd07a21b8e3bfe637016823dd5afd2e362893e1b Mon Sep 17 00:00:00 2001 From: Sasa M Date: Thu, 30 Apr 2020 16:20:39 +0200 Subject: [PATCH 135/157] Add hamcrest jar dependency in parent-java build --- java-collections-conversions-2/pom.xml | 2 +- parent-java/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/java-collections-conversions-2/pom.xml b/java-collections-conversions-2/pom.xml index 892d73cb2b..0f7cdadeb2 100644 --- a/java-collections-conversions-2/pom.xml +++ b/java-collections-conversions-2/pom.xml @@ -33,7 +33,7 @@ org.hamcrest - hamcrest-all + hamcrest ${hamcrest.version} test diff --git a/parent-java/pom.xml b/parent-java/pom.xml index 3b2b5f59de..baad9fecf4 100644 --- a/parent-java/pom.xml +++ b/parent-java/pom.xml @@ -47,7 +47,7 @@ 1.19 2.3.7 4.12 - 1.3 + 2.2 From f19c4d9b5d96aff843dc3a290d62ad5b221b89e6 Mon Sep 17 00:00:00 2001 From: mikr Date: Thu, 30 Apr 2020 18:11:37 +0200 Subject: [PATCH 136/157] Java-1520 Split or move algorithms-miscellaneous-5 module --- algorithms-miscellaneous-5/README.md | 8 +- algorithms-miscellaneous-5/pom.xml | 14 +- algorithms-miscellaneous-6/README.md | 6 + algorithms-miscellaneous-6/pom.xml | 25 +++ .../BalancedBracketsUsingDeque.java | 0 .../BalancedBracketsUsingString.java | 0 .../algorithms/caesarcipher/CaesarCipher.java | 0 .../baeldung/algorithms/greedy/Follower.java | 0 .../algorithms/greedy/FollowersPath.java | 0 .../algorithms/greedy/GreedyAlgorithm.java | 0 .../algorithms/greedy/NonGreedyAlgorithm.java | 0 .../algorithms/greedy/SocialConnector.java | 0 .../algorithms/greedy/SocialUser.java | 0 .../algorithms/kruskal/CycleDetector.java | 0 .../algorithms/kruskal/DisjointSetInfo.java | 0 .../baeldung/algorithms/kruskal/Kruskal.java | 0 .../algorithms/minheapmerge/HeapNode.java | 26 +-- .../algorithms/minheapmerge/MinHeap.java | 176 +++++++++--------- .../BalancedBracketsUsingDequeUnitTest.java | 0 .../BalancedBracketsUsingStringUnitTest.java | 0 .../caesarcipher/CaesarCipherUnitTest.java | 0 .../greedy/GreedyAlgorithmUnitTest.java | 0 .../algorithms/kruskal/KruskalUnitTest.java | 0 .../minheapmerge/MinHeapUnitTest.java | 44 ++--- 24 files changed, 160 insertions(+), 139 deletions(-) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/caesarcipher/CaesarCipher.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/greedy/Follower.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/greedy/FollowersPath.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/greedy/GreedyAlgorithm.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/greedy/NonGreedyAlgorithm.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/greedy/SocialConnector.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/greedy/SocialUser.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/kruskal/CycleDetector.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/kruskal/DisjointSetInfo.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/kruskal/Kruskal.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java (95%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java (96%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/test/java/com/baeldung/algorithms/caesarcipher/CaesarCipherUnitTest.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/test/java/com/baeldung/algorithms/greedy/GreedyAlgorithmUnitTest.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/test/java/com/baeldung/algorithms/kruskal/KruskalUnitTest.java (100%) rename {algorithms-miscellaneous-5 => algorithms-miscellaneous-6}/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java (96%) diff --git a/algorithms-miscellaneous-5/README.md b/algorithms-miscellaneous-5/README.md index 6e0de7d64e..3e6eeb4c93 100644 --- a/algorithms-miscellaneous-5/README.md +++ b/algorithms-miscellaneous-5/README.md @@ -15,9 +15,5 @@ This module contains articles about algorithms. Some classes of algorithms, e.g. - [Maximum Subarray Problem](https://www.baeldung.com/java-maximum-subarray) - [How to Merge Two Sorted Arrays](https://www.baeldung.com/java-merge-sorted-arrays) - [Median of Stream of Integers using Heap](https://www.baeldung.com/java-stream-integers-median-using-heap) -- [Kruskal’s Algorithm for Spanning Trees](https://www.baeldung.com/java-spanning-trees-kruskal) -- [Balanced Brackets Algorithm in Java](https://www.baeldung.com/java-balanced-brackets-algorithm) -- [Efficiently Merge Sorted Java Sequences](https://www.baeldung.com/java-merge-sorted-sequences) -- [Introduction to Greedy Algorithms with Java](https://www.baeldung.com/java-greedy-algorithms) -- [The Caesar Cipher in Java](https://www.baeldung.com/java-caesar-cipher) -- More articles: [[<-- prev]](/../algorithms-miscellaneous-4) +- More articles: [[<-- prev]](/../algorithms-miscellaneous-4) [[next -->]](/../algorithms-miscellaneous-6) + diff --git a/algorithms-miscellaneous-5/pom.xml b/algorithms-miscellaneous-5/pom.xml index 4131e1791d..9d0326241a 100644 --- a/algorithms-miscellaneous-5/pom.xml +++ b/algorithms-miscellaneous-5/pom.xml @@ -21,16 +21,10 @@ ${commons-codec.version} - org.apache.commons - commons-math3 - ${commons-math3.version} - - - org.projectlombok - lombok - ${lombok.version} - provided - + org.apache.commons + commons-math3 + ${commons-math3.version} + pl.allegro.finance tradukisto diff --git a/algorithms-miscellaneous-6/README.md b/algorithms-miscellaneous-6/README.md index 99be63d7ca..22ee51530f 100644 --- a/algorithms-miscellaneous-6/README.md +++ b/algorithms-miscellaneous-6/README.md @@ -2,3 +2,9 @@ - [Boruvka’s Algorithm for Minimum Spanning Trees](https://www.baeldung.com/java-boruvka-algorithm) - [Gradient Descent in Java](https://www.baeldung.com/java-gradient-descent) +- [Kruskal’s Algorithm for Spanning Trees](https://www.baeldung.com/java-spanning-trees-kruskal) +- [Balanced Brackets Algorithm in Java](https://www.baeldung.com/java-balanced-brackets-algorithm) +- [Efficiently Merge Sorted Java Sequences](https://www.baeldung.com/java-merge-sorted-sequences) +- [Introduction to Greedy Algorithms with Java](https://www.baeldung.com/java-greedy-algorithms) +- [The Caesar Cipher in Java](https://www.baeldung.com/java-caesar-cipher) +- More articles: [[<-- prev]](/../algorithms-miscellaneous-5) diff --git a/algorithms-miscellaneous-6/pom.xml b/algorithms-miscellaneous-6/pom.xml index fda9cf10f9..0a0edcbb3f 100644 --- a/algorithms-miscellaneous-6/pom.xml +++ b/algorithms-miscellaneous-6/pom.xml @@ -18,10 +18,35 @@ guava ${guava.version} + + org.junit.platform + junit-platform-commons + ${junit.platform.version} + + + org.assertj + assertj-core + ${org.assertj.core.version} + test + + + org.projectlombok + lombok + ${lombok.version} + provided + + + org.apache.commons + commons-math3 + ${commons-math3.version} + 28.1-jre + 3.9.0 + 1.6.0 + 3.6.1 diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDeque.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingString.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/caesarcipher/CaesarCipher.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/caesarcipher/CaesarCipher.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/caesarcipher/CaesarCipher.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/caesarcipher/CaesarCipher.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/Follower.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/Follower.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/Follower.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/Follower.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/FollowersPath.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/FollowersPath.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/FollowersPath.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/FollowersPath.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/GreedyAlgorithm.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/GreedyAlgorithm.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/GreedyAlgorithm.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/GreedyAlgorithm.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/NonGreedyAlgorithm.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/NonGreedyAlgorithm.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/NonGreedyAlgorithm.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/NonGreedyAlgorithm.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/SocialConnector.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/SocialConnector.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/SocialConnector.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/SocialConnector.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/SocialUser.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/SocialUser.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/greedy/SocialUser.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/greedy/SocialUser.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/kruskal/CycleDetector.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/kruskal/CycleDetector.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/kruskal/CycleDetector.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/kruskal/CycleDetector.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/kruskal/DisjointSetInfo.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/kruskal/DisjointSetInfo.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/kruskal/DisjointSetInfo.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/kruskal/DisjointSetInfo.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/kruskal/Kruskal.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/kruskal/Kruskal.java similarity index 100% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/kruskal/Kruskal.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/kruskal/Kruskal.java diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java similarity index 95% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java index 9e8439cb87..e2e41baf4d 100644 --- a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java +++ b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/minheapmerge/HeapNode.java @@ -1,13 +1,13 @@ -package com.baeldung.algorithms.minheapmerge; - -public class HeapNode { - - int element; - int arrayIndex; - int nextElementIndex = 1; - - public HeapNode(int element, int arrayIndex) { - this.element = element; - this.arrayIndex = arrayIndex; - } -} +package com.baeldung.algorithms.minheapmerge; + +public class HeapNode { + + int element; + int arrayIndex; + int nextElementIndex = 1; + + public HeapNode(int element, int arrayIndex) { + this.element = element; + this.arrayIndex = arrayIndex; + } +} diff --git a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java similarity index 96% rename from algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java rename to algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java index b77ce43160..0217480e9e 100644 --- a/algorithms-miscellaneous-5/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java +++ b/algorithms-miscellaneous-6/src/main/java/com/baeldung/algorithms/minheapmerge/MinHeap.java @@ -1,88 +1,88 @@ -package com.baeldung.algorithms.minheapmerge; - -public class MinHeap { - - HeapNode[] heapNodes; - - public MinHeap(HeapNode heapNodes[]) { - this.heapNodes = heapNodes; - heapifyFromLastLeafsParent(); - } - - void heapifyFromLastLeafsParent() { - int lastLeafsParentIndex = getParentNodeIndex(heapNodes.length); - while (lastLeafsParentIndex >= 0) { - heapify(lastLeafsParentIndex); - lastLeafsParentIndex--; - } - } - - void heapify(int index) { - int leftNodeIndex = getLeftNodeIndex(index); - int rightNodeIndex = getRightNodeIndex(index); - int smallestElementIndex = index; - if (leftNodeIndex < heapNodes.length && heapNodes[leftNodeIndex].element < heapNodes[index].element) { - smallestElementIndex = leftNodeIndex; - } - if (rightNodeIndex < heapNodes.length && heapNodes[rightNodeIndex].element < heapNodes[smallestElementIndex].element) { - smallestElementIndex = rightNodeIndex; - } - if (smallestElementIndex != index) { - swap(index, smallestElementIndex); - heapify(smallestElementIndex); - } - } - - int getParentNodeIndex(int index) { - return (index - 1) / 2; - } - - int getLeftNodeIndex(int index) { - return (2 * index + 1); - } - - int getRightNodeIndex(int index) { - return (2 * index + 2); - } - - HeapNode getRootNode() { - return heapNodes[0]; - } - - void heapifyFromRoot() { - heapify(0); - } - - void swap(int i, int j) { - HeapNode temp = heapNodes[i]; - heapNodes[i] = heapNodes[j]; - heapNodes[j] = temp; - } - - static int[] merge(int[][] array) { - HeapNode[] heapNodes = new HeapNode[array.length]; - int resultingArraySize = 0; - - for (int i = 0; i < array.length; i++) { - HeapNode node = new HeapNode(array[i][0], i); - heapNodes[i] = node; - resultingArraySize += array[i].length; - } - - MinHeap minHeap = new MinHeap(heapNodes); - int[] resultingArray = new int[resultingArraySize]; - - for (int i = 0; i < resultingArraySize; i++) { - HeapNode root = minHeap.getRootNode(); - resultingArray[i] = root.element; - - if (root.nextElementIndex < array[root.arrayIndex].length) { - root.element = array[root.arrayIndex][root.nextElementIndex++]; - } else { - root.element = Integer.MAX_VALUE; - } - minHeap.heapifyFromRoot(); - } - return resultingArray; - } -} +package com.baeldung.algorithms.minheapmerge; + +public class MinHeap { + + HeapNode[] heapNodes; + + public MinHeap(HeapNode heapNodes[]) { + this.heapNodes = heapNodes; + heapifyFromLastLeafsParent(); + } + + void heapifyFromLastLeafsParent() { + int lastLeafsParentIndex = getParentNodeIndex(heapNodes.length); + while (lastLeafsParentIndex >= 0) { + heapify(lastLeafsParentIndex); + lastLeafsParentIndex--; + } + } + + void heapify(int index) { + int leftNodeIndex = getLeftNodeIndex(index); + int rightNodeIndex = getRightNodeIndex(index); + int smallestElementIndex = index; + if (leftNodeIndex < heapNodes.length && heapNodes[leftNodeIndex].element < heapNodes[index].element) { + smallestElementIndex = leftNodeIndex; + } + if (rightNodeIndex < heapNodes.length && heapNodes[rightNodeIndex].element < heapNodes[smallestElementIndex].element) { + smallestElementIndex = rightNodeIndex; + } + if (smallestElementIndex != index) { + swap(index, smallestElementIndex); + heapify(smallestElementIndex); + } + } + + int getParentNodeIndex(int index) { + return (index - 1) / 2; + } + + int getLeftNodeIndex(int index) { + return (2 * index + 1); + } + + int getRightNodeIndex(int index) { + return (2 * index + 2); + } + + HeapNode getRootNode() { + return heapNodes[0]; + } + + void heapifyFromRoot() { + heapify(0); + } + + void swap(int i, int j) { + HeapNode temp = heapNodes[i]; + heapNodes[i] = heapNodes[j]; + heapNodes[j] = temp; + } + + static int[] merge(int[][] array) { + HeapNode[] heapNodes = new HeapNode[array.length]; + int resultingArraySize = 0; + + for (int i = 0; i < array.length; i++) { + HeapNode node = new HeapNode(array[i][0], i); + heapNodes[i] = node; + resultingArraySize += array[i].length; + } + + MinHeap minHeap = new MinHeap(heapNodes); + int[] resultingArray = new int[resultingArraySize]; + + for (int i = 0; i < resultingArraySize; i++) { + HeapNode root = minHeap.getRootNode(); + resultingArray[i] = root.element; + + if (root.nextElementIndex < array[root.arrayIndex].length) { + root.element = array[root.arrayIndex][root.nextElementIndex++]; + } else { + root.element = Integer.MAX_VALUE; + } + minHeap.heapifyFromRoot(); + } + return resultingArray; + } +} diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java similarity index 100% rename from algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java rename to algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingDequeUnitTest.java diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java similarity index 100% rename from algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java rename to algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/balancedbrackets/BalancedBracketsUsingStringUnitTest.java diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/caesarcipher/CaesarCipherUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/caesarcipher/CaesarCipherUnitTest.java similarity index 100% rename from algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/caesarcipher/CaesarCipherUnitTest.java rename to algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/caesarcipher/CaesarCipherUnitTest.java diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/greedy/GreedyAlgorithmUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/greedy/GreedyAlgorithmUnitTest.java similarity index 100% rename from algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/greedy/GreedyAlgorithmUnitTest.java rename to algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/greedy/GreedyAlgorithmUnitTest.java diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/kruskal/KruskalUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/kruskal/KruskalUnitTest.java similarity index 100% rename from algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/kruskal/KruskalUnitTest.java rename to algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/kruskal/KruskalUnitTest.java diff --git a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java similarity index 96% rename from algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java rename to algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java index 80d0d20f05..f84c860dcc 100644 --- a/algorithms-miscellaneous-5/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java +++ b/algorithms-miscellaneous-6/src/test/java/com/baeldung/algorithms/minheapmerge/MinHeapUnitTest.java @@ -1,22 +1,22 @@ -package com.baeldung.algorithms.minheapmerge; - -import static org.hamcrest.CoreMatchers.equalTo; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; - -import org.junit.Test; - -public class MinHeapUnitTest { - - private final int[][] inputArray = { { 0, 6 }, { 1, 5, 10, 100 }, { 2, 4, 200, 650 } }; - private final int[] expectedArray = { 0, 1, 2, 4, 5, 6, 10, 100, 200, 650 }; - - @Test - public void givenSortedArrays_whenMerged_thenShouldReturnASingleSortedarray() { - int[] resultArray = MinHeap.merge(inputArray); - - assertThat(resultArray.length, is(equalTo(10))); - assertThat(resultArray, is(equalTo(expectedArray))); - } - -} +package com.baeldung.algorithms.minheapmerge; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import org.junit.Test; + +public class MinHeapUnitTest { + + private final int[][] inputArray = { { 0, 6 }, { 1, 5, 10, 100 }, { 2, 4, 200, 650 } }; + private final int[] expectedArray = { 0, 1, 2, 4, 5, 6, 10, 100, 200, 650 }; + + @Test + public void givenSortedArrays_whenMerged_thenShouldReturnASingleSortedarray() { + int[] resultArray = MinHeap.merge(inputArray); + + assertThat(resultArray.length, is(equalTo(10))); + assertThat(resultArray, is(equalTo(expectedArray))); + } + +} From 100c78e15b33a44a3c4733bcf3e80fc733ba6f9e Mon Sep 17 00:00:00 2001 From: mikr Date: Fri, 1 May 2020 16:34:19 +0200 Subject: [PATCH 137/157] Java-1520 Fix whitespaces in algorithms-miscellaneous-5 pom --- algorithms-miscellaneous-5/pom.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/algorithms-miscellaneous-5/pom.xml b/algorithms-miscellaneous-5/pom.xml index 9d0326241a..615cf03467 100644 --- a/algorithms-miscellaneous-5/pom.xml +++ b/algorithms-miscellaneous-5/pom.xml @@ -21,10 +21,10 @@ ${commons-codec.version} - org.apache.commons - commons-math3 - ${commons-math3.version} - + org.apache.commons + commons-math3 + ${commons-math3.version} + pl.allegro.finance tradukisto From 5bfa01ec05e0d3d9364a042c307425f370877691 Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sat, 2 May 2020 00:20:16 +0530 Subject: [PATCH 138/157] "spring-data-jpa-5 new module" --- .../baeldung/composite/BookApplication.java | 12 ---- .../com/baeldung/composite/entity/Book.java | 47 -------------- .../com/baeldung/composite/entity/BookId.java | 51 --------------- .../composite/repository/BookRepository.java | 16 ----- .../BookRepositoryIntegrationTest.java | 63 ------------------- 5 files changed, 189 deletions(-) delete mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java delete mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java delete mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java delete mode 100644 persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java delete mode 100644 persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java deleted file mode 100644 index 52f06058aa..0000000000 --- a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/BookApplication.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.baeldung.composite; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class BookApplication { - - public static void main(String[] args) { - SpringApplication.run(BookApplication.class); - } -} diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java deleted file mode 100644 index e4f1727654..0000000000 --- a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/Book.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.baeldung.composite.entity; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; - -@Entity -public class Book { - - @EmbeddedId - private BookId id; - private String genre; - private Integer price; - - public Book() { - } - - public Book(String author, String name, String genre, Integer price) { - BookId id = new BookId(author, name); - this.id = id; - this.genre = genre; - this.price = price; - } - - public BookId getId() { - return id; - } - - public void setId(BookId id) { - this.id = id; - } - - public String getGenre() { - return genre; - } - - public void setGenre(String genre) { - this.genre = genre; - } - - public Integer getPrice() { - return price; - } - - public void setPrice(Integer price) { - this.price = price; - } -} diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java deleted file mode 100644 index 1524452412..0000000000 --- a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/entity/BookId.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.baeldung.composite.entity; - -import javax.persistence.Embeddable; -import java.io.Serializable; -import java.util.Objects; - -@Embeddable -public class BookId implements Serializable { - - private String author; - private String name; - - public BookId() { - } - - public BookId(String author, String name) { - this.author = author; - this.name = name; - } - - public String getAuthor() { - return author; - } - - public void setAuthor(String author) { - this.author = author; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - @Override - public boolean equals(Object o) { - if (this == o) - return true; - if (o == null || getClass() != o.getClass()) - return false; - BookId bookId = (BookId) o; - return Objects.equals(author, bookId.author) && Objects.equals(name, bookId.name); - } - - @Override - public int hashCode() { - return Objects.hash(author, name); - } -} diff --git a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java b/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java deleted file mode 100644 index 3c09f909f0..0000000000 --- a/persistence-modules/spring-data-jpa-4/src/main/java/com/baeldung/composite/repository/BookRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.composite.repository; - -import com.baeldung.composite.entity.Book; -import com.baeldung.composite.entity.BookId; -import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.stereotype.Repository; - -import java.util.List; - -@Repository -public interface BookRepository extends JpaRepository { - - List findByIdName(String name); - - List findByIdAuthor(String author); -} diff --git a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java deleted file mode 100644 index 362950bea9..0000000000 --- a/persistence-modules/spring-data-jpa-4/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.baeldung.composite.repository; - -import com.baeldung.composite.BookApplication; -import com.baeldung.composite.entity.Book; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import java.util.Arrays; -import java.util.List; - -import static org.junit.Assert.assertEquals; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = BookApplication.class) -public class BookRepositoryIntegrationTest { - - public static final String JAVA_101 = "Java101"; - public static final String JANE = "Jane"; - @Autowired - BookRepository repository; - - @Before - public void setUp() { - Book book1 = new Book("John", JAVA_101, "Tech", 20); - Book book2 = new Book(JANE, JAVA_101, "Arch", 25); - Book book3 = new Book(JANE, "Scala101", "Tech", 23); - - repository.saveAll(Arrays.asList(book1, book2, book3)); - } - - @After - public void tearDown() { - repository.deleteAll(); - } - - @Test - public void testFindByName() { - List books = repository.findByIdName(JAVA_101); - - assertEquals(2, books.size()); - } - - @Test - public void testFindByAuthor() { - List books = repository.findByIdAuthor(JANE); - - assertEquals(2, books.size()); - } - - @Test - public void testFindByGenre() { - List books = repository.findByIdAuthor(JANE); - - assertEquals(2, books.size()); - } -} \ No newline at end of file From 8ef7cc6b81e62d42ca8afa533610cec0cf489337 Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sat, 2 May 2020 00:23:59 +0530 Subject: [PATCH 139/157] all files --- .../spring-data-jpa-5/README.md | 11 ++++ persistence-modules/spring-data-jpa-5/pom.xml | 47 ++++++++++++++ .../baeldung/composite/BookApplication.java | 12 ++++ .../com/baeldung/composite/entity/Book.java | 47 ++++++++++++++ .../com/baeldung/composite/entity/BookId.java | 51 +++++++++++++++ .../composite/repository/BookRepository.java | 18 ++++++ .../src/main/resources/application.properties | 2 + .../BookRepositoryIntegrationTest.java | 64 +++++++++++++++++++ .../resources/application-test.properties | 2 + 9 files changed, 254 insertions(+) create mode 100644 persistence-modules/spring-data-jpa-5/README.md create mode 100644 persistence-modules/spring-data-jpa-5/pom.xml create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/BookApplication.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/Book.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/BookId.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/repository/BookRepository.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/resources/application.properties create mode 100644 persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java create mode 100644 persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties diff --git a/persistence-modules/spring-data-jpa-5/README.md b/persistence-modules/spring-data-jpa-5/README.md new file mode 100644 index 0000000000..51c39f7bb0 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/README.md @@ -0,0 +1,11 @@ +### Relevant Articles: +- [Derived Query Methods in Spring Data JPA Repositories](TBD) + +### Eclipse Config +After importing the project into Eclipse, you may see the following error: +"No persistence xml file found in project" + +This can be ignored: +- Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" +Or: +- Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator diff --git a/persistence-modules/spring-data-jpa-5/pom.xml b/persistence-modules/spring-data-jpa-5/pom.xml new file mode 100644 index 0000000000..c71cec1d08 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + spring-data-jpa-5 + spring-data-jpa-5 + + + com.baeldung + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + org.springframework.boot + spring-boot-starter-data-jdbc + + + + mysql + mysql-connector-java + + + + org.postgresql + postgresql + + + + com.h2database + h2 + + + + \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/BookApplication.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/BookApplication.java new file mode 100644 index 0000000000..52f06058aa --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/BookApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.composite; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class BookApplication { + + public static void main(String[] args) { + SpringApplication.run(BookApplication.class); + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/Book.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/Book.java new file mode 100644 index 0000000000..e4f1727654 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/Book.java @@ -0,0 +1,47 @@ +package com.baeldung.composite.entity; + +import javax.persistence.EmbeddedId; +import javax.persistence.Entity; + +@Entity +public class Book { + + @EmbeddedId + private BookId id; + private String genre; + private Integer price; + + public Book() { + } + + public Book(String author, String name, String genre, Integer price) { + BookId id = new BookId(author, name); + this.id = id; + this.genre = genre; + this.price = price; + } + + public BookId getId() { + return id; + } + + public void setId(BookId id) { + this.id = id; + } + + public String getGenre() { + return genre; + } + + public void setGenre(String genre) { + this.genre = genre; + } + + public Integer getPrice() { + return price; + } + + public void setPrice(Integer price) { + this.price = price; + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/BookId.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/BookId.java new file mode 100644 index 0000000000..1524452412 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/entity/BookId.java @@ -0,0 +1,51 @@ +package com.baeldung.composite.entity; + +import javax.persistence.Embeddable; +import java.io.Serializable; +import java.util.Objects; + +@Embeddable +public class BookId implements Serializable { + + private String author; + private String name; + + public BookId() { + } + + public BookId(String author, String name) { + this.author = author; + this.name = name; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public boolean equals(Object o) { + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; + BookId bookId = (BookId) o; + return Objects.equals(author, bookId.author) && Objects.equals(name, bookId.name); + } + + @Override + public int hashCode() { + return Objects.hash(author, name); + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/repository/BookRepository.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/repository/BookRepository.java new file mode 100644 index 0000000000..d5993eaf79 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/composite/repository/BookRepository.java @@ -0,0 +1,18 @@ +package com.baeldung.composite.repository; + +import com.baeldung.composite.entity.Book; +import com.baeldung.composite.entity.BookId; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface BookRepository extends JpaRepository { + + List findByIdName(String name); + + List findByIdAuthor(String author); + + List findByGenre(String genre); +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties new file mode 100644 index 0000000000..dfc5e56e33 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties @@ -0,0 +1,2 @@ +spring.jpa.show-sql=true + diff --git a/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java new file mode 100644 index 0000000000..9d25acbd96 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/composite/repository/BookRepositoryIntegrationTest.java @@ -0,0 +1,64 @@ +package com.baeldung.composite.repository; + +import com.baeldung.composite.BookApplication; +import com.baeldung.composite.entity.Book; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = BookApplication.class) +public class BookRepositoryIntegrationTest { + + public static final String JAVA_101 = "Java101"; + public static final String JANE = "Jane"; + public static final String TECH = "Tech"; + @Autowired + BookRepository repository; + + @Before + public void setUp() { + Book book1 = new Book("John", JAVA_101, TECH, 20); + Book book2 = new Book(JANE, JAVA_101, "Arch", 25); + Book book3 = new Book(JANE, "Scala101", TECH, 23); + + repository.saveAll(Arrays.asList(book1, book2, book3)); + } + + @After + public void tearDown() { + repository.deleteAll(); + } + + @Test + public void testFindByName() { + List books = repository.findByIdName(JAVA_101); + + assertEquals(2, books.size()); + } + + @Test + public void testFindByAuthor() { + List books = repository.findByIdAuthor(JANE); + + assertEquals(2, books.size()); + } + + @Test + public void testFindByGenre() { + List books = repository.findByGenre(TECH); + + assertEquals(2, books.size()); + } +} \ No newline at end of file diff --git a/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties new file mode 100644 index 0000000000..f9497c8f37 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties @@ -0,0 +1,2 @@ +spring.jpa.hibernate.ddl-auto=update +spring.datasource.url=jdbc:h2:mem:jpa3 \ No newline at end of file From ed27094b5b53b122cbd392f43743333479fd45d8 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Fri, 1 May 2020 20:56:43 +0200 Subject: [PATCH 140/157] [JAVA-621] Got last compilation error --- .../com/baeldung/hashcode/application/ApplicationUnitTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java index 49857f355a..18b2d4d570 100644 --- a/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java +++ b/core-java-modules/core-java-lang-oop-methods/src/test/java/com/baeldung/hashcode/application/ApplicationUnitTest.java @@ -1,6 +1,6 @@ package com.baeldung.hashcode.application; -import com.baeldung.hashcode.entities.User; +import com.baeldung.hashcode.standard.User; import org.junit.Test; import java.util.HashMap; From 5724e188a07a73612802981271b5f367fbc858be Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sat, 2 May 2020 00:28:53 +0530 Subject: [PATCH 141/157] "updated README.md" --- persistence-modules/spring-data-jpa-5/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-data-jpa-5/README.md b/persistence-modules/spring-data-jpa-5/README.md index 51c39f7bb0..dd4ac22e4a 100644 --- a/persistence-modules/spring-data-jpa-5/README.md +++ b/persistence-modules/spring-data-jpa-5/README.md @@ -1,5 +1,5 @@ ### Relevant Articles: -- [Derived Query Methods in Spring Data JPA Repositories](TBD) +- [Spring JPA @Embedded and @EmbeddedId](TBD) ### Eclipse Config After importing the project into Eclipse, you may see the following error: From 9797d3a4fcce87047d2402efc1585ece9cf1147c Mon Sep 17 00:00:00 2001 From: Aaron Juarez Date: Fri, 1 May 2020 15:35:29 -0400 Subject: [PATCH 142/157] Bael-3966: code fixes after editor review (#9203) --- .../core-java-lang-operators/pom.xml | 6 +++++ .../com/baeldung/objectclass/Borrower.java | 0 .../java/com/baeldung/objectclass/Lender.java | 0 .../java/com/baeldung/objectclass/User.java | 0 .../objectclass/CreditAppUnitTest.java | 23 +++++++++++++++---- 5 files changed, 25 insertions(+), 4 deletions(-) rename core-java-modules/{core-java => core-java-lang-operators}/src/main/java/com/baeldung/objectclass/Borrower.java (100%) rename core-java-modules/{core-java => core-java-lang-operators}/src/main/java/com/baeldung/objectclass/Lender.java (100%) rename core-java-modules/{core-java => core-java-lang-operators}/src/main/java/com/baeldung/objectclass/User.java (100%) rename core-java-modules/{core-java => core-java-lang-operators}/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java (74%) diff --git a/core-java-modules/core-java-lang-operators/pom.xml b/core-java-modules/core-java-lang-operators/pom.xml index b95caa81b8..09fbce4b3c 100644 --- a/core-java-modules/core-java-lang-operators/pom.xml +++ b/core-java-modules/core-java-lang-operators/pom.xml @@ -17,6 +17,12 @@ + + org.projectlombok + lombok + ${lombok.version} + provided + org.assertj diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Borrower.java b/core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/objectclass/Borrower.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Borrower.java rename to core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/objectclass/Borrower.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Lender.java b/core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/objectclass/Lender.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/objectclass/Lender.java rename to core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/objectclass/Lender.java diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/objectclass/User.java b/core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/objectclass/User.java similarity index 100% rename from core-java-modules/core-java/src/main/java/com/baeldung/objectclass/User.java rename to core-java-modules/core-java-lang-operators/src/main/java/com/baeldung/objectclass/User.java diff --git a/core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java similarity index 74% rename from core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java rename to core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java index 8330ddbac5..bba30adcdb 100644 --- a/core-java-modules/core-java/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java +++ b/core-java-modules/core-java-lang-operators/src/test/java/com/baeldung/objectclass/CreditAppUnitTest.java @@ -5,6 +5,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.Ignore; import org.junit.Test; public class CreditAppUnitTest { @@ -40,13 +41,28 @@ public class CreditAppUnitTest { assertNotNull(lender); } + @Ignore + @Test + public void givenBorrower_whenDoubleOrNotString_thenRequestLoan() { + Borrower borrower = new Borrower(); + double amount = 100.0; + + /*if(amount instanceof Double) { // Compilation error, no autoboxing + borrower.requestLoan(amount); + } + + if(!(amount instanceof String)) { // Compilation error, incompatible operands + borrower.requestLoan(amount); + }*/ + + } + @Test public void givenBorrower_whenLoanAmountIsDouble_thenRequestLoan() { Borrower borrower = new Borrower(); double amount = 100.0; - //if(amount instanceof Double) // Compilation error, no autoboxing - if(Double.class.isInstance(amount)) { + if(Double.class.isInstance(amount)) { // No compilation error borrower.requestLoan(amount); } assertEquals(100, borrower.getTotalLoanAmount()); @@ -57,8 +73,7 @@ public class CreditAppUnitTest { Borrower borrower = new Borrower(); Double amount = 100.0; - //if(amount instanceof String) // Compilation error, incompatible operands - if(!String.class.isInstance(amount)) { + if(!String.class.isInstance(amount)) { // No compilation error borrower.requestLoan(amount); } assertEquals(100, borrower.getTotalLoanAmount()); From dd052eb2fc0457e67b20302392072136b242c7f9 Mon Sep 17 00:00:00 2001 From: kwoyke Date: Sat, 2 May 2020 18:27:41 +0200 Subject: [PATCH 143/157] BAEL-3730: Force simple cache manager usage (#9211) --- .../caching/boot/SimpleCacheCustomizerIntegrationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-caching/src/test/java/com/baeldung/caching/boot/SimpleCacheCustomizerIntegrationTest.java b/spring-caching/src/test/java/com/baeldung/caching/boot/SimpleCacheCustomizerIntegrationTest.java index 56a4bd4745..3c83065c5c 100644 --- a/spring-caching/src/test/java/com/baeldung/caching/boot/SimpleCacheCustomizerIntegrationTest.java +++ b/spring-caching/src/test/java/com/baeldung/caching/boot/SimpleCacheCustomizerIntegrationTest.java @@ -10,7 +10,7 @@ import org.springframework.test.context.junit4.SpringRunner; import static org.assertj.core.api.Assertions.assertThat; @RunWith(SpringRunner.class) -@SpringBootTest +@SpringBootTest("spring.cache.type=simple") public class SimpleCacheCustomizerIntegrationTest { @Autowired From 2b4c2e3c8c9f75b4e65c8e351d34b98bee4d7720 Mon Sep 17 00:00:00 2001 From: Belma Jakupovic Date: Sat, 2 May 2020 18:30:36 +0200 Subject: [PATCH 144/157] bjakupovic remove sys. prints (#9208) --- .../src/main/java/com/baeldung/s/TextManipulator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java b/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java index a6b32a0ff9..d084a78815 100644 --- a/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java +++ b/patterns/solid/src/main/java/com/baeldung/s/TextManipulator.java @@ -15,16 +15,18 @@ public class TextManipulator { text = text.concat(newText); } - public void findWordAndReplace(String word, String replacementWord) { + public String findWordAndReplace(String word, String replacementWord) { if (text.contains(word)) { text = text.replace(word, replacementWord); - } else System.out.println("Word you want to replace is not found in the text"); + } + return text; } - public void findWordAndDelete(String word) { + public String findWordAndDelete(String word) { if (text.contains(word)) { text = text.replace(word, ""); - } else System.out.println("Word you want to delete is not found in the text"); + } + return text; } /* From cb9ed74dab4f05a111023836dc2da902947217d1 Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 3 May 2020 15:35:23 +0530 Subject: [PATCH 145/157] fix integration test cases --- spring-mvc-java/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 079a664a5d..30c6961f03 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -69,6 +69,12 @@ commons-io ${commons-io.version} + + commons-fileupload + commons-fileupload + 1.4 + + From 63fb2df0ba1f83e6b7451e7204f65ce08a12ae32 Mon Sep 17 00:00:00 2001 From: "amit.pandey" Date: Sun, 3 May 2020 15:37:23 +0530 Subject: [PATCH 146/157] fix integration test cases --- spring-mvc-java/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index 30c6961f03..9e3457aa8a 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -72,7 +72,7 @@ commons-fileupload commons-fileupload - 1.4 + ${commons-fileupload.version} @@ -243,6 +243,7 @@ 3.5 1.3.2 2.5 + 1.4 2.2.0 From 04ac8037041d7df0edf4016629ff6e3235f1b899 Mon Sep 17 00:00:00 2001 From: dupirefr Date: Sun, 3 May 2020 19:42:17 +0200 Subject: [PATCH 147/157] [JAVA-621] Fixed core-java-lang-oop-inheritance module description --- core-java-modules/core-java-lang-oop-inheritance/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core-java-modules/core-java-lang-oop-inheritance/README.md b/core-java-modules/core-java-lang-oop-inheritance/README.md index e264f9fae4..c87bdf13d7 100644 --- a/core-java-modules/core-java-lang-oop-inheritance/README.md +++ b/core-java-modules/core-java-lang-oop-inheritance/README.md @@ -1,6 +1,6 @@ -## Core Java Lang OOP - Types +## Core Java Lang OOP - Inheritance -This module contains articles about types in Java +This module contains articles about inheritance in Java ### Relevant Articles: - [Java Interfaces](https://www.baeldung.com/java-interfaces) From 50a6563e30fd87dc040cdb6d72da0cac9f67928f Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sun, 3 May 2020 23:19:33 +0530 Subject: [PATCH 148/157] "updated pom.xml" --- persistence-modules/spring-data-jpa-5/pom.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/persistence-modules/spring-data-jpa-5/pom.xml b/persistence-modules/spring-data-jpa-5/pom.xml index c71cec1d08..390cfaf0c0 100644 --- a/persistence-modules/spring-data-jpa-5/pom.xml +++ b/persistence-modules/spring-data-jpa-5/pom.xml @@ -28,16 +28,6 @@ spring-boot-starter-data-jdbc - - mysql - mysql-connector-java - - - - org.postgresql - postgresql - - com.h2database h2 From 43816bc2822b0440860aba1a584dca33d5502d41 Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sun, 3 May 2020 23:33:39 +0530 Subject: [PATCH 149/157] update --- persistence-modules/spring-data-jpa-5/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/persistence-modules/spring-data-jpa-5/pom.xml b/persistence-modules/spring-data-jpa-5/pom.xml index 390cfaf0c0..7f2c724f98 100644 --- a/persistence-modules/spring-data-jpa-5/pom.xml +++ b/persistence-modules/spring-data-jpa-5/pom.xml @@ -34,4 +34,4 @@ - \ No newline at end of file + From 4487ac8654ac989a607998ae382dadb5979ab173 Mon Sep 17 00:00:00 2001 From: Arindum Roy Date: Sun, 3 May 2020 23:36:14 +0530 Subject: [PATCH 150/157] update --- .../src/test/resources/application-test.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties index f9497c8f37..207de2e8ec 100644 --- a/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties +++ b/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties @@ -1,2 +1 @@ spring.jpa.hibernate.ddl-auto=update -spring.datasource.url=jdbc:h2:mem:jpa3 \ No newline at end of file From b26b71567acaafa778f4b97d08a6c95b7c2dd528 Mon Sep 17 00:00:00 2001 From: aitorcuesta <56877414+aitorcuesta@users.noreply.github.com> Date: Sun, 3 May 2020 22:25:39 +0200 Subject: [PATCH 151/157] [BAEL-3614] - Spring Redis Configuration From application.properties File (#9226) * BAEL-3614 - Initial commit * BAEL-3614 - Removing unnecessary properties --- persistence-modules/redis/pom.xml | 32 ++++++--- .../redis/configuration/RedisConfig.java | 24 +++++++ .../SpringRedisConfigurationApplication.java | 19 ++++++ .../controller/BooksController.java | 32 +++++++++ .../redis/configuration/entity/Book.java | 46 +++++++++++++ .../repository/BooksRepository.java | 25 +++++++ .../src/main/resources/application.properties | 9 +++ .../controller/BooksControllerUnitTest.java | 52 +++++++++++++++ .../repository/BooksRepositoryUnitTest.java | 66 +++++++++++++++++++ 9 files changed, 295 insertions(+), 10 deletions(-) create mode 100644 persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/RedisConfig.java create mode 100644 persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/SpringRedisConfigurationApplication.java create mode 100644 persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/controller/BooksController.java create mode 100644 persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/entity/Book.java create mode 100644 persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/repository/BooksRepository.java create mode 100644 persistence-modules/redis/src/main/resources/application.properties create mode 100644 persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java create mode 100644 persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java diff --git a/persistence-modules/redis/pom.xml b/persistence-modules/redis/pom.xml index fffcfbb96b..c9206e5f92 100644 --- a/persistence-modules/redis/pom.xml +++ b/persistence-modules/redis/pom.xml @@ -9,16 +9,31 @@ com.baeldung - persistence-modules - 1.0.0-SNAPSHOT + parent-boot-2 + 0.0.1-SNAPSHOT + ../../parent-boot-2 + + org.springframework.boot + spring-boot-starter + + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-data-redis + + redis.clients jedis - ${jedis.version} - + com.github.kstyrc embedded-redis @@ -32,15 +47,12 @@ io.lettuce lettuce-core - ${lettuce-core.version} - + - - 3.2.0 + 0.6 - 3.3.0 - 5.0.1.RELEASE + 3.3.0 diff --git a/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/RedisConfig.java b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/RedisConfig.java new file mode 100644 index 0000000000..ad43ad8159 --- /dev/null +++ b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/RedisConfig.java @@ -0,0 +1,24 @@ +package com.baeldung.spring.redis.configuration; + +import org.springframework.boot.autoconfigure.data.redis.RedisProperties; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; + +import com.baeldung.spring.redis.configuration.entity.Book; + +@Configuration +@EnableConfigurationProperties(RedisProperties.class) +public class RedisConfig { + + @Bean + public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { + RedisTemplate template = new RedisTemplate<>(); + template.setConnectionFactory(connectionFactory); + // Add some specific configuration here. Key serializers, etc. + return template; + } + +} diff --git a/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/SpringRedisConfigurationApplication.java b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/SpringRedisConfigurationApplication.java new file mode 100644 index 0000000000..932a6b7478 --- /dev/null +++ b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/SpringRedisConfigurationApplication.java @@ -0,0 +1,19 @@ +package com.baeldung.spring.redis.configuration; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringRedisConfigurationApplication implements CommandLineRunner { + + public static void main(String[] args) { + SpringApplication.run(SpringRedisConfigurationApplication.class, args); + } + + @Override + public void run(String... args) throws Exception { + + } + +} diff --git a/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/controller/BooksController.java b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/controller/BooksController.java new file mode 100644 index 0000000000..b3faf030c9 --- /dev/null +++ b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/controller/BooksController.java @@ -0,0 +1,32 @@ +package com.baeldung.spring.redis.configuration.controller; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.baeldung.spring.redis.configuration.entity.Book; +import com.baeldung.spring.redis.configuration.repository.BooksRepository; + +@RestController +@RequestMapping("/books") +public class BooksController { + + @Autowired + private BooksRepository repository; + + @PostMapping("/create") + public String newBook(@RequestBody Book newBook) { + repository.save(newBook); + return "Added"; + } + + @GetMapping("/get/{id}") + public Book findOne(@PathVariable Long id) { + return repository.findById(id); + } + +} diff --git a/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/entity/Book.java b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/entity/Book.java new file mode 100644 index 0000000000..52d579d4fb --- /dev/null +++ b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/entity/Book.java @@ -0,0 +1,46 @@ +package com.baeldung.spring.redis.configuration.entity; + +import java.io.Serializable; + +public class Book implements Serializable { + + private static final long serialVersionUID = 1L; + + private Long id; + + private String name; + + public Book() { + } + + public Book(String name) { + this.name = name; + } + + public Book(Long id, String name) { + this.id = id; + this.name = name; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "Book [id=" + id + ", name=" + name + "]"; + } + +} diff --git a/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/repository/BooksRepository.java b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/repository/BooksRepository.java new file mode 100644 index 0000000000..a6eba0e742 --- /dev/null +++ b/persistence-modules/redis/src/main/java/com/baeldung/spring/redis/configuration/repository/BooksRepository.java @@ -0,0 +1,25 @@ +package com.baeldung.spring.redis.configuration.repository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Component; + +import com.baeldung.spring.redis.configuration.entity.Book; + +@Component +public class BooksRepository { + + @Autowired + private RedisTemplate redisTemplate; + + public void save(Book book) { + redisTemplate.opsForValue() + .set(book.getId(), book); + } + + public Book findById(Long id) { + return redisTemplate.opsForValue() + .get(id); + } + +} diff --git a/persistence-modules/redis/src/main/resources/application.properties b/persistence-modules/redis/src/main/resources/application.properties new file mode 100644 index 0000000000..e3140c4e29 --- /dev/null +++ b/persistence-modules/redis/src/main/resources/application.properties @@ -0,0 +1,9 @@ +spring.redis.database=0 +spring.redis.host=localhost +spring.redis.port=16379 +spring.redis.password=mypass +spring.redis.timeout=60000 +spring.redis.lettuce.pool.max-active=8 +spring.redis.lettuce.pool.max-idle=8 +spring.redis.lettuce.pool.max-wait=-1 +spring.redis.lettuce.pool.min-idle=0 \ No newline at end of file diff --git a/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java new file mode 100644 index 0000000000..a5c3340065 --- /dev/null +++ b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/controller/BooksControllerUnitTest.java @@ -0,0 +1,52 @@ +package com.baeldung.spring.redis.configuration.controller; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; +import static org.junit.jupiter.api.Assertions.assertSame; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.spring.redis.configuration.entity.Book; +import com.baeldung.spring.redis.configuration.repository.BooksRepository; + +@RunWith(SpringJUnit4ClassRunner.class) +public class BooksControllerUnitTest { + + @Spy + @InjectMocks + private BooksController booksController; + + @Mock + private BooksRepository booksRepository; + + private static final Long BOOK_ID = 1l; + private static final Long OTHER_BOOK_ID = 2l; + private static final String BOOK_NAME = "Ulysses"; + private static final String ADDED = "Added"; + + @Test + public void whenNewBook_thenCorrect() { + assertEquals(ADDED, booksController.newBook(new Book(BOOK_ID, BOOK_NAME))); + } + + @Test + public void whenFindOneFinds_thenCorrect() { + Book book = new Book(BOOK_ID, BOOK_NAME); + when(booksRepository.findById(BOOK_ID)).thenReturn(book); + assertSame(book, booksController.findOne(BOOK_ID)); + } + + @Test + public void whenFindOneNotFound_thenReturnsNull() { + Book book = new Book(BOOK_ID, BOOK_NAME); + when(booksRepository.findById(BOOK_ID)).thenReturn(book); + assertNull(booksController.findOne(OTHER_BOOK_ID)); + } + +} diff --git a/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java new file mode 100644 index 0000000000..1edf9c7e89 --- /dev/null +++ b/persistence-modules/redis/src/test/java/com/baeldung/spring/redis/configuration/repository/BooksRepositoryUnitTest.java @@ -0,0 +1,66 @@ +package com.baeldung.spring.redis.configuration.repository; + +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertSame; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Spy; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.ValueOperations; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.spring.redis.configuration.entity.Book; + +@RunWith(SpringJUnit4ClassRunner.class) +public class BooksRepositoryUnitTest { + + @Spy + @InjectMocks + private BooksRepository booksRepository; + + @Mock + private RedisTemplate redisTemplate; + + @Mock + private ValueOperations valueOperations; + + private static final Long BOOK_ID = 1l; + private static final Long OTHER_BOOK_ID = 2l; + private static final String BOOK_NAME = "Ulysses"; + + @Test + public void whenSave_thenCorrect() { + Book book = new Book(BOOK_ID, BOOK_NAME); + when(redisTemplate.opsForValue()).thenReturn(valueOperations); + booksRepository.save(book); + verify(redisTemplate, times(1)).opsForValue(); + verify(valueOperations, times(1)).set(BOOK_ID, book); + } + + @Test + public void whenFindByIdFound_thenReturnsBook() { + Book book = new Book(BOOK_ID, BOOK_NAME); + when(redisTemplate.opsForValue()).thenReturn(valueOperations); + when(valueOperations.get(BOOK_ID)).thenReturn(book); + assertSame(book, booksRepository.findById(BOOK_ID)); + verify(redisTemplate, times(1)).opsForValue(); + verify(valueOperations, times(1)).get(BOOK_ID); + } + + @Test + public void whenFindByIdNotFound_thenReturnsNull() { + Book book = new Book(BOOK_ID, BOOK_NAME); + when(redisTemplate.opsForValue()).thenReturn(valueOperations); + when(valueOperations.get(BOOK_ID)).thenReturn(book); + assertNull(booksRepository.findById(OTHER_BOOK_ID)); + verify(redisTemplate, times(1)).opsForValue(); + verify(valueOperations, times(1)).get(OTHER_BOOK_ID); + } + +} From 93074cdabc271fb356f30c16837d751313f309cb Mon Sep 17 00:00:00 2001 From: Sampada <46674082+sampada07@users.noreply.github.com> Date: Mon, 4 May 2020 20:36:20 +0530 Subject: [PATCH 152/157] JAVA-929: Migrate spring-cloud-aws to parent-boot-2 (#9230) * JAVA-929: Migrate spring-cloud-aws to parent-boot-2 * JAVA-929: Corrected Live Tests * JAVA-929: Updated README --- spring-cloud/spring-cloud-aws/README.md | 1 - spring-cloud/spring-cloud-aws/pom.xml | 12 +++++++--- .../spring/cloud/aws/s3/SpringCloudS3.java | 24 ++++++++++++------- .../src/main/resources/application.properties | 1 - 4 files changed, 25 insertions(+), 13 deletions(-) diff --git a/spring-cloud/spring-cloud-aws/README.md b/spring-cloud/spring-cloud-aws/README.md index bf33728c74..ddcc97420f 100644 --- a/spring-cloud/spring-cloud-aws/README.md +++ b/spring-cloud/spring-cloud-aws/README.md @@ -23,7 +23,6 @@ Let's say that the RDS instance is called `spring-cloud-test-db` having the mast to write the following in `application.properties`: ``` -cloud.aws.rds.spring-cloud-test-db cloud.aws.rds.spring-cloud-test-db.password=se3retpass ``` Multiple application classes are available under this project. To launch InstanceProfileAwsApplication application, replace `start-class` under `pom.xml`: diff --git a/spring-cloud/spring-cloud-aws/pom.xml b/spring-cloud/spring-cloud-aws/pom.xml index abf9363288..2b05020888 100644 --- a/spring-cloud/spring-cloud-aws/pom.xml +++ b/spring-cloud/spring-cloud-aws/pom.xml @@ -10,9 +10,9 @@ com.baeldung - parent-boot-1 + parent-boot-2 0.0.1-SNAPSHOT - ../../parent-boot-1 + ../../parent-boot-2 @@ -43,6 +43,12 @@ org.postgresql postgresql + + + mysql + mysql-connector-java + + @@ -60,7 +66,7 @@ com.baeldung.spring.cloud.aws.SpringCloudAwsApplication Dalston.SR4 - 2.0.1.RELEASE + 2.2.1.RELEASE diff --git a/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3.java b/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3.java index cfad6e904f..acfd6d339e 100644 --- a/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3.java +++ b/spring-cloud/spring-cloud-aws/src/main/java/com/baeldung/spring/cloud/aws/s3/SpringCloudS3.java @@ -1,12 +1,5 @@ package com.baeldung.spring.cloud.aws.s3; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.io.Resource; -import org.springframework.core.io.ResourceLoader; -import org.springframework.core.io.WritableResource; -import org.springframework.core.io.support.ResourcePatternResolver; -import org.springframework.stereotype.Component; - import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -14,14 +7,29 @@ import java.io.OutputStream; import java.nio.file.Files; import java.nio.file.StandardCopyOption; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.cloud.aws.core.io.s3.PathMatchingSimpleStorageResourcePatternResolver; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.Resource; +import org.springframework.core.io.ResourceLoader; +import org.springframework.core.io.WritableResource; +import org.springframework.core.io.support.ResourcePatternResolver; +import org.springframework.stereotype.Component; + +import com.amazonaws.services.s3.AmazonS3; + @Component public class SpringCloudS3 { @Autowired ResourceLoader resourceLoader; + private ResourcePatternResolver resourcePatternResolver; + @Autowired - ResourcePatternResolver resourcePatternResolver; + public void setupResolver(ApplicationContext applicationContext, AmazonS3 amazonS3) { + this.resourcePatternResolver = new PathMatchingSimpleStorageResourcePatternResolver(amazonS3, applicationContext); + } public void downloadS3Object(String s3Url) throws IOException { Resource resource = resourceLoader.getResource(s3Url); diff --git a/spring-cloud/spring-cloud-aws/src/main/resources/application.properties b/spring-cloud/spring-cloud-aws/src/main/resources/application.properties index 690eda13a2..e8139326b9 100644 --- a/spring-cloud/spring-cloud-aws/src/main/resources/application.properties +++ b/spring-cloud/spring-cloud-aws/src/main/resources/application.properties @@ -2,7 +2,6 @@ cloud.aws.credentials.accessKey=YourAccessKey cloud.aws.credentials.secretKey=YourSecretKey cloud.aws.region.static=us-east-1 -cloud.aws.rds.spring-cloud-test-db cloud.aws.rds.spring-cloud-test-db.password=se3retpass # These 3 properties are optional From b3f1413445507f4c921de74950dce9e7c5f9532d Mon Sep 17 00:00:00 2001 From: marc06210 <47176686+marc06210@users.noreply.github.com> Date: Mon, 4 May 2020 18:03:21 +0200 Subject: [PATCH 153/157] BAEL-3960 (#9070) Bael-3960, asserting log messages with junit code. --- testing-modules/pom.xml | 1 + testing-modules/testing-assertions/pom.xml | 28 ++++++++++ .../baeldung/junit/log/BusinessWorker.java | 16 ++++++ .../src/main/resources/logback.xml | 16 ++++++ .../junit/log/BusinessWorkerUnitTest.java | 48 +++++++++++++++++ .../baeldung/junit/log/MemoryAppender.java | 51 +++++++++++++++++++ .../src/test/resources/logback.xml | 13 +++++ 7 files changed, 173 insertions(+) create mode 100644 testing-modules/testing-assertions/pom.xml create mode 100644 testing-modules/testing-assertions/src/main/java/com/baeldung/junit/log/BusinessWorker.java create mode 100644 testing-modules/testing-assertions/src/main/resources/logback.xml create mode 100644 testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/BusinessWorkerUnitTest.java create mode 100644 testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java create mode 100644 testing-modules/testing-assertions/src/test/resources/logback.xml diff --git a/testing-modules/pom.xml b/testing-modules/pom.xml index 951909b36f..b467b3c503 100644 --- a/testing-modules/pom.xml +++ b/testing-modules/pom.xml @@ -33,6 +33,7 @@ selenium-junit-testng spring-testing test-containers + testing-assertions testng junit-5-basics easymock diff --git a/testing-modules/testing-assertions/pom.xml b/testing-modules/testing-assertions/pom.xml new file mode 100644 index 0000000000..0a7c4b0860 --- /dev/null +++ b/testing-modules/testing-assertions/pom.xml @@ -0,0 +1,28 @@ + + 4.0.0 + testing-assertions + 0.0.1-SNAPSHOT + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + + ch.qos.logback + logback-classic + 1.2.3 + + + org.assertj + assertj-core + 3.15.0 + test + + + diff --git a/testing-modules/testing-assertions/src/main/java/com/baeldung/junit/log/BusinessWorker.java b/testing-modules/testing-assertions/src/main/java/com/baeldung/junit/log/BusinessWorker.java new file mode 100644 index 0000000000..86cd38824c --- /dev/null +++ b/testing-modules/testing-assertions/src/main/java/com/baeldung/junit/log/BusinessWorker.java @@ -0,0 +1,16 @@ +package com.baeldung.junit.log; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class BusinessWorker { + private static Logger LOGGER = LoggerFactory.getLogger(BusinessWorker.class); + + public void generateLogs(String msg) { + LOGGER.trace(msg); + LOGGER.debug(msg); + LOGGER.info(msg); + LOGGER.warn(msg); + LOGGER.error(msg); + } +} diff --git a/testing-modules/testing-assertions/src/main/resources/logback.xml b/testing-modules/testing-assertions/src/main/resources/logback.xml new file mode 100644 index 0000000000..d485da62ff --- /dev/null +++ b/testing-modules/testing-assertions/src/main/resources/logback.xml @@ -0,0 +1,16 @@ + + + + + + %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n + + + + + + + + + + \ No newline at end of file diff --git a/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/BusinessWorkerUnitTest.java b/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/BusinessWorkerUnitTest.java new file mode 100644 index 0000000000..9200caf13d --- /dev/null +++ b/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/BusinessWorkerUnitTest.java @@ -0,0 +1,48 @@ +package com.baeldung.junit.log; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.slf4j.LoggerFactory; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; + +public class BusinessWorkerUnitTest { + private static MemoryAppender memoryAppender; + private static final String LOGGER_NAME = "com.baeldung.junit.log"; + private static final String MSG = "This is a test message!!!"; + + @Before + public void setup() { + Logger logger = (Logger) LoggerFactory.getLogger(LOGGER_NAME); + memoryAppender = new MemoryAppender(); + memoryAppender.setContext((LoggerContext) LoggerFactory.getILoggerFactory()); + logger.setLevel(Level.DEBUG); + logger.addAppender(memoryAppender); + memoryAppender.start(); + + } + + @After + public void cleanUp() { + memoryAppender.reset(); + memoryAppender.stop(); + } + + @Test + public void test() { + BusinessWorker worker = new BusinessWorker(); + worker.generateLogs(MSG); + + // I check that I only have 4 messages (all but trace) + assertThat(memoryAppender.countEventsForLogger(LOGGER_NAME)).isEqualTo(4); + // I look for a specific message at a specific level, and I only have 1 + assertThat(memoryAppender.search(MSG, Level.INFO).size()).isEqualTo(1); + // I check that the entry that is not present is the trace level + assertThat(memoryAppender.contains(MSG, Level.TRACE)).isFalse(); + } +} diff --git a/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java b/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java new file mode 100644 index 0000000000..31c5c69766 --- /dev/null +++ b/testing-modules/testing-assertions/src/test/java/com/baeldung/junit/log/MemoryAppender.java @@ -0,0 +1,51 @@ +package com.baeldung.junit.log; + +import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; + +import ch.qos.logback.classic.Level; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.read.ListAppender; + +/** + * In memory slf4j appender
+ * Convenient appender to be able to check slf4j invocations + */ +public class MemoryAppender extends ListAppender { + public void reset() { + this.list.clear(); + } + + public boolean contains(String string, Level level) { + return this.list.stream() + .anyMatch(event -> event.getMessage().toString().contains(string) + && event.getLevel().equals(level)); + } + + public int countEventsForLogger(String loggerName) { + return (int) this.list.stream() + .filter(event -> event.getLoggerName().contains(loggerName)).count(); + } + + public List search(String string) { + return this.list.stream() + .filter(event -> event.getMessage().toString().contains(string)) + .collect(Collectors.toList()); + } + + public List search(String string, Level level) { + return this.list.stream() + .filter(event -> event.getMessage().toString().contains(string) + && event.getLevel().equals(level)) + .collect(Collectors.toList()); + } + + public int getSize() { + return this.list.size(); + } + + public List getLoggedEvents() { + return Collections.unmodifiableList(this.list); + } +} diff --git a/testing-modules/testing-assertions/src/test/resources/logback.xml b/testing-modules/testing-assertions/src/test/resources/logback.xml new file mode 100644 index 0000000000..980ce897ff --- /dev/null +++ b/testing-modules/testing-assertions/src/test/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + + %d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n + + + + + + + \ No newline at end of file From ab9e0e164fe3662deaf3697f5e8cfa440217eac6 Mon Sep 17 00:00:00 2001 From: Roque Santos Date: Mon, 4 May 2020 13:37:38 -0300 Subject: [PATCH 154/157] BAEL-3842 : How to add proxy support to Jsoup (#9202) --- .../jsonproxy/JsoupProxyIntegrationTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 jsoup/src/test/java/com/baeldung/jsonproxy/JsoupProxyIntegrationTest.java diff --git a/jsoup/src/test/java/com/baeldung/jsonproxy/JsoupProxyIntegrationTest.java b/jsoup/src/test/java/com/baeldung/jsonproxy/JsoupProxyIntegrationTest.java new file mode 100644 index 0000000000..8e854ead6a --- /dev/null +++ b/jsoup/src/test/java/com/baeldung/jsonproxy/JsoupProxyIntegrationTest.java @@ -0,0 +1,27 @@ +package com.baeldung.jsonproxy; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.net.Proxy; + +import org.jsoup.Jsoup; +import org.junit.Test; + +public class JsoupProxyIntegrationTest { + + @Test + public void whenUsingHostAndPort_thenConnect() throws IOException { + Jsoup.connect("https://spring.io/blog") + .proxy("200.216.227.141", 53281) + .get(); + } + + @Test + public void whenUsingProxyClass_thenConnect() throws IOException { + Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("200.216.227.141", 53281)); + + Jsoup.connect("https://spring.io/blog") + .proxy(proxy) + .get(); + } +} From aee002eecaae940b0164a5ec44b136a00f794406 Mon Sep 17 00:00:00 2001 From: Benjamin Caure Date: Mon, 4 May 2020 22:00:03 +0200 Subject: [PATCH 155/157] rename integration to live test (#9232) --- ...ationTest.java => BsonToJsonLiveTest.java} | 284 +++++++++--------- 1 file changed, 142 insertions(+), 142 deletions(-) rename persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/{BsonToJsonIntegrationTest.java => BsonToJsonLiveTest.java} (96%) diff --git a/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonIntegrationTest.java b/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java similarity index 96% rename from persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonIntegrationTest.java rename to persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java index e382ea4ab2..4e70394069 100644 --- a/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonIntegrationTest.java +++ b/persistence-modules/java-mongodb/src/test/java/com/baeldung/bsontojson/BsonToJsonLiveTest.java @@ -1,142 +1,142 @@ -package com.baeldung.bsontojson; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.sql.Timestamp; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.TimeZone; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.bson.Document; -import org.bson.json.Converter; -import org.bson.json.JsonMode; -import org.bson.json.JsonWriterSettings; -import org.bson.json.StrictJsonWriter; -import org.bson.types.ObjectId; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.jupiter.api.AfterEach; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.baeldung.morphia.domain.Book; -import com.baeldung.morphia.domain.Publisher; -import com.mongodb.MongoClient; -import com.mongodb.client.MongoDatabase; - -import dev.morphia.Datastore; -import dev.morphia.Morphia; - -public class BsonToJsonIntegrationTest { - - private static final String DB_NAME = "library"; - private static Datastore datastore; - - @BeforeClass - public static void setUp() { - Morphia morphia = new Morphia(); - morphia.mapPackage("com.baeldung.morphia"); - datastore = morphia.createDatastore(new MongoClient(), DB_NAME); - datastore.ensureIndexes(); - - datastore.save(new Book() - .setIsbn("isbn") - .setTitle("title") - .setAuthor("author") - .setCost(3.95) - .setPublisher(new Publisher(new ObjectId("fffffffffffffffffffffffa"),"publisher")) - .setPublishDate(LocalDateTime.parse("2020-01-01T18:13:32Z", DateTimeFormatter.ISO_DATE_TIME)) - .addCompanionBooks(new Book().setIsbn("isbn2"))); - } - - @AfterClass - public static void tearDown() { - datastore.delete(datastore.createQuery(Book.class)); - } - - @Test - public void givenBsonDocument_whenUsingStandardJsonTransformation_thenJsonDateIsObjectEpochTime() { - - String json = null; - try (MongoClient mongoClient = new MongoClient()) { - MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME); - Document bson = mongoDatabase.getCollection("Books").find().first(); - json = bson.toJson(); - } - - String expectedJson = "{\"_id\": \"isbn\", " + - "\"className\": \"com.baeldung.morphia.domain.Book\", " + - "\"title\": \"title\", " + - "\"author\": \"author\", " + - "\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " + - "\"name\": \"publisher\"}, " + - "\"price\": 3.95, " + - "\"publishDate\": {\"$date\": 1577898812000}}"; - - assertNotNull(json); - - assertEquals(expectedJson, json); - } - - - @Test - public void givenBsonDocument_whenUsingRelaxedJsonTransformation_thenJsonDateIsObjectIsoDate() { - - String json = null; - try (MongoClient mongoClient = new MongoClient()) { - MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME); - Document bson = mongoDatabase.getCollection("Books").find().first(); - json = bson.toJson(JsonWriterSettings - .builder() - .outputMode(JsonMode.RELAXED) - .build()); - } - - String expectedJson = "{\"_id\": \"isbn\", " + - "\"className\": \"com.baeldung.morphia.domain.Book\", " + - "\"title\": \"title\", " + - "\"author\": \"author\", " + - "\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " + - "\"name\": \"publisher\"}, " + - "\"price\": 3.95, " + - "\"publishDate\": {\"$date\": \"2020-01-01T17:13:32Z\"}}"; - - assertNotNull(json); - - assertEquals(expectedJson, json); - } - - @Test - public void givenBsonDocument_whenUsingCustomJsonTransformation_thenJsonDateIsStringField() { - - String json = null; - try (MongoClient mongoClient = new MongoClient()) { - MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME); - Document bson = mongoDatabase.getCollection("Books").find().first(); - json = bson.toJson(JsonWriterSettings - .builder() - .dateTimeConverter(new JsonDateTimeConverter()) - .build()); - } - - String expectedJson = "{\"_id\": \"isbn\", " + - "\"className\": \"com.baeldung.morphia.domain.Book\", " + - "\"title\": \"title\", " + - "\"author\": \"author\", " + - "\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " + - "\"name\": \"publisher\"}, " + - "\"price\": 3.95, " + - "\"publishDate\": \"2020-01-01T17:13:32Z\"}"; - - assertEquals(expectedJson, json); - - } - -} +package com.baeldung.bsontojson; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; + +import java.sql.Timestamp; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.TimeZone; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.bson.Document; +import org.bson.json.Converter; +import org.bson.json.JsonMode; +import org.bson.json.JsonWriterSettings; +import org.bson.json.StrictJsonWriter; +import org.bson.types.ObjectId; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.baeldung.morphia.domain.Book; +import com.baeldung.morphia.domain.Publisher; +import com.mongodb.MongoClient; +import com.mongodb.client.MongoDatabase; + +import dev.morphia.Datastore; +import dev.morphia.Morphia; + +public class BsonToJsonLiveTest { + + private static final String DB_NAME = "library"; + private static Datastore datastore; + + @BeforeClass + public static void setUp() { + Morphia morphia = new Morphia(); + morphia.mapPackage("com.baeldung.morphia"); + datastore = morphia.createDatastore(new MongoClient(), DB_NAME); + datastore.ensureIndexes(); + + datastore.save(new Book() + .setIsbn("isbn") + .setTitle("title") + .setAuthor("author") + .setCost(3.95) + .setPublisher(new Publisher(new ObjectId("fffffffffffffffffffffffa"),"publisher")) + .setPublishDate(LocalDateTime.parse("2020-01-01T18:13:32Z", DateTimeFormatter.ISO_DATE_TIME)) + .addCompanionBooks(new Book().setIsbn("isbn2"))); + } + + @AfterClass + public static void tearDown() { + datastore.delete(datastore.createQuery(Book.class)); + } + + @Test + public void givenBsonDocument_whenUsingStandardJsonTransformation_thenJsonDateIsObjectEpochTime() { + + String json = null; + try (MongoClient mongoClient = new MongoClient()) { + MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME); + Document bson = mongoDatabase.getCollection("Books").find().first(); + json = bson.toJson(); + } + + String expectedJson = "{\"_id\": \"isbn\", " + + "\"className\": \"com.baeldung.morphia.domain.Book\", " + + "\"title\": \"title\", " + + "\"author\": \"author\", " + + "\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " + + "\"name\": \"publisher\"}, " + + "\"price\": 3.95, " + + "\"publishDate\": {\"$date\": 1577898812000}}"; + + assertNotNull(json); + + assertEquals(expectedJson, json); + } + + + @Test + public void givenBsonDocument_whenUsingRelaxedJsonTransformation_thenJsonDateIsObjectIsoDate() { + + String json = null; + try (MongoClient mongoClient = new MongoClient()) { + MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME); + Document bson = mongoDatabase.getCollection("Books").find().first(); + json = bson.toJson(JsonWriterSettings + .builder() + .outputMode(JsonMode.RELAXED) + .build()); + } + + String expectedJson = "{\"_id\": \"isbn\", " + + "\"className\": \"com.baeldung.morphia.domain.Book\", " + + "\"title\": \"title\", " + + "\"author\": \"author\", " + + "\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " + + "\"name\": \"publisher\"}, " + + "\"price\": 3.95, " + + "\"publishDate\": {\"$date\": \"2020-01-01T17:13:32Z\"}}"; + + assertNotNull(json); + + assertEquals(expectedJson, json); + } + + @Test + public void givenBsonDocument_whenUsingCustomJsonTransformation_thenJsonDateIsStringField() { + + String json = null; + try (MongoClient mongoClient = new MongoClient()) { + MongoDatabase mongoDatabase = mongoClient.getDatabase(DB_NAME); + Document bson = mongoDatabase.getCollection("Books").find().first(); + json = bson.toJson(JsonWriterSettings + .builder() + .dateTimeConverter(new JsonDateTimeConverter()) + .build()); + } + + String expectedJson = "{\"_id\": \"isbn\", " + + "\"className\": \"com.baeldung.morphia.domain.Book\", " + + "\"title\": \"title\", " + + "\"author\": \"author\", " + + "\"publisher\": {\"_id\": {\"$oid\": \"fffffffffffffffffffffffa\"}, " + + "\"name\": \"publisher\"}, " + + "\"price\": 3.95, " + + "\"publishDate\": \"2020-01-01T17:13:32Z\"}"; + + assertEquals(expectedJson, json); + + } + +} From 2d7bc17dda09aa2a524963ec5f3a3739e977fdd7 Mon Sep 17 00:00:00 2001 From: SippingCode <55111084+SippingCode@users.noreply.github.com> Date: Tue, 5 May 2020 00:08:00 +0200 Subject: [PATCH 156/157] Bael 3970 (#9236) * Manual logout with Spring Security - Basic manual logout - logout with Clear Data Site Header * Add missing annotation for controller. Change mapping URL value. * Add intergration tests for manual logouts. * BAEL-3970 - Add asserts on test. Fix tests names. Remove unused imports. * BAEL-3970 - Use PostMapping annotation. Remove unnecessary information for security configuration. * remove logout controllers * Add multiple entrypoints configurations. Create custom handlers for different logouts (basic, cookie clearing, clear-site-data). * Refactor configuration with lambda DSL. * BAEL-3970 - Remove unnecessary handler for basic logout. Fix integration tests for basic logout. --- .../SimpleSecurityConfiguration.java | 58 +++++++++---------- .../ManualLogoutIntegrationTest.java | 9 +-- 2 files changed, 29 insertions(+), 38 deletions(-) diff --git a/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java b/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java index 63394b64f2..08c2d83b99 100644 --- a/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java +++ b/spring-5-security/src/main/java/com/baeldung/manuallogout/SimpleSecurityConfiguration.java @@ -2,14 +2,12 @@ package com.baeldung.manuallogout; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.Order; -import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; + import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; -import org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler; import org.springframework.security.web.authentication.logout.HeaderWriterLogoutHandler; import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; -import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices; import org.springframework.security.web.header.writers.ClearSiteDataHeaderWriter; import javax.servlet.http.Cookie; @@ -26,13 +24,11 @@ public class SimpleSecurityConfiguration { @Override protected void configure(HttpSecurity http) throws Exception { http - .antMatcher("/basic/**") - .authorizeRequests(authz -> authz.anyRequest().permitAll()) - .logout(logout -> logout - .logoutUrl("/basic/basiclogout") - .addLogoutHandler(new SecurityContextLogoutHandler()) - .addLogoutHandler(new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY)) - ); + .antMatcher("/basic/**") + .authorizeRequests(authz -> authz.anyRequest().permitAll()) + .logout(logout -> logout + .logoutUrl("/basic/basiclogout") + ); } } @@ -42,20 +38,20 @@ public class SimpleSecurityConfiguration { @Override protected void configure(HttpSecurity http) throws Exception { http - .antMatcher("/cookies/**") - .authorizeRequests(authz -> authz.anyRequest().permitAll()) - .logout(logout -> logout - .logoutUrl("/cookies/cookielogout") - .addLogoutHandler(new SecurityContextLogoutHandler()) - .addLogoutHandler((request, response, auth) -> { - for (Cookie cookie : request.getCookies()) { - String cookieName = cookie.getName(); - Cookie cookieToDelete = new Cookie(cookieName, null); - cookieToDelete.setMaxAge(0); - response.addCookie(cookieToDelete); - } - } - )); + .antMatcher("/cookies/**") + .authorizeRequests(authz -> authz.anyRequest().permitAll()) + .logout(logout -> logout + .logoutUrl("/cookies/cookielogout") + .addLogoutHandler(new SecurityContextLogoutHandler()) + .addLogoutHandler((request, response, auth) -> { + for (Cookie cookie : request.getCookies()) { + String cookieName = cookie.getName(); + Cookie cookieToDelete = new Cookie(cookieName, null); + cookieToDelete.setMaxAge(0); + response.addCookie(cookieToDelete); + } + }) + ); } } @@ -64,17 +60,17 @@ public class SimpleSecurityConfiguration { public static class ClearSiteDataHeaderLogoutConfiguration extends WebSecurityConfigurerAdapter { private static final ClearSiteDataHeaderWriter.Directive[] SOURCE = - { CACHE, COOKIES, STORAGE, EXECUTION_CONTEXTS }; + {CACHE, COOKIES, STORAGE, EXECUTION_CONTEXTS}; @Override protected void configure(HttpSecurity http) throws Exception { http - .antMatcher("/csd/**") - .authorizeRequests(authz -> authz.anyRequest().permitAll()) - .logout(logout -> logout - .logoutUrl("/csd/csdlogout") - .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(SOURCE))) - ); + .antMatcher("/csd/**") + .authorizeRequests(authz -> authz.anyRequest().permitAll()) + .logout(logout -> logout + .logoutUrl("/csd/csdlogout") + .addLogoutHandler(new HeaderWriterLogoutHandler(new ClearSiteDataHeaderWriter(SOURCE))) + ); } } } diff --git a/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java b/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java index 09e7daf877..8909dc2620 100644 --- a/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java +++ b/spring-5-security/src/test/java/com/baeldung/manuallogout/ManualLogoutIntegrationTest.java @@ -39,15 +39,10 @@ public class ManualLogoutIntegrationTest { @Test public void givenLoggedUserWhenUserLogoutThenSessionClearedAndNecessaryCookieCleared() throws Exception { - MockHttpServletRequest requestStateAfterLogout = this.mockMvc.perform(post("/basic/basiclogout").secure(true).with(csrf())) + this.mockMvc.perform(post("/basic/basiclogout").secure(true).with(csrf())) .andExpect(status().is3xxRedirection()) .andExpect(unauthenticated()) - .andExpect(cookie().maxAge(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY, 0)) - .andReturn() - .getRequest(); - - HttpSession sessionStateAfterLogout = requestStateAfterLogout.getSession(); - assertNull(sessionStateAfterLogout.getAttribute(ATTRIBUTE_NAME)); + .andReturn(); } @WithMockUser(value = "spring") From 0cad7c5cc584059d15901f9270214e07dc533294 Mon Sep 17 00:00:00 2001 From: Eduard Ardeleanu Date: Tue, 5 May 2020 10:37:20 +0300 Subject: [PATCH 157/157] BAEL-3971: Generate DDL script in Spring (#9120) * BAEL-3971: Generate DDL script in Spring * BAEL-3971: implement review comments * BAEL-3971: fix typo * BAEL-3971: move code examples to module spring-data-jpa-5 Co-authored-by: ashleyfrieze --- persistence-modules/pom.xml | 1 + .../spring-data-jpa-5/README.md | 2 + persistence-modules/spring-data-jpa-5/pom.xml | 2 +- .../schemageneration/AccountApplication.java | 12 +++ .../schemageneration/HibernateUtil.java | 39 ++++++++++ .../schemageneration/model/Account.java | 74 +++++++++++++++++++ .../model/AccountSetting.java | 68 +++++++++++++++++ .../repository/AccountRepository.java | 8 ++ .../repository/AccountSettingRepository.java | 8 ++ .../src/main/resources/application.properties | 11 +++ .../AccountRepositoryIntegrationTest.java | 72 ++++++++++++++++++ .../resources/application-test.properties | 2 + 12 files changed, 298 insertions(+), 1 deletion(-) create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/AccountApplication.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/HibernateUtil.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/Account.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java create mode 100644 persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java create mode 100644 persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index ec7f0bcec2..78da896861 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -61,6 +61,7 @@ spring-data-jpa-2 spring-data-jpa-3 spring-data-jpa-4 + spring-data-jpa-5 spring-data-keyvalue spring-data-mongodb spring-data-neo4j diff --git a/persistence-modules/spring-data-jpa-5/README.md b/persistence-modules/spring-data-jpa-5/README.md index dd4ac22e4a..e8f83654df 100644 --- a/persistence-modules/spring-data-jpa-5/README.md +++ b/persistence-modules/spring-data-jpa-5/README.md @@ -1,4 +1,5 @@ ### Relevant Articles: + - [Spring JPA @Embedded and @EmbeddedId](TBD) ### Eclipse Config @@ -9,3 +10,4 @@ This can be ignored: - Project -> Properties -> Java Persistance -> JPA -> Error/Warnings -> Select Ignore on "No persistence xml file found in project" Or: - Eclipse -> Preferences - Validation - disable the "Build" execution of the JPA Validator + diff --git a/persistence-modules/spring-data-jpa-5/pom.xml b/persistence-modules/spring-data-jpa-5/pom.xml index 7f2c724f98..3053384559 100644 --- a/persistence-modules/spring-data-jpa-5/pom.xml +++ b/persistence-modules/spring-data-jpa-5/pom.xml @@ -33,5 +33,5 @@ h2 - + diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/AccountApplication.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/AccountApplication.java new file mode 100644 index 0000000000..547992a6c1 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/AccountApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.schemageneration; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class AccountApplication { + + public static void main(String[] args) { + SpringApplication.run(AccountApplication.class, args); + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/HibernateUtil.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/HibernateUtil.java new file mode 100644 index 0000000000..7d69d65705 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/HibernateUtil.java @@ -0,0 +1,39 @@ +package com.baeldung.schemageneration; + +import com.baeldung.schemageneration.model.Account; +import com.baeldung.schemageneration.model.AccountSetting; +import org.hibernate.boot.Metadata; +import org.hibernate.boot.MetadataSources; +import org.hibernate.boot.registry.StandardServiceRegistry; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.Environment; +import org.hibernate.tool.hbm2ddl.SchemaExport; +import org.hibernate.tool.schema.TargetType; + +import java.util.EnumSet; +import java.util.HashMap; +import java.util.Map; + +public class HibernateUtil { + + /** + * Generates database create commands for the specified entities using Hibernate native API, SchemaExport. + * Creation commands are exported into the create.sql file. + */ + public static void generateSchema() { + Map settings = new HashMap<>(); + settings.put(Environment.URL, "jdbc:h2:mem:schema"); + + StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(settings).build(); + + MetadataSources metadataSources = new MetadataSources(serviceRegistry); + metadataSources.addAnnotatedClass(Account.class); + metadataSources.addAnnotatedClass(AccountSetting.class); + Metadata metadata = metadataSources.buildMetadata(); + + SchemaExport schemaExport = new SchemaExport(); + schemaExport.setFormat(true); + schemaExport.setOutputFile("create.sql"); + schemaExport.createOnly(EnumSet.of(TargetType.SCRIPT), metadata); + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/Account.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/Account.java new file mode 100644 index 0000000000..785e275e26 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/Account.java @@ -0,0 +1,74 @@ +package com.baeldung.schemageneration.model; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import java.util.ArrayList; +import java.util.List; + +@Entity +@Table(name = "accounts") +public class Account { + + @Id + @GeneratedValue + private Long id; + + @Column(nullable = false, length = 100) + private String name; + + @Column(name = "email_address") + private String emailAddress; + + @OneToMany(mappedBy = "account", cascade = CascadeType.ALL) + private List accountSettings = new ArrayList<>(); + + public Account() { + } + + public Account(String name, String emailAddress) { + this.name = name; + this.emailAddress = emailAddress; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmailAddress() { + return emailAddress; + } + + public void setEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + } + + public List getAccountSettings() { + return accountSettings; + } + + public void setAccountSettings(List accountSettings) { + this.accountSettings = accountSettings; + } + + public void addAccountSetting(AccountSetting setting) { + this.accountSettings.add(setting); + setting.setAccount(this); + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java new file mode 100644 index 0000000000..61e43894a8 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/model/AccountSetting.java @@ -0,0 +1,68 @@ +package com.baeldung.schemageneration.model; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "account_settings") +public class AccountSetting { + + @Id + @GeneratedValue + private Long id; + + @Column(name = "name", nullable = false) + private String settingName; + + @Column(name = "value", nullable = false) + private String settingValue; + + @ManyToOne() + @JoinColumn(name ="account_id", nullable = false) + private Account account; + + public AccountSetting() { + } + + public AccountSetting(String settingName, String settingValue) { + this.settingName = settingName; + this.settingValue = settingValue; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getSettingName() { + return settingName; + } + + public void setSettingName(String settingName) { + this.settingName = settingName; + } + + public String getSettingValue() { + return settingValue; + } + + public void setSettingValue(String settingValue) { + this.settingValue = settingValue; + } + + public Account getAccount() { + return account; + } + + public void setAccount(Account account) { + this.account = account; + } +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java new file mode 100644 index 0000000000..dc57ffe6d3 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.schemageneration.repository; + +import com.baeldung.schemageneration.model.Account; +import org.springframework.data.repository.CrudRepository; + +public interface AccountRepository extends CrudRepository { + Account findByName(String name); +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java new file mode 100644 index 0000000000..c2b8ff7398 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/main/java/com/baeldung/schemageneration/repository/AccountSettingRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.schemageneration.repository; + +import com.baeldung.schemageneration.model.AccountSetting; +import org.springframework.data.repository.CrudRepository; + +public interface AccountSettingRepository extends CrudRepository { + AccountSetting findByAccountId(Long accountId); +} diff --git a/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties b/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties index dfc5e56e33..f55ad438ff 100644 --- a/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties +++ b/persistence-modules/spring-data-jpa-5/src/main/resources/application.properties @@ -1,2 +1,13 @@ + +spring.datasource.url=jdbc:h2:mem:baeldung + +# JPA-Schema-Generation +# Use below configuration to generate database schema create commands based on the entity models +# and export them into the create.sql file +#spring.jpa.properties.javax.persistence.schema-generation.scripts.action=create +#spring.jpa.properties.javax.persistence.schema-generation.scripts.create-target=create.sql +#spring.jpa.properties.javax.persistence.schema-generation.scripts.create-source=metadata +#spring.jpa.properties.hibernate.format_sql=true + spring.jpa.show-sql=true diff --git a/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java b/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java new file mode 100644 index 0000000000..86a7671fe4 --- /dev/null +++ b/persistence-modules/spring-data-jpa-5/src/test/java/com/baeldung/schemageneration/AccountRepositoryIntegrationTest.java @@ -0,0 +1,72 @@ +package com.baeldung.schemageneration; + +import com.baeldung.schemageneration.model.Account; +import com.baeldung.schemageneration.model.AccountSetting; +import com.baeldung.schemageneration.repository.AccountRepository; +import com.baeldung.schemageneration.repository.AccountSettingRepository; +import org.junit.After; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +@RunWith(SpringRunner.class) +@SpringBootTest(classes = AccountApplication.class) +public class AccountRepositoryIntegrationTest { + + private static final String USER_NAME = "Eduard"; + private static final String USER_EMAIL_ADDRESS = "eduard@gmx.com"; + private static final String ACCOUNT_SETTING_NAME = "Timezone"; + private static final String ACCOUNT_SETTING_VALUE = "UTC+02"; + + @Autowired + private AccountRepository accountRepository; + + @Autowired + private AccountSettingRepository accountSettingRepository; + + @After + public void tearDown() { + accountRepository.deleteAll(); + } + + @Test + public void givenNewAccount_whenSave_thenSuccess() { + Account account = new Account(USER_NAME, USER_EMAIL_ADDRESS); + accountRepository.save(account); + + assertEquals(1, accountRepository.count()); + } + + @Test + public void givenSavedAccount_whenFindByName_thenFound() { + Account account = new Account(USER_NAME, USER_EMAIL_ADDRESS); + accountRepository.save(account); + + Account accountFound = accountRepository.findByName(USER_NAME); + + assertNotNull(accountFound); + assertEquals(USER_NAME, accountFound.getName()); + assertEquals(USER_EMAIL_ADDRESS, accountFound.getEmailAddress()); + } + + @Test + public void givenSavedAccount_whenAccountSettingIsAdded_thenPersisted() { + Account account = new Account(USER_NAME, USER_EMAIL_ADDRESS); + account.addAccountSetting(new AccountSetting(ACCOUNT_SETTING_NAME, ACCOUNT_SETTING_VALUE)); + accountRepository.save(account); + + Account accountFound = accountRepository.findByName(USER_NAME); + assertNotNull(accountFound); + AccountSetting accountSetting = accountSettingRepository.findByAccountId(accountFound.getId()); + + assertNotNull(accountSetting); + assertEquals(ACCOUNT_SETTING_NAME, accountSetting.getSettingName()); + assertEquals(ACCOUNT_SETTING_VALUE, accountSetting.getSettingValue()); + } + +} diff --git a/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties b/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties index 207de2e8ec..e3d39fe1e2 100644 --- a/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties +++ b/persistence-modules/spring-data-jpa-5/src/test/resources/application-test.properties @@ -1 +1,3 @@ spring.jpa.hibernate.ddl-auto=update +spring.datasource.url=jdbc:h2:mem:baeldung +