diff --git a/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java b/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java index 26c5c9a486..723a2f5a80 100644 --- a/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java +++ b/algorithms-sorting/src/main/java/com/baeldung/algorithms/radixsort/RadixSort.java @@ -29,7 +29,7 @@ public class RadixSort { frequency[digit]++; } - for (int i = 1; i < 10; i++) { + for (int i = 1; i < range; i++) { frequency[i] += frequency[i - 1]; } diff --git a/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java b/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java index f1b50f5c99..0f6c751ade 100644 --- a/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java +++ b/algorithms-sorting/src/test/java/com/baeldung/algorithms/radixsort/RadixSortUnitTest.java @@ -7,7 +7,7 @@ import org.junit.Test; public class RadixSortUnitTest { @Test - public void givenUnsortedArrayWhenRadixSortThenArraySorted() { + public void givenUnsortedArray_whenRadixSort_thenArraySorted() { int[] numbers = { 387, 468, 134, 123, 68, 221, 769, 37, 7 }; RadixSort.sort(numbers); int[] numbersSorted = { 7, 37, 68, 123, 134, 221, 387, 468, 769 }; diff --git a/apache-shiro/pom.xml b/apache-shiro/pom.xml index 644d70b30a..7f0d07589c 100644 --- a/apache-shiro/pom.xml +++ b/apache-shiro/pom.xml @@ -38,17 +38,6 @@ jcl-over-slf4j runtime - - org.slf4j - slf4j-log4j12 - runtime - - - log4j - log4j - ${log4j-version} - runtime - @@ -56,4 +45,4 @@ 1.2.17 - \ No newline at end of file + diff --git a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java index e6e72b2579..2713786d71 100644 --- a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java +++ b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java @@ -18,22 +18,17 @@ import javax.servlet.http.HttpServletRequest; @Controller public class ShiroSpringController { - - @GetMapping("/") public String index() { return "index"; } - @RequestMapping( value = "/login", method = {RequestMethod.GET, RequestMethod.POST}) public String login(HttpServletRequest req, UserCredentials cred, RedirectAttributes attr) { if(req.getMethod().equals(RequestMethod.GET.toString())) { return "login"; - } - else { - + } else { Subject subject = SecurityUtils.getSubject(); if(!subject.isAuthenticated()) { diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java new file mode 100644 index 0000000000..a373122d6c --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/Main.java @@ -0,0 +1,68 @@ +package com.baeldung.shiro.permissions.custom; + +import com.baeldung.MyCustomRealm; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.config.Ini; +import org.apache.shiro.mgt.DefaultSecurityManager; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.realm.Realm; +import org.apache.shiro.realm.text.IniRealm; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Main { + + private static final transient Logger log = LoggerFactory.getLogger(Main.class); + + public static void main(String[] args) { + + IniRealm realm = new IniRealm(); + Ini ini = Ini.fromResourcePath(Main.class.getResource("/com/baeldung/shiro/permissions/custom/shiro.ini").getPath()); + realm.setIni(ini); + realm.setPermissionResolver(new PathPermissionResolver()); + realm.init(); + SecurityManager securityManager = new DefaultSecurityManager(realm); + + SecurityUtils.setSecurityManager(securityManager); + Subject currentUser = SecurityUtils.getSubject(); + + if (!currentUser.isAuthenticated()) { + UsernamePasswordToken token = new UsernamePasswordToken("paul.reader", "password4"); + token.setRememberMe(true); + try { + currentUser.login(token); + } catch (UnknownAccountException uae) { + log.error("Username Not Found!", uae); + } catch (IncorrectCredentialsException ice) { + log.error("Invalid Credentials!", ice); + } catch (LockedAccountException lae) { + log.error("Your Account is Locked!", lae); + } catch (AuthenticationException ae) { + log.error("Unexpected Error!", ae); + } + } + + log.info("User [" + currentUser.getPrincipal() + "] logged in successfully."); + + if (currentUser.hasRole("admin")) { + log.info("Welcome Admin"); + } else if(currentUser.hasRole("editor")) { + log.info("Welcome, Editor!"); + } else if(currentUser.hasRole("author")) { + log.info("Welcome, Author"); + } else { + log.info("Welcome, Guest"); + } + + if(currentUser.isPermitted("/articles/drafts/new-article")) { + log.info("You can access articles"); + } else { + log.info("You cannot access articles!"); + } + currentUser.logout(); + } + +} diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java new file mode 100644 index 0000000000..f7dfbda06a --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermission.java @@ -0,0 +1,22 @@ +package com.baeldung.shiro.permissions.custom; + +import org.apache.shiro.authz.Permission; + +import java.nio.file.Path; + +public class PathPermission implements Permission { + + private final Path path; + + public PathPermission(Path path) { + this.path = path; + } + + @Override + public boolean implies(Permission p) { + if(p instanceof PathPermission) { + return ((PathPermission) p).path.startsWith(path); + } + return false; + } +} diff --git a/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java new file mode 100644 index 0000000000..4b60d2fbd4 --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/shiro/permissions/custom/PathPermissionResolver.java @@ -0,0 +1,13 @@ +package com.baeldung.shiro.permissions.custom; + +import org.apache.shiro.authz.Permission; +import org.apache.shiro.authz.permission.PermissionResolver; + +import java.nio.file.Paths; + +public class PathPermissionResolver implements PermissionResolver { + @Override + public Permission resolvePermission(String permissionString) { + return new PathPermission(Paths.get(permissionString)); + } +} diff --git a/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini b/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini new file mode 100644 index 0000000000..732ff8b60d --- /dev/null +++ b/apache-shiro/src/main/resources/com/baeldung/shiro/permissions/custom/shiro.ini @@ -0,0 +1,10 @@ +[users] +jane.admin = password, admin +john.editor = password2, editor +zoe.author = password3, author +paul.reader = password4 + +[roles] +admin = / +editor = /articles +author = /articles/drafts diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java index b484eecef7..25f39e9a13 100644 --- a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/java/listInitialization/ListInitializationUnitTest.java @@ -42,7 +42,7 @@ public class ListInitializationUnitTest { } @Test - public void givenArrayAsList_whenCreated_thenShareReference() { + public void givenArraysAsList_whenCreated_thenShareReference() { String[] array = { "foo", "bar" }; List list = Arrays.asList(array); array[0] = "baz"; diff --git a/core-java-modules/core-java-concurrency-2/.gitignore b/core-java-modules/core-java-concurrency-2/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/.gitignore @@ -0,0 +1,26 @@ +*.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-concurrency-2/README.md b/core-java-modules/core-java-concurrency-2/README.md new file mode 100644 index 0000000000..749d174968 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/README.md @@ -0,0 +1,7 @@ +========= + +## Core Java Concurrency 2 Examples + +### Relevant Articles: +- [Using a Mutex Object in Java](https://www.baeldung.com/java-mutex) + diff --git a/core-java-modules/core-java-concurrency-2/pom.xml b/core-java-modules/core-java-concurrency-2/pom.xml new file mode 100644 index 0000000000..6b179a29c7 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/pom.xml @@ -0,0 +1,27 @@ + + 4.0.0 + com.baeldung + core-java-concurrency-2 + 0.1.0-SNAPSHOT + core-java-concurrency-2 + jar + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../../parent-java + + + + core-java-concurrency-2 + + + src/main/resources + true + + + + + diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGenerator.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingMonitor.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingReentrantLock.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSemaphore.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedBlock.java diff --git a/core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java b/core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java rename to core-java-modules/core-java-concurrency-2/src/main/java/com/baeldung/concurrent/mutex/SequenceGeneratorUsingSynchronizedMethod.java diff --git a/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml b/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml new file mode 100644 index 0000000000..56af2d397e --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + %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-basic/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java b/core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java similarity index 100% rename from core-java-modules/core-java-concurrency-basic/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java rename to core-java-modules/core-java-concurrency-2/src/test/java/com/baeldung/concurrent/mutex/MutexUnitTest.java diff --git a/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore b/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore new file mode 100644 index 0000000000..83c05e60c8 --- /dev/null +++ b/core-java-modules/core-java-concurrency-2/src/test/resources/.gitignore @@ -0,0 +1,13 @@ +*.class + +#folders# +/target +/neoDb* +/data +/src/main/webapp/WEB-INF/classes +*/META-INF/* + +# Packaged files # +*.jar +*.war +*.ear \ No newline at end of file diff --git a/core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java b/core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java similarity index 99% rename from core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java rename to core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java index e781489808..b837c6b4dd 100644 --- a/core-java-modules/core-java-io/src/test/java/com/baeldung/file/FileOperationsManualTest.java +++ b/core-java-modules/core-java-io/src/test/java/com/baeldung/readfile/FileOperationsManualTest.java @@ -1,4 +1,4 @@ -package com.baeldung.file; +package com.baeldung.readfile; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; diff --git a/core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java new file mode 100644 index 0000000000..8bca55c5f0 --- /dev/null +++ b/core-java-modules/core-java-jvm/src/main/java/com/baeldung/systemgc/DemoApplication.java @@ -0,0 +1,33 @@ +package com.baeldung.systemgc; + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +import static java.util.UUID.randomUUID; + +public class DemoApplication { + + private static final Map cache = new HashMap(); + + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + + while (scanner.hasNext()) { + final String next = scanner.next(); + if ("fill".equals(next)) { + for (int i = 0; i < 1000000; i++) { + cache.put(randomUUID().toString(), randomUUID().toString()); + } + } else if ("invalidate".equals(next)) { + cache.clear(); + } else if ("gc".equals(next)) { + System.gc(); + } else if ("exit".equals(next)) { + System.exit(0); + } else { + System.out.println("unknown"); + } + } + } +} \ 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 index 72c3c6742b..7fee77d4bb 100644 --- a/core-java-modules/core-java-lang-oop-2/README.md +++ b/core-java-modules/core-java-lang-oop-2/README.md @@ -7,3 +7,9 @@ - [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) +- [Java ‘private’ Access Modifier](https://www.baeldung.com/java-private-keyword) +- [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](http://www.baeldung.com/java-immutable-object) +- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) +- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) diff --git a/core-java-modules/core-java-lang-oop-2/pom.xml b/core-java-modules/core-java-lang-oop-2/pom.xml index b7bd72372b..d27df147b7 100644 --- a/core-java-modules/core-java-lang-oop-2/pom.xml +++ b/core-java-modules/core-java-lang-oop-2/pom.xml @@ -15,16 +15,26 @@ - - com.h2database - h2 - ${h2.version} - test - + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + nl.jqno.equalsverifier + equalsverifier + ${equalsverifier.version} + test + 1.4.199 + + 3.10.0 + 3.0.3 diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java new file mode 100644 index 0000000000..43bbf0dd62 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/basicmethods/PersonName.java @@ -0,0 +1,37 @@ +package com.baeldung.basicmethods; + +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; + +public class PersonName { + + public String getName(String firstName, String lastName) throws RuntimeException { + return firstName + " " + lastName; + } + + public String getName(String firstName, String middleName, String lastName) { + if (!middleName.equals("")) { + return firstName + " " + lastName; + } + return firstName + " " + middleName + " " + lastName; + } + + public void printFullName(String firstName, String lastName) { + System.out.println(firstName + " " + lastName); + } + + public void writeName(String name) throws IOException { + PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt")); + out.println("Name: " + name); + out.close(); + } + + public static String getNameStatic(String firstName, String lastName) { + return firstName + " " + lastName; + } + + public static void callToStaticMethod() { + System.out.println("Name is: " + PersonName.getNameStatic("Alan", "Turing")); + } +} diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/BankAccount.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/BankAccount.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/BankAccount.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/Transaction.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/constructors/Transaction.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/constructors/Transaction.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Money.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Money.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Money.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Team.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Team.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Team.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Voucher.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/Voucher.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/Voucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongTeam.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongTeam.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongTeam.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/WrongVoucher.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/ComplexClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/PrimitiveClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Shape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Shape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Shape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Square.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/equalshashcode/entities/Square.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/equalshashcode/entities/Square.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Currency.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Currency.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Currency.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Money.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/immutableobjects/Money.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/immutableobjects/Money.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java similarity index 67% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java index 7761fdce56..fc6db9411c 100644 --- a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/application/Application.java +++ b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/application/Application.java @@ -1,12 +1,6 @@ package com.baeldung.inheritancecomposition.application; -import com.baeldung.inheritancecomposition.model.Actress; -import com.baeldung.inheritancecomposition.model.Computer; -import com.baeldung.inheritancecomposition.model.StandardMemory; -import com.baeldung.inheritancecomposition.model.Person; -import com.baeldung.inheritancecomposition.model.StandardProcessor; -import com.baeldung.inheritancecomposition.model.StandardSoundCard; -import com.baeldung.inheritancecomposition.model.Waitress; +import com.baeldung.inheritancecomposition.model.*; public class Application { diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Actress.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Computer.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Memory.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Person.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Person.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Person.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Processor.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/SoundCard.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardMemory.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardProcessor.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/StandardSoundCard.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/inheritancecomposition/model/Waitress.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/DeletableShape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/DeletableShape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/DeletableShape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Rectangle.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Rectangle.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Rectangle.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Shape.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/Shape.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/Shape.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/ShapeDao.java b/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/markerinterface/ShapeDao.java rename to core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/markerinterface/ShapeDao.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java index 66c8520e34..274fe77764 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/constructors/ConstructorUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.constructors; -import com.google.common.collect.Comparators; import org.junit.Test; import java.time.LocalDateTime; import java.time.Month; -import java.util.ArrayList; import java.util.logging.Logger; import static org.assertj.core.api.Assertions.*; diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java index 60584fdb53..8fc99e0e81 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/MoneyUnitTest.java @@ -1,10 +1,10 @@ package com.baeldung.equalshashcode; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; - import org.junit.Test; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + public class MoneyUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java index a2de408796..7dfc6d47a3 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/TeamUnitTest.java @@ -1,14 +1,13 @@ package com.baeldung.equalshashcode; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import nl.jqno.equalsverifier.EqualsVerifier; +import org.junit.Test; import java.util.HashMap; import java.util.Map; -import org.junit.Test; - -import nl.jqno.equalsverifier.EqualsVerifier; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; public class TeamUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java index 0cb4ace0ab..05b1e3e0b9 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/ComplexClassUnitTest.java @@ -1,13 +1,11 @@ package com.baeldung.equalshashcode.entities; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.ComplexClass; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; public class ComplexClassUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/PrimitiveClassUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java similarity index 89% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java index a25e8bd486..7722ee7605 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/equalshashcode/entities/SquareClassUnitTest.java @@ -1,11 +1,9 @@ package com.baeldung.equalshashcode.entities; -import java.awt.Color; - import org.junit.Assert; import org.junit.Test; -import com.baeldung.equalshashcode.entities.Square; +import java.awt.*; public class SquareClassUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java index 01dfeac050..7b917023ee 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/immutableobjects/ImmutableObjectsUnitTest.java @@ -1,11 +1,11 @@ package com.baeldung.immutableobjects; -import static org.junit.Assert.assertEquals; +import org.junit.Test; import java.util.ArrayList; import java.util.List; -import org.junit.Test; +import static org.junit.Assert.assertEquals; public class ImmutableObjectsUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java similarity index 95% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java index 6dbf2302ae..e174ceceae 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/ActressUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/ActressUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Actress; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class ActressUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java similarity index 61% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java index 987af047a5..7699ecb4a7 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/CompositionUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/CompositionUnitTest.java @@ -1,15 +1,12 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; -import com.baeldung.inheritancecomposition.model.Computer; -import com.baeldung.inheritancecomposition.model.Memory; -import com.baeldung.inheritancecomposition.model.Processor; -import com.baeldung.inheritancecomposition.model.StandardMemory; -import com.baeldung.inheritancecomposition.model.StandardProcessor; -import com.baeldung.inheritancecomposition.model.StandardSoundCard; -import java.util.Optional; -import static org.assertj.core.api.Assertions.assertThat; +import com.baeldung.inheritancecomposition.model.*; import org.junit.Test; +import java.util.Optional; + +import static org.assertj.core.api.Assertions.assertThat; + public class CompositionUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java similarity index 93% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java index 3ddbc19607..515e05528b 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/InheritanceUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/InheritanceUnitTest.java @@ -1,11 +1,12 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Actress; import com.baeldung.inheritancecomposition.model.Person; import com.baeldung.inheritancecomposition.model.Waitress; -import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; + public class InheritanceUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java similarity index 94% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java index 313070b274..ea0b87f6e6 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/PersonUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/PersonUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Person; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class PersonUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java similarity index 96% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java index c23fc4d403..816868be13 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/inheritancecomposition/test/WaitressUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/inheritancecomposition/WaitressUnitTest.java @@ -1,8 +1,9 @@ -package com.baeldung.inheritancecomposition.test; +package com.baeldung.inheritancecomposition; import com.baeldung.inheritancecomposition.model.Waitress; import org.junit.BeforeClass; import org.junit.Test; + import static org.assertj.core.api.Assertions.*; public class WaitressUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java rename to core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java index 81cd51ce51..64e5d8cdb1 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java +++ b/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/markerinterface/MarkerInterfaceUnitTest.java @@ -1,9 +1,9 @@ package com.baeldung.markerinterface; -import static org.junit.jupiter.api.Assertions.assertEquals; - import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; + public class MarkerInterfaceUnitTest { @Test diff --git a/core-java-modules/core-java-lang-oop-3/.gitignore b/core-java-modules/core-java-lang-oop-3/.gitignore new file mode 100644 index 0000000000..3de4cc647e --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/.gitignore @@ -0,0 +1,26 @@ +*.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-3/README.md b/core-java-modules/core-java-lang-oop-3/README.md new file mode 100644 index 0000000000..57df2c1769 --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/README.md @@ -0,0 +1,11 @@ +========= + +## Core Java Lang OOP 3 Cookbooks and Examples + +### Relevant Articles: +- [Pass-By-Value as a Parameter Passing Mechanism in Java](http://www.baeldung.com/java-pass-by-value-or-pass-by-reference) +- [Access Modifiers in Java](http://www.baeldung.com/java-access-modifiers) +- [Guide to the super Java Keyword](http://www.baeldung.com/java-super) +- [Guide to the this Java Keyword](http://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) \ No newline at end of file diff --git a/core-java-modules/core-java-lang-oop-3/pom.xml b/core-java-modules/core-java-lang-oop-3/pom.xml new file mode 100644 index 0000000000..29807b5bef --- /dev/null +++ b/core-java-modules/core-java-lang-oop-3/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + 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 + + + + + com.h2database + h2 + ${h2.version} + test + + + + diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/Public.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/Public.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/Public.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SubClass.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SubClass.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SubClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/SuperPublic.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherPublic.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSubClass.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/another/AnotherSuperPublic.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/ListOfThree.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/SpecialCharacters.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/accessmodifiers/publicmodifier/Student.java diff --git a/core-java-modules/core-java-lang-oop/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 similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/KeywordDemo.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/KeywordDemo.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperBase.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/superkeyword/SuperSub.java diff --git a/core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/main/java/com/baeldung/keyword/thiskeyword/KeywordUnitTest.java rename to core-java-modules/core-java-lang-oop-3/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/relationships/aggregation/Car.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Car.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Car.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/CarWithStaticInnerWheel.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Wheel.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/aggregation/Wheel.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/aggregation/Wheel.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Child.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Child.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Child.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Mother.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/association/Mother.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/association/Mother.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/Building.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/Building.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/Building.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/composition/BuildingWithDefinitionRoomInMethod.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Department.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Department.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Department.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Professor.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/Professor.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/Professor.java diff --git a/core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/University.java b/core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java similarity index 100% rename from core-java-modules/core-java-lang-oop-2/src/main/java/com/baeldung/relationships/university/University.java rename to core-java-modules/core-java-lang-oop-3/src/main/java/com/baeldung/relationships/university/University.java diff --git a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java index a2d891ac93..ed8fb4f45a 100644 --- a/core-java-modules/core-java-lang-oop-2/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java +++ b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/accessmodifiers/PublicAccessModifierUnitTest.java @@ -1,14 +1,11 @@ package com.baeldung.accessmodifiers; +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; -import com.baeldung.accessmodifiers.publicmodifier.ListOfThree; -import com.baeldung.accessmodifiers.publicmodifier.Student; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertEquals; import java.math.BigDecimal; import java.sql.Connection; import java.sql.DriverManager; @@ -17,6 +14,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; + @TestInstance(Lifecycle.PER_CLASS) public class PublicAccessModifierUnitTest { diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java similarity index 99% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java index 62f891d11b..bf0d12936d 100644 --- a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java +++ b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/NonPrimitivesUnitTest.java @@ -27,7 +27,7 @@ public class NonPrimitivesUnitTest { b1.num++; } } - + class Foo { public int num; diff --git a/core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java b/core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java similarity index 100% rename from core-java-modules/core-java-lang-oop/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java rename to core-java-modules/core-java-lang-oop-3/src/test/java/com/baeldung/parameterpassing/PrimitivesUnitTest.java diff --git a/core-java-modules/core-java-lang-oop/README.md b/core-java-modules/core-java-lang-oop/README.md index c9ee9a9e94..1751da8b3e 100644 --- a/core-java-modules/core-java-lang-oop/README.md +++ b/core-java-modules/core-java-lang-oop/README.md @@ -12,13 +12,4 @@ - [Object Type Casting in Java](http://www.baeldung.com/java-type-casting) - [The “final” Keyword in Java](http://www.baeldung.com/java-final) - [Type Erasure in Java Explained](http://www.baeldung.com/java-type-erasure) -- [Pass-By-Value as a Parameter Passing Mechanism in Java](http://www.baeldung.com/java-pass-by-value-or-pass-by-reference) - [Variable and Method Hiding in Java](http://www.baeldung.com/java-variable-method-hiding) -- [Access Modifiers in Java](http://www.baeldung.com/java-access-modifiers) -- [Guide to the super Java Keyword](http://www.baeldung.com/java-super) -- [Guide to the this Java Keyword](http://www.baeldung.com/java-this) -- [Immutable Objects in Java](http://www.baeldung.com/java-immutable-object) -- [Inheritance and Composition (Is-a vs Has-a relationship) in Java](http://www.baeldung.com/java-inheritance-composition) -- [A Guide to Constructors in Java](https://www.baeldung.com/java-constructors) -- [Java equals() and hashCode() Contracts](https://www.baeldung.com/java-equals-hashcode-contracts) -- [Marker Interfaces in Java](https://www.baeldung.com/java-marker-interfaces) diff --git a/core-java-modules/core-java-lang-oop/pom.xml b/core-java-modules/core-java-lang-oop/pom.xml index 46003b132b..d86347b51f 100644 --- a/core-java-modules/core-java-lang-oop/pom.xml +++ b/core-java-modules/core-java-lang-oop/pom.xml @@ -56,12 +56,6 @@ ${assertj-core.version} test - - nl.jqno.equalsverifier - equalsverifier - ${equalsverifier.version} - test - @@ -78,7 +72,6 @@ 2.8.2 3.10.0 - 3.0.3 diff --git a/core-java-modules/core-java-networking-2/README.md b/core-java-modules/core-java-networking-2/README.md index 2bc648449a..62dec41356 100644 --- a/core-java-modules/core-java-networking-2/README.md +++ b/core-java-modules/core-java-networking-2/README.md @@ -3,3 +3,5 @@ - [Checking if a URL Exists in Java](https://www.baeldung.com/java-check-url-exists) - [Making a JSON POST Request With HttpURLConnection](https://www.baeldung.com/httpurlconnection-post) - [Using Curl in Java](https://www.baeldung.com/java-curl) +- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) +- [Sending Emails with Java](http://www.baeldung.com/java-email) diff --git a/core-java-modules/core-java-networking-2/pom.xml b/core-java-modules/core-java-networking-2/pom.xml index 8a26f6ab9f..1e46a9ef7f 100644 --- a/core-java-modules/core-java-networking-2/pom.xml +++ b/core-java-modules/core-java-networking-2/pom.xml @@ -12,9 +12,23 @@ + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + javax.mail + mail + ${javax.mail.version} + core-java-networking-2 - + + + + 1.5.0-b01 + diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java similarity index 100% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/FullResponseBuilder.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java similarity index 100% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/httprequest/ParameterStringBuilder.java diff --git a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java similarity index 97% rename from core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java rename to core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java index e775b9f708..bd2024fdfa 100644 --- a/core-java-modules/core-java-networking/src/main/java/com/baeldung/mail/EmailService.java +++ b/core-java-modules/core-java-networking-2/src/main/java/com/baeldung/mail/EmailService.java @@ -1,15 +1,12 @@ package com.baeldung.mail; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.File; -import java.util.Properties; import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; +import java.io.File; +import java.util.Properties; public class EmailService { diff --git a/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java similarity index 96% rename from core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java rename to core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java index 77bf9bc8db..41e0f2d6af 100644 --- a/core-java-modules/core-java-networking/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java +++ b/core-java-modules/core-java-networking-2/src/test/java/com/baeldung/httprequest/HttpRequestLiveTest.java @@ -3,14 +3,7 @@ package com.baeldung.httprequest; import org.apache.commons.lang3.StringUtils; import org.junit.Test; -import com.baeldung.httprequest.FullResponseBuilder; -import com.baeldung.httprequest.ParameterStringBuilder; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; +import java.io.*; import java.net.CookieManager; import java.net.HttpCookie; import java.net.HttpURLConnection; diff --git a/core-java-modules/core-java-networking/README.md b/core-java-modules/core-java-networking/README.md index 2341520df7..33fc3684a3 100644 --- a/core-java-modules/core-java-networking/README.md +++ b/core-java-modules/core-java-networking/README.md @@ -7,12 +7,10 @@ - [Connecting Through Proxy Servers in Core Java](https://www.baeldung.com/java-connect-via-proxy-server) - [Broadcasting and Multicasting in Java](http://www.baeldung.com/java-broadcast-multicast) - [A Guide To UDP In Java](http://www.baeldung.com/udp-in-java) -- [Sending Emails with Java](http://www.baeldung.com/java-email) - [A Guide To HTTP Cookies In Java](http://www.baeldung.com/cookies-java) - [A Guide to the Java URL](http://www.baeldung.com/java-url) - [Working with Network Interfaces in Java](http://www.baeldung.com/java-network-interfaces) - [A Guide to Java Sockets](http://www.baeldung.com/a-guide-to-java-sockets) - [Guide to Java URL Encoding/Decoding](http://www.baeldung.com/java-url-encoding-decoding) -- [Do a Simple HTTP Request in Java](http://www.baeldung.com/java-http-request) - [Difference between URL and URI](http://www.baeldung.com/java-url-vs-uri) - [Read an InputStream using the Java Server Socket](https://www.baeldung.com/java-inputstream-server-socket) diff --git a/core-java-modules/core-java-networking/pom.xml b/core-java-modules/core-java-networking/pom.xml index e2ee7b2fcc..b5071bf7df 100644 --- a/core-java-modules/core-java-networking/pom.xml +++ b/core-java-modules/core-java-networking/pom.xml @@ -14,11 +14,6 @@ - - javax.mail - mail - ${javax.mail.version} - commons-io commons-io @@ -29,11 +24,6 @@ spring-web ${springframework.spring-web.version} - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - @@ -41,7 +31,6 @@ - 1.5.0-b01 4.3.4.RELEASE diff --git a/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java b/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java new file mode 100644 index 0000000000..b2469ac984 --- /dev/null +++ b/core-java-modules/core-java/src/main/java/com/baeldung/jsonposturlconnection/PostJSONWithHttpURLConnection.java @@ -0,0 +1,46 @@ +package com.baeldung.jsonposturlconnection; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; + +public class PostJSONWithHttpURLConnection { + + public static void main (String []args) throws IOException{ + //Change the URL with any other publicly accessible POST resource, which accepts JSON request body + URL url = new URL ("https://reqres.in/api/users"); + + HttpURLConnection con = (HttpURLConnection)url.openConnection(); + con.setRequestMethod("POST"); + + con.setRequestProperty("Content-Type", "application/json; utf-8"); + con.setRequestProperty("Accept", "application/json"); + + con.setDoOutput(true); + + //JSON String need to be constructed for the specific resource. + //We may construct complex JSON using any third-party JSON libraries such as jackson or org.json + String jsonInputString = "{\"name\": \"Upendra\", \"job\": \"Programmer\"}"; + + try(OutputStream os = con.getOutputStream()){ + byte[] input = jsonInputString.getBytes("utf-8"); + os.write(input, 0, input.length); + } + + int code = con.getResponseCode(); + System.out.println(code); + + try(BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "utf-8"))){ + StringBuilder response = new StringBuilder(); + String responseLine = null; + while ((responseLine = br.readLine()) != null) { + response.append(responseLine.trim()); + } + System.out.println(response.toString()); + } + } + +} diff --git a/guava-io/README.md b/guava-io/README.md new file mode 100644 index 0000000000..df7775a36d --- /dev/null +++ b/guava-io/README.md @@ -0,0 +1,4 @@ +### Relevant Articles: + +- [Using Guava CountingOutputStream](http://www.baeldung.com/guava-counting-outputstream) +- [Guava – Write to File, Read from File](http://www.baeldung.com/guava-write-to-file-read-from-file) diff --git a/guava-io/pom.xml b/guava-io/pom.xml new file mode 100644 index 0000000000..2a66baba80 --- /dev/null +++ b/guava-io/pom.xml @@ -0,0 +1,26 @@ + + 4.0.0 + com.baeldung + guava-io + 0.1.0-SNAPSHOT + guava-io + + + com.baeldung + parent-java + 0.0.1-SNAPSHOT + ../parent-java + + + + guava-io + + + src/main/resources + true + + + + + \ No newline at end of file diff --git a/guava/src/test/java/org/baeldung/guava/GuavaCountingOutputStreamUnitTest.java b/guava-io/src/main/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/guava/GuavaCountingOutputStreamUnitTest.java rename to guava-io/src/main/test/java/com/baeldung/guava/GuavaCountingOutputStreamUnitTest.java diff --git a/guava/src/test/java/org/baeldung/guava/GuavaIOUnitTest.java b/guava-io/src/main/test/java/com/baeldung/guava/GuavaIOUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/guava/GuavaIOUnitTest.java rename to guava-io/src/main/test/java/com/baeldung/guava/GuavaIOUnitTest.java diff --git a/guava/README.md b/guava/README.md index 60754dbe57..d3bbbf6de5 100644 --- a/guava/README.md +++ b/guava/README.md @@ -1,11 +1,8 @@ -========= - -## Guava and Hamcrest Cookbooks and Examples +## Guava Examples ### Relevant Articles: - [Guava Functional Cookbook](http://www.baeldung.com/guava-functions-predicates) -- [Guava – Write to File, Read from File](http://www.baeldung.com/guava-write-to-file-read-from-file) - [Guide to Guava’s Ordering](http://www.baeldung.com/guava-ordering) - [Guide to Guava’s PreConditions](http://www.baeldung.com/guava-preconditions) - [Introduction to Guava CacheLoader](http://www.baeldung.com/guava-cacheloader) @@ -14,7 +11,5 @@ - [Guide to Guava’s Reflection Utilities](http://www.baeldung.com/guava-reflection) - [Guide to Mathematical Utilities in Guava](http://www.baeldung.com/guava-math) - [Bloom Filter in Java using Guava](http://www.baeldung.com/guava-bloom-filter) -- [Using Guava CountingOutputStream](http://www.baeldung.com/guava-counting-outputstream) -- [Hamcrest Text Matchers](http://www.baeldung.com/hamcrest-text-matchers) - [Quick Guide to the Guava RateLimiter](http://www.baeldung.com/guava-rate-limiter) -- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) + diff --git a/guava/pom.xml b/guava/pom.xml index 34eb7eafa6..3a19901a02 100644 --- a/guava/pom.xml +++ b/guava/pom.xml @@ -27,13 +27,7 @@ test - - - org.hamcrest - java-hamcrest - ${java-hamcrest.version} - test - + @@ -52,7 +46,6 @@ 3.6.1 - 2.0.0.0 \ No newline at end of file diff --git a/jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java b/jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java similarity index 99% rename from jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java rename to jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java index cd2c2925d6..dd0fe8dc56 100644 --- a/jackson/src/test/java/com/baeldung/jackson/test/JacksonExceptionsUnitTest.java +++ b/jackson/src/test/java/com/baeldung/jackson/exception/test/JacksonExceptionsUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.jackson.test; +package com.baeldung.jackson.exception.test; import static org.hamcrest.Matchers.containsString; import static org.junit.Assert.assertEquals; diff --git a/java-math/README.md b/java-math/README.md index 244417d1a5..b0921e55ae 100644 --- a/java-math/README.md +++ b/java-math/README.md @@ -9,3 +9,4 @@ - [Calculate Percentage in Java](https://www.baeldung.com/java-calculate-percentage) - [Convert Latitude and Longitude to a 2D Point in Java](https://www.baeldung.com/java-convert-latitude-longitude) - [Debugging with Eclipse](https://www.baeldung.com/eclipse-debugging) +- [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) diff --git a/java-numbers-2/README.md b/java-numbers-2/README.md index 52ffc822b9..1d2919aa63 100644 --- a/java-numbers-2/README.md +++ b/java-numbers-2/README.md @@ -1,2 +1,10 @@ ## Relevant Articles - [Lossy Conversion in Java](https://www.baeldung.com/java-lossy-conversion) +- [A Guide to the Java Math Class](https://www.baeldung.com/java-lang-math) +- [Calculate the Area of a Circle in Java](https://www.baeldung.com/java-calculate-circle-area) +- [NaN in Java](http://www.baeldung.com/java-not-a-number) +- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) +- [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) +- [Check If a Number Is Prime in Java](http://www.baeldung.com/java-prime-numbers) +- [Binary Numbers in Java](https://www.baeldung.com/java-binary-numbers) +- [Finding the Least Common Multiple in Java](https://www.baeldung.com/java-least-common-multiple) diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BigIntegerPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/BruteForcePrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/OptimisedPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java b/java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java rename to java-numbers-2/src/main/java/com/baeldung/algorithms/primechecker/PrimesPrimeChecker.java diff --git a/java-numbers/src/main/java/com/baeldung/area/circle/Circle.java b/java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/area/circle/Circle.java rename to java-numbers-2/src/main/java/com/baeldung/area/circle/Circle.java diff --git a/java-numbers/src/main/java/com/baeldung/area/circle/CircleArea.java b/java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/area/circle/CircleArea.java rename to java-numbers-2/src/main/java/com/baeldung/area/circle/CircleArea.java diff --git a/java-numbers/src/main/java/com/baeldung/nan/NaNExample.java b/java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/nan/NaNExample.java rename to java-numbers-2/src/main/java/com/baeldung/nan/NaNExample.java diff --git a/java-numbers/src/main/java/com/baeldung/pow/PowerExample.java b/java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java similarity index 100% rename from java-numbers/src/main/java/com/baeldung/pow/PowerExample.java rename to java-numbers-2/src/main/java/com/baeldung/pow/PowerExample.java diff --git a/java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java b/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java similarity index 96% rename from java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java rename to java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java index 750807ce77..7511141a84 100644 --- a/java-numbers/src/main/java/com/baeldung/prime/PrimeGenerator.java +++ b/java-numbers-2/src/main/java/com/baeldung/prime/PrimeGenerator.java @@ -1,59 +1,59 @@ -package com.baeldung.prime; - -import java.util.Arrays; -import java.util.LinkedList; -import java.util.List; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -public class PrimeGenerator { - public static List sieveOfEratosthenes(int n) { - final boolean prime[] = new boolean[n + 1]; - Arrays.fill(prime, true); - - for (int p = 2; p * p <= n; p++) { - if (prime[p]) { - for (int i = p * 2; i <= n; i += p) - prime[i] = false; - } - } - - final List primes = new LinkedList<>(); - for (int i = 2; i <= n; i++) { - if (prime[i]) - primes.add(i); - } - return primes; - } - - public static List primeNumbersBruteForce(int max) { - final List primeNumbers = new LinkedList(); - for (int i = 2; i <= max; i++) { - if (isPrimeBruteForce(i)) { - primeNumbers.add(i); - } - } - return primeNumbers; - } - - private static boolean isPrimeBruteForce(int x) { - for (int i = 2; i < x; i++) { - if (x % i == 0) { - return false; - } - } - return true; - } - - public static List primeNumbersTill(int max) { - return IntStream.rangeClosed(2, max) - .filter(x -> isPrime(x)) - .boxed() - .collect(Collectors.toList()); - } - - private static boolean isPrime(int x) { - return IntStream.rangeClosed(2, (int) (Math.sqrt(x))) - .allMatch(n -> x % n != 0); - } -} +package com.baeldung.prime; + +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class PrimeGenerator { + public static List sieveOfEratosthenes(int n) { + final boolean prime[] = new boolean[n + 1]; + Arrays.fill(prime, true); + + for (int p = 2; p * p <= n; p++) { + if (prime[p]) { + for (int i = p * 2; i <= n; i += p) + prime[i] = false; + } + } + + final List primes = new LinkedList<>(); + for (int i = 2; i <= n; i++) { + if (prime[i]) + primes.add(i); + } + return primes; + } + + public static List primeNumbersBruteForce(int max) { + final List primeNumbers = new LinkedList(); + for (int i = 2; i <= max; i++) { + if (isPrimeBruteForce(i)) { + primeNumbers.add(i); + } + } + return primeNumbers; + } + + private static boolean isPrimeBruteForce(int x) { + for (int i = 2; i < x; i++) { + if (x % i == 0) { + return false; + } + } + return true; + } + + public static List primeNumbersTill(int max) { + return IntStream.rangeClosed(2, max) + .filter(x -> isPrime(x)) + .boxed() + .collect(Collectors.toList()); + } + + private static boolean isPrime(int x) { + return IntStream.rangeClosed(2, (int) (Math.sqrt(x))) + .allMatch(n -> x % n != 0); + } +} diff --git a/java-numbers/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java similarity index 100% rename from java-numbers/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/algorithms/primechecker/PrimeCheckerUnitTest.java diff --git a/java-numbers/src/test/java/com/baeldung/java/math/MathUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java similarity index 100% rename from java-numbers/src/test/java/com/baeldung/java/math/MathUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/java/math/MathUnitTest.java diff --git a/java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java b/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java similarity index 97% rename from java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java rename to java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java index 210bde076b..2509bd73d4 100644 --- a/java-numbers/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java +++ b/java-numbers-2/src/test/java/com/baeldung/prime/PrimeGeneratorUnitTest.java @@ -1,28 +1,29 @@ -package com.baeldung.prime; - -import java.util.Arrays; -import java.util.List; -import org.junit.Test; - -import static com.baeldung.prime.PrimeGenerator.*; -import static org.junit.Assert.*; - -public class PrimeGeneratorUnitTest { - @Test - public void whenBruteForced_returnsSuccessfully() { - final List primeNumbers = primeNumbersBruteForce(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } - - @Test - public void whenOptimized_returnsSuccessfully() { - final List primeNumbers = primeNumbersTill(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } - - @Test - public void whenSieveOfEratosthenes_returnsSuccessfully() { - final List primeNumbers = sieveOfEratosthenes(20); - assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); - } -} +package com.baeldung.prime; + +import org.junit.Test; + +import java.util.Arrays; +import java.util.List; + +import static com.baeldung.prime.PrimeGenerator.*; +import static org.junit.Assert.*; + +public class PrimeGeneratorUnitTest { + @Test + public void whenBruteForced_returnsSuccessfully() { + final List primeNumbers = primeNumbersBruteForce(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } + + @Test + public void whenOptimized_returnsSuccessfully() { + final List primeNumbers = primeNumbersTill(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } + + @Test + public void whenSieveOfEratosthenes_returnsSuccessfully() { + final List primeNumbers = sieveOfEratosthenes(20); + assertEquals(Arrays.asList(new Integer[] { 2, 3, 5, 7, 11, 13, 17, 19 }), primeNumbers); + } +} diff --git a/java-numbers/README.md b/java-numbers/README.md index 2b1131f325..7885232c46 100644 --- a/java-numbers/README.md +++ b/java-numbers/README.md @@ -4,11 +4,7 @@ ### Relevant Articles: - [Number of Digits in an Integer in Java](http://www.baeldung.com/java-number-of-digits-in-int) -- [NaN in Java](http://www.baeldung.com/java-not-a-number) - [How to Round a Number to N Decimal Places in Java](http://www.baeldung.com/java-round-decimal-number) -- [Check If a Number Is Prime in Java](http://www.baeldung.com/java-prime-numbers) -- [Using Math.pow in Java](http://www.baeldung.com/java-math-pow) -- [Generating Prime Numbers in Java](http://www.baeldung.com/java-generate-prime-numbers) - [BigDecimal and BigInteger in Java](http://www.baeldung.com/java-bigdecimal-biginteger) - [Find All Pairs of Numbers in an Array That Add Up to a Given Sum](http://www.baeldung.com/java-algorithm-number-pairs-sum) - [Java – Random Long, Float, Integer and Double](http://www.baeldung.com/java-generate-random-long-float-integer-double) @@ -17,5 +13,3 @@ - [Calculating the nth Root in Java](https://www.baeldung.com/java-nth-root) - [Convert Double to String, Removing Decimal Places](https://www.baeldung.com/java-double-to-string) - [Changing the Order in a Sum Operation Can Produce Different Results?](https://www.baeldung.com/java-floating-point-sum-order) -- [Calculate the Area of a Circle in Java](https://www.baeldung.com/java-calculate-circle-area) -- [A Guide to the Java Math Class](https://www.baeldung.com/java-lang-math) \ No newline at end of file diff --git a/java-strings-3/pom.xml b/java-strings-3/pom.xml index 1e5f757943..4589780c15 100644 --- a/java-strings-3/pom.xml +++ b/java-strings-3/pom.xml @@ -68,6 +68,12 @@ ${assertj.version} test + + org.bitbucket.cowwoc + diff-match-patch + 1.2 + test + diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java new file mode 100644 index 0000000000..20e87a1f4e --- /dev/null +++ b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffBenchmarkUnitTest.java @@ -0,0 +1,73 @@ +package com.baeldung.stringdiff; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + +import org.apache.commons.lang3.RandomStringUtils; +import org.apache.commons.lang3.StringUtils; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +@BenchmarkMode(Mode.AverageTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@State(Scope.Benchmark) +public class StringDiffBenchmarkUnitTest { + + private DiffMatchPatch diffMatchPatch = new DiffMatchPatch(); + + private List inputs = randomizeInputs(10000); + + public static void main(String[] args) throws RunnerException { + Options opts = new OptionsBuilder().include(".*") + .warmupIterations(1) + .measurementIterations(50) + .jvmArgs("-Xms2g", "-Xmx2g") + .shouldDoGC(true) + .forks(1) + .build(); + + new Runner(opts).run(); + } + + @Benchmark + public int diffMatchPatch() { + for (int i = 0; i < inputs.size() - 1; i++) { + diffMatchPatch.diffMain(inputs.get(i), inputs.get(i + 1), false); + } + return inputs.size(); + } + + @Benchmark + public int stringUtils() { + for (int i = 0; i < inputs.size() - 1; i++) { + StringUtils.difference(inputs.get(i), inputs.get(i + 1)); + } + return inputs.size(); + } + + /** + * Creates a list of a given size, containing 30 character long strings, + * each starting with a static prefix of 10 characters and followed by + * a random 20 character suffix + * + * @return a {@link List} of randomised strings + */ + private List randomizeInputs(int size) { + String staticPart = "ABCDEF1234"; + List inputs = new ArrayList<>(); + for (int i = 0; i < size; i++) { + inputs.add(staticPart + RandomStringUtils.randomAlphabetic(20)); + } + return inputs; + } +} diff --git a/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java new file mode 100644 index 0000000000..94b7deb64d --- /dev/null +++ b/java-strings-3/src/test/java/com/baeldung/stringdiff/StringDiffUnitTest.java @@ -0,0 +1,39 @@ +package com.baeldung.stringdiff; + +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.is; +import static org.junit.Assert.assertThat; + +import org.apache.commons.lang3.StringUtils; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch; +import org.bitbucket.cowwoc.diffmatchpatch.DiffMatchPatch.Operation; +import org.junit.Test; + +public class StringDiffUnitTest { + + private DiffMatchPatch diffMatchPatch = new DiffMatchPatch(); + + // Test samples + private final String text1 = "ABCDELMN"; + private final String text2 = "ABCFGLMN"; + + @Test + public void givenTwoStrings_whenDiffMatchPatch_thenReturnCorrectDiff() { + assertThat(diffMatchPatch.diffMain(text1, text2, false), containsInAnyOrder( + new DiffMatchPatch.Diff(Operation.EQUAL, "ABC"), + new DiffMatchPatch.Diff(Operation.DELETE, "DE"), + new DiffMatchPatch.Diff(Operation.INSERT, "FG"), + new DiffMatchPatch.Diff(Operation.EQUAL, "LMN"))); + assertThat(diffMatchPatch.diffMain(text2, text1, false), containsInAnyOrder( + new DiffMatchPatch.Diff(Operation.EQUAL, "ABC"), + new DiffMatchPatch.Diff(Operation.INSERT, "DE"), + new DiffMatchPatch.Diff(Operation.DELETE, "FG"), + new DiffMatchPatch.Diff(Operation.EQUAL, "LMN"))); + } + + @Test + public void givenTwoStrings_whenStringUtilsDifference_thenReturnCorrectDiff() { + assertThat(StringUtils.difference(text1, text2), is("FGLMN")); + assertThat(StringUtils.difference(text2, text1), is("DELMN")); + } +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java new file mode 100644 index 0000000000..c989ea3a6f --- /dev/null +++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/CompleteInfo.java @@ -0,0 +1,8 @@ +package org.baeldung.javabeanconstraints.validationgroup; + +import javax.validation.GroupSequence; + +@GroupSequence({BasicInfo.class, AdvanceInfo.class}) +public interface CompleteInfo { + +} diff --git a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java index 154d9821b6..ac8da5c26b 100644 --- a/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java +++ b/javaxval/src/main/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationForm.java @@ -13,6 +13,9 @@ public class RegistrationForm { @NotBlank(groups = BasicInfo.class) private String phone; + @NotBlank(groups = { BasicInfo.class, AdvanceInfo.class }) + private String captcha; + @NotBlank(groups = AdvanceInfo.class) private String street; @NotBlank(groups = AdvanceInfo.class) @@ -95,5 +98,13 @@ public class RegistrationForm { public void setPhone(String phone) { this.phone = phone; } + + public String getCaptcha() { + return captcha; + } + + public void setCaptcha(String captcha) { + this.captcha = captcha; + } } diff --git a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java index f8944524f3..bd7034476e 100644 --- a/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java +++ b/javaxval/src/test/java/org/baeldung/javabeanconstraints/validationgroup/RegistrationFormUnitTest.java @@ -43,6 +43,61 @@ public class RegistrationFormUnitTest { }); } + @Test + public void whenCaptchaIsBlank_thenShouldGiveConstraintViolationsForBasicInfo() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setCaptcha(""); + Set> violations = validator.validate(form, BasicInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("captcha"); + }); + } + + @Test + public void whenCaptchaIsBlank_thenShouldGiveConstraintViolationsForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithAdvanceInfo(); + form.setCaptcha(""); + Set> violations = validator.validate(form, AdvanceInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("captcha"); + }); + } + + @Test + public void whenBasicInfoIsNotComplete_thenShouldGiveConstraintViolationsForBasicInfoOnly() { + RegistrationForm form = buildRegistrationFormWithBasicInfo(); + form.setFirstName(""); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("firstName"); + }); + } + + @Test + public void whenBasicInfoIsCompleteAndAdvanceInfoIsNotComplete_thenShouldGiveConstraintViolationsForAdvanceInfo() { + RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); + form.setZipCode(""); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(1); + violations.forEach(action -> { + assertThat(action.getMessage()).isEqualTo("must not be blank"); + assertThat(action.getPropertyPath().toString()).isEqualTo("zipCode"); + }); + } + + @Test + public void whenBasicAndAdvanceInfoIsComplete_thenShouldNotGiveConstraintViolationsWithCompleteInfoValidationGroup() { + RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); + Set> violations = validator.validate(form, CompleteInfo.class); + assertThat(violations.size()).isEqualTo(0); + } + @Test public void whenBasicAndAdvanceInfoIsComplete_thenShouldNotGiveConstraintViolations() { RegistrationForm form = buildRegistrationFormWithBasicAndAdvanceInfo(); @@ -56,6 +111,7 @@ public class RegistrationFormUnitTest { form.setLastName("kumar"); form.setEmail("anyemail@yopmail.com"); form.setPhone("12345"); + form.setCaptcha("Y2HAhU5T"); return form; } @@ -70,6 +126,7 @@ public class RegistrationFormUnitTest { form.setStreet("alexa str."); form.setZipCode("19923"); form.setHouseNumber("2a"); + form.setCaptcha("Y2HAhU5T"); return form; } diff --git a/libraries-2/README.md b/libraries-2/README.md index 400aa475d1..7d7fc67fa7 100644 --- a/libraries-2/README.md +++ b/libraries-2/README.md @@ -8,6 +8,5 @@ - [A Guide to Crawler4j](https://www.baeldung.com/crawler4j) - [Decode an OkHttp JSON Response](https://www.baeldung.com/okhttp-json-response) - [Key Value Store with Chronicle Map](https://www.baeldung.com/java-chronicle-map) -- [Matrix Multiplication in Java](https://www.baeldung.com/java-matrix-multiplication) - [Guide to MapDB](https://www.baeldung.com/mapdb) - [A Guide to Apache Mesos](https://www.baeldung.com/apache-mesos) diff --git a/libraries-testing/README.md b/libraries-testing/README.md index 6b25a3b875..b4010056f7 100644 --- a/libraries-testing/README.md +++ b/libraries-testing/README.md @@ -5,4 +5,6 @@ - [Serenity BDD and Screenplay](http://www.baeldung.com/serenity-screenplay) - [Serenity BDD with Spring and JBehave](http://www.baeldung.com/serenity-spring-jbehave) - [Introduction to Awaitlity](http://www.baeldung.com/awaitlity-testing) -- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) \ No newline at end of file +- [Introduction to Hoverfly in Java](http://www.baeldung.com/hoverfly) +- [Hamcrest File Matchers](https://www.baeldung.com/hamcrest-file-matchers) +- [Hamcrest Text Matchers](http://www.baeldung.com/hamcrest-text-matchers) \ No newline at end of file diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index 8f7a27bbfa..7cc5a8f775 100644 --- a/libraries-testing/pom.xml +++ b/libraries-testing/pom.xml @@ -112,6 +112,13 @@ assertj-core ${assertj.version} + + + org.hamcrest + java-hamcrest + ${java-hamcrest.version} + test + net.serenity-bdd @@ -165,6 +172,7 @@ 4.3.8.RELEASE 3.0.3 3.6.2 + 2.0.0.0 diff --git a/guava/src/test/java/org/baeldung/hamcrest/Animal.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/Animal.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Animal.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/Cat.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/Cat.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Cat.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/HamcrestMatcherUnitTest.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/HamcrestMatcherUnitTest.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/IsPositiveInteger.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/IsPositiveInteger.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/Person.java b/libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/Person.java rename to libraries-testing/src/test/java/com/baeldung/hamcrest/Person.java diff --git a/guava/src/test/java/org/baeldung/hamcrest/README.md b/libraries-testing/src/test/java/com/baeldung/hamcrest/README.md similarity index 100% rename from guava/src/test/java/org/baeldung/hamcrest/README.md rename to libraries-testing/src/test/java/com/baeldung/hamcrest/README.md diff --git a/linux-bash/loops/src/main/bash/find_directories.sh b/linux-bash/loops/src/main/bash/find_directories.sh new file mode 100755 index 0000000000..8a9b20294d --- /dev/null +++ b/linux-bash/loops/src/main/bash/find_directories.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +find . -maxdepth 1 -mindepth 1 -type d -printf '%f\n' + +find . -maxdepth 1 -mindepth 1 -type d | while read dir; do + echo "$dir" +done + +find . -maxdepth 1 -type d -exec echo {} \; \ No newline at end of file diff --git a/linux-bash/loops/src/main/bash/loop_directories.sh b/linux-bash/loops/src/main/bash/loop_directories.sh new file mode 100755 index 0000000000..77e661d710 --- /dev/null +++ b/linux-bash/loops/src/main/bash/loop_directories.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +for dir in */; do + echo "$dir" +done + +for file in *; do + if [ -d "$file" ]; then + echo "$file" + fi +done \ No newline at end of file diff --git a/lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java b/lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java similarity index 96% rename from lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java rename to lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java index 604c45be3b..8397aeb759 100644 --- a/lombok/src/main/java/com/baeldung/lombok/getter/GetterLazy.java +++ b/lombok/src/main/java/com/baeldung/lombok/intro/GetterLazy.java @@ -1,4 +1,4 @@ -package com.baeldung.lombok.getter; +package com.baeldung.lombok.intro; import java.util.HashMap; import java.util.List; diff --git a/mapstruct/pom.xml b/mapstruct/pom.xml index 0493775f85..2613dcf083 100644 --- a/mapstruct/pom.xml +++ b/mapstruct/pom.xml @@ -65,7 +65,7 @@ - 1.3.0.Beta2 + 1.3.0.Final 4.3.4.RELEASE 1.8 1.8 diff --git a/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java new file mode 100644 index 0000000000..9817b76bc8 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/dto/UserBodyImperialValuesDTO.java @@ -0,0 +1,11 @@ +package com.baeldung.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserBodyImperialValuesDTO { + private int inch; + private int pound; +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java new file mode 100644 index 0000000000..b23463cb93 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/entity/UserBodyValues.java @@ -0,0 +1,11 @@ +package com.baeldung.entity; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class UserBodyValues { + private double kilogram; + private double centimeter; +} \ No newline at end of file diff --git a/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java new file mode 100644 index 0000000000..e75022a5e8 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/PoundToKilogramMapper.java @@ -0,0 +1,13 @@ +package com.baeldung.mapper; + +import org.mapstruct.Qualifier; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Qualifier +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.CLASS) +public @interface PoundToKilogramMapper {} diff --git a/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java new file mode 100644 index 0000000000..4c992f91e1 --- /dev/null +++ b/mapstruct/src/main/java/com/baeldung/mapper/UserBodyValuesMapper.java @@ -0,0 +1,28 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface UserBodyValuesMapper { + + UserBodyValuesMapper INSTANCE = Mappers.getMapper(UserBodyValuesMapper.class); + + @Mapping(source = "pound", target = "kilogram", qualifiedBy = PoundToKilogramMapper.class) + @Mapping(source = "inch", target = "centimeter", qualifiedByName = "inchToCentimeter") + public UserBodyValues userBodyValuesMapper(UserBodyImperialValuesDTO dto); + + @Named("inchToCentimeter") + public static double inchToCentimeter(int inch) { + return inch * 2.54; + } + + @PoundToKilogramMapper + public static double poundToKilogram(int pound) { + return pound * 0.4535; + } +} \ No newline at end of file diff --git a/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java new file mode 100644 index 0000000000..a875d6faf7 --- /dev/null +++ b/mapstruct/src/test/java/com/baeldung/mapper/UserBodyValuesMapperUnitTest.java @@ -0,0 +1,47 @@ +package com.baeldung.mapper; + +import com.baeldung.dto.UserBodyImperialValuesDTO; +import com.baeldung.entity.UserBodyValues; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + + +public class UserBodyValuesMapperUnitTest { + + @Test + public void givenUserBodyImperialValuesDTOToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + assertEquals(45.35, obj.getKilogram(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithInchToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setInch(10); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(25.4, obj.getCentimeter(), 0); + } + + @Test + public void givenUserBodyImperialValuesDTOWithPoundToUserBodyValuesObject_whenMaps_thenCorrect() { + UserBodyImperialValuesDTO dto = new UserBodyImperialValuesDTO(); + dto.setPound(100); + + UserBodyValues obj = UserBodyValuesMapper.INSTANCE.userBodyValuesMapper(dto); + + assertNotNull(obj); + assertEquals(45.35, obj.getKilogram(), 0); + } +} \ No newline at end of file diff --git a/patterns/design-patterns-2/README.md b/patterns/design-patterns-2/README.md deleted file mode 100644 index 8e4ef657e1..0000000000 --- a/patterns/design-patterns-2/README.md +++ /dev/null @@ -1,5 +0,0 @@ -### Relevant Articles - -- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern) -- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern) -- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check) diff --git a/patterns/design-patterns-architectural/README.md b/patterns/design-patterns-architectural/README.md new file mode 100644 index 0000000000..fbe4221752 --- /dev/null +++ b/patterns/design-patterns-architectural/README.md @@ -0,0 +1,3 @@ +### Relevant Articles: +- [Service Locator Pattern](https://www.baeldung.com/java-service-locator-pattern) +- [The DAO Pattern in Java](https://www.baeldung.com/java-dao-pattern) diff --git a/patterns/design-patterns/pom.xml b/patterns/design-patterns-architectural/pom.xml similarity index 78% rename from patterns/design-patterns/pom.xml rename to patterns/design-patterns-architectural/pom.xml index e6bff64f9e..cf99919e7c 100644 --- a/patterns/design-patterns/pom.xml +++ b/patterns/design-patterns-architectural/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - design-patterns + design-patterns-architectural 1.0 - design-patterns + design-patterns-architectural jar @@ -21,7 +21,8 @@ ${assertj-core.version} test - + + javax javaee-api ${javaee.version} @@ -37,24 +38,15 @@ ${mysql-connector.version} jar - - log4j - log4j - ${log4j.version} - - - com.googlecode.grep4j - grep4j - ${grep4j.version} - UTF-8 1.8 1.8 - 1.8.7 + 3.9.1 + 8.0 5.2.16.Final 6.0.6 diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/application/UserApplication.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/application/UserApplication.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/application/UserApplication.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/application/UserApplication.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/JpaEntityManagerFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/config/PersistenceUnitInfoImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/Dao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/Dao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/Dao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/Dao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/JpaUserDao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/UserDao.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/UserDao.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/daos/UserDao.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/daos/UserDao.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/daopattern/entities/User.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/entities/User.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/daopattern/entities/User.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/daopattern/entities/User.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/Cache.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Cache.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/Cache.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Cache.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/EmailService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/EmailService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/EmailService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/EmailService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/InitialContext.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/InitialContext.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/InitialContext.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/InitialContext.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/Main.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Main.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/Main.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/Main.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/MessagingService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/MessagingService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/MessagingService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/MessagingService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/SMSService.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/SMSService.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/SMSService.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/SMSService.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/service/locator/ServiceLocator.java b/patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/ServiceLocator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/service/locator/ServiceLocator.java rename to patterns/design-patterns-architectural/src/main/java/com/baeldung/service/locator/ServiceLocator.java diff --git a/patterns/design-patterns/src/main/resources/META-INF/persistence.xml b/patterns/design-patterns-architectural/src/main/resources/META-INF/persistence.xml similarity index 100% rename from patterns/design-patterns/src/main/resources/META-INF/persistence.xml rename to patterns/design-patterns-architectural/src/main/resources/META-INF/persistence.xml diff --git a/patterns/design-patterns/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java b/patterns/design-patterns-architectural/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java rename to patterns/design-patterns-architectural/src/test/java/com/baeldung/daopattern/test/UserDaoUnitTest.java diff --git a/patterns/design-patterns-behavioral-2/README.md b/patterns/design-patterns-behavioral-2/README.md new file mode 100644 index 0000000000..9618a9c458 --- /dev/null +++ b/patterns/design-patterns-behavioral-2/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Memento Design Pattern in Java](https://www.baeldung.com/java-memento-design-pattern) diff --git a/patterns/design-patterns-behavioral-2/pom.xml b/patterns/design-patterns-behavioral-2/pom.xml new file mode 100644 index 0000000000..7e73c0ad19 --- /dev/null +++ b/patterns/design-patterns-behavioral-2/pom.xml @@ -0,0 +1,33 @@ + + + 4.0.0 + design-patterns-behavioral-2 + 1.0 + design-patterns-behavioral-2 + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + org.assertj + assertj-core + ${assertj.version} + test + + + + + UTF-8 + 1.8 + 1.8 + + 3.12.2 + + diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextEditor.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextEditor.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextEditor.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextEditor.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindow.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindow.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindow.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindow.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindowState.java b/patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindowState.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/memento/TextWindowState.java rename to patterns/design-patterns-behavioral-2/src/main/java/com/baeldung/memento/TextWindowState.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java b/patterns/design-patterns-behavioral-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java rename to patterns/design-patterns-behavioral-2/src/test/java/com/baeldung/memento/TextEditorUnitTest.java diff --git a/patterns/design-patterns-behavioral/README.md b/patterns/design-patterns-behavioral/README.md new file mode 100644 index 0000000000..42514e0ad8 --- /dev/null +++ b/patterns/design-patterns-behavioral/README.md @@ -0,0 +1,11 @@ +### Relevant Articles: +- [The Observer Pattern in Java](https://www.baeldung.com/java-observer-pattern) +- [Visitor Design Pattern in Java](https://www.baeldung.com/java-visitor-pattern) +- [Interpreter Design Pattern in Java](https://www.baeldung.com/java-interpreter-pattern) +- [State Design Pattern in Java](https://www.baeldung.com/java-state-design-pattern) +- [Implementing the Template Method Pattern in Java](https://www.baeldung.com/java-template-method-pattern) +- [Chain of Responsibility Design Pattern in Java](https://www.baeldung.com/chain-of-responsibility-pattern) +- [The Command Pattern in Java](https://www.baeldung.com/java-command-pattern) +- [The Mediator Pattern in Java](https://www.baeldung.com/java-mediator-pattern) +- [Introduction to the Null Object Pattern](https://www.baeldung.com/java-null-object-pattern) +- [Avoid Check for Null Statement in Java](https://www.baeldung.com/java-avoid-null-check) diff --git a/patterns/design-patterns-2/pom.xml b/patterns/design-patterns-behavioral/pom.xml similarity index 69% rename from patterns/design-patterns-2/pom.xml rename to patterns/design-patterns-behavioral/pom.xml index f99bb4dc9c..d6603f94ec 100644 --- a/patterns/design-patterns-2/pom.xml +++ b/patterns/design-patterns-behavioral/pom.xml @@ -2,9 +2,9 @@ 4.0.0 - design-patterns-2 + design-patterns-behavioral 1.0 - design-patterns-2 + design-patterns-behavioral jar @@ -31,32 +31,21 @@ commons-lang3 ${commons-lang3.version} + org.assertj assertj-core - ${assertj.version} + ${assertj-core.version} test - - - org.inferred - freebuilder - ${freebuilder.version} - true - - - com.google.code.findbugs - jsr305 - ${javax.annotations.version} - + UTF-8 1.8 1.8 + 16.0.2 - 3.12.2 - 2.4.1 - 3.0.2 + 3.9.1 diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/AuthenticationProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthAuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/OAuthTokenProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/SamlAuthenticationProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordAuthenticationProcessor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/chainofresponsibility/UsernamePasswordProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/client/TextFileApplication.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/client/TextFileApplication.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/client/TextFileApplication.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/client/TextFileApplication.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/OpenTextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/SaveTextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/command/TextFileOperation.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/TextFileOperation.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/command/TextFileOperation.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/command/TextFileOperation.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/invoker/TextFileOperationExecutor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/command/receiver/TextFile.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/receiver/TextFile.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/command/receiver/TextFile.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/command/receiver/TextFile.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Context.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Context.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Context.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Context.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Expression.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Expression.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Expression.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Expression.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/From.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/From.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/From.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/From.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/InterpreterDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/InterpreterDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/InterpreterDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/InterpreterDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Row.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Row.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Row.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Row.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Select.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Select.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Select.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Select.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/interpreter/Where.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Where.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/interpreter/Where.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/interpreter/Where.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Button.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Button.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Button.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Button.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Fan.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Fan.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Fan.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Fan.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Mediator.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Mediator.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/Mediator.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/Mediator.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/mediator/PowerSupplier.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/PowerSupplier.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/mediator/PowerSupplier.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/mediator/PowerSupplier.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/JmsRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/JmsRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/JmsRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/JmsRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Message.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Message.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Message.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Message.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/NullRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/NullRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/NullRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/NullRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Router.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Router.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/Router.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/Router.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RouterFactory.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RouterFactory.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RouterFactory.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RouterFactory.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RoutingHandler.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RoutingHandler.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/RoutingHandler.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/RoutingHandler.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/SmsRouter.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/SmsRouter.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nullobject/SmsRouter.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nullobject/SmsRouter.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/APIContracts.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/APIContracts.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/APIContracts.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/APIContracts.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Assertions.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Assertions.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Assertions.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Assertions.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/EmptyCollections.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/EmptyCollections.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/EmptyCollections.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/EmptyCollections.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/FindBugsAnnotations.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Preconditions.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Preconditions.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/Preconditions.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/Preconditions.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/PrimitivesAndWrapper.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingLombok.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingLombok.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingLombok.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingLombok.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingObjects.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingObjects.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingObjects.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingObjects.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingOptional.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingOptional.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingOptional.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingStringUtils.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingStringUtils.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/nulls/UsingStringUtils.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/nulls/UsingStringUtils.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/Channel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/Channel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/Channel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/Channel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/NewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/NewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/NewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/NewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/NewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/ONewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/ONewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsAgency.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsAgency.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsAgency.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsAgency.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsChannel.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsChannel.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/observer/PCLNewsChannel.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/observer/PCLNewsChannel.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/DeliveredState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/DeliveredState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/DeliveredState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/DeliveredState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/OrderedState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/OrderedState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/OrderedState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/OrderedState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/Package.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/Package.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/Package.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/Package.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/PackageState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/PackageState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/PackageState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/PackageState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/ReceivedState.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/ReceivedState.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/ReceivedState.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/ReceivedState.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/state/StateDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/StateDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/state/StateDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/state/StateDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/application/Application.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/application/Application.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/application/Application.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/application/Application.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/Computer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/Computer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/Computer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/Computer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/ComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/HighEndComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputer.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/templatemethod/model/StandardComputerBuilder.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Document.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Document.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Document.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Document.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Element.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Element.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Element.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Element.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/ElementVisitor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/ElementVisitor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/ElementVisitor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/ElementVisitor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/JsonElement.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/JsonElement.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/JsonElement.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/JsonElement.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/Visitor.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Visitor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/Visitor.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/Visitor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/VisitorDemo.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/VisitorDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/VisitorDemo.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/VisitorDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/visitor/XmlElement.java b/patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/XmlElement.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/visitor/XmlElement.java rename to patterns/design-patterns-behavioral/src/main/java/com/baeldung/visitor/XmlElement.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/chainofresponsibility/ChainOfResponsibilityIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/OpenTextFileOperationUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/SaveTextFileOperationUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileOperationExecutorUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/command/test/TextFileUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/command/test/TextFileUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/mediator/MediatorIntegrationTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/PrimitivesAndWrapperUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingLombokUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingObjectsUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingOptionalUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/nulls/UsingStringUtilsUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/observer/ObserverIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/state/StatePatternUnitTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/state/StatePatternUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/state/StatePatternUnitTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/state/StatePatternUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java b/patterns/design-patterns-behavioral/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java rename to patterns/design-patterns-behavioral/src/test/java/com/baeldung/templatemethod/test/TemplateMethodPatternIntegrationTest.java diff --git a/patterns/design-patterns-creational/README.md b/patterns/design-patterns-creational/README.md new file mode 100644 index 0000000000..0c00dc7b3a --- /dev/null +++ b/patterns/design-patterns-creational/README.md @@ -0,0 +1,8 @@ +### Relevant Articles: +- [Singletons in Java](https://www.baeldung.com/java-singleton) +- [Introduction to Creational Design Patterns](https://www.baeldung.com/creational-design-patterns) +- [Abstract Factory Pattern in Java](https://www.baeldung.com/java-abstract-factory-pattern) +- [Flyweight Pattern in Java](https://www.baeldung.com/java-flyweight) +- [Double-Checked Locking with Singleton](https://www.baeldung.com/java-singleton-double-checked-locking) +- [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) +- [Automatic Generation of the Builder Pattern with FreeBuilder](https://www.baeldung.com/java-builder-pattern-freebuilder) diff --git a/patterns/design-patterns-creational/pom.xml b/patterns/design-patterns-creational/pom.xml new file mode 100644 index 0000000000..351f69f749 --- /dev/null +++ b/patterns/design-patterns-creational/pom.xml @@ -0,0 +1,47 @@ + + + 4.0.0 + design-patterns-creational + 1.0 + design-patterns-creational + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + org.inferred + freebuilder + ${freebuilder.version} + true + + + com.google.code.findbugs + jsr305 + ${javax.annotations.version} + + + + org.assertj + assertj-core + ${assertj-core.version} + test + + + + + UTF-8 + 1.8 + 1.8 + + 2.4.1 + 3.0.2 + 3.9.1 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java similarity index 97% rename from patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java index d19772072f..8730542dcb 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/application/Application.java @@ -1,12 +1,12 @@ -package com.baeldung.constructorsstaticfactorymethods.application; - -import com.baeldung.constructorsstaticfactorymethods.entities.User; - -public class Application { - - public static void main(String[] args) { - User user1 = User.createWithDefaultCountry("John", "john@domain.com"); - User user2 = User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina"); - User user3 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - } +package com.baeldung.constructorsstaticfactorymethods.application; + +import com.baeldung.constructorsstaticfactorymethods.entities.User; + +public class Application { + + public static void main(String[] args) { + User user1 = User.createWithDefaultCountry("John", "john@domain.com"); + User user2 = User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina"); + User user3 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + } } \ No newline at end of file diff --git a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java similarity index 96% rename from patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java index 4036b622c6..f05a3baaa3 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/constructorsstaticfactorymethods/entities/User.java @@ -1,63 +1,63 @@ -package com.baeldung.constructorsstaticfactorymethods.entities; - -import java.time.LocalTime; -import java.util.logging.ConsoleHandler; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.logging.SimpleFormatter; - -public class User { - - private static volatile User instance = null; - private static final Logger LOGGER = Logger.getLogger(User.class.getName()); - private final String name; - private final String email; - private final String country; - - public static User createWithDefaultCountry(String name, String email) { - return new User(name, email, "Argentina"); - } - - public static User createWithLoggedInstantiationTime(String name, String email, String country) { - setLoggerProperties(); - LOGGER.log(Level.INFO, "Creating User instance at : {0}", LocalTime.now()); - return new User(name, email, country); - } - - public static User getSingletonInstance(String name, String email, String country) { - if (instance == null) { - synchronized (User.class) { - if (instance == null) { - instance = new User(name, email, country); - } - } - } - return instance; - - } - - private User(String name, String email, String country) { - this.name = name; - this.email = email; - this.country = country; - } - - public String getName() { - return name; - } - - public String getEmail() { - return email; - } - - public String getCountry() { - return country; - } - - private static void setLoggerProperties() { - ConsoleHandler handler = new ConsoleHandler(); - handler.setLevel(Level.INFO); - handler.setFormatter(new SimpleFormatter()); - LOGGER.addHandler(handler); - } -} +package com.baeldung.constructorsstaticfactorymethods.entities; + +import java.time.LocalTime; +import java.util.logging.ConsoleHandler; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.logging.SimpleFormatter; + +public class User { + + private static volatile User instance = null; + private static final Logger LOGGER = Logger.getLogger(User.class.getName()); + private final String name; + private final String email; + private final String country; + + public static User createWithDefaultCountry(String name, String email) { + return new User(name, email, "Argentina"); + } + + public static User createWithLoggedInstantiationTime(String name, String email, String country) { + setLoggerProperties(); + LOGGER.log(Level.INFO, "Creating User instance at : {0}", LocalTime.now()); + return new User(name, email, country); + } + + public static User getSingletonInstance(String name, String email, String country) { + if (instance == null) { + synchronized (User.class) { + if (instance == null) { + instance = new User(name, email, country); + } + } + } + return instance; + + } + + private User(String name, String email, String country) { + this.name = name; + this.email = email; + this.country = country; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public String getCountry() { + return country; + } + + private static void setLoggerProperties() { + ConsoleHandler handler = new ConsoleHandler(); + handler.setLevel(Level.INFO); + handler.setFormatter(new SimpleFormatter()); + LOGGER.addHandler(handler); + } +} diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AbstractPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Animal.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Animal.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Animal.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Animal.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/AnimalFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Brown.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Brown.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Brown.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Brown.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Color.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Color.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Color.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Color.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/ColorFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Dog.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Dog.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Dog.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Dog.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Duck.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Duck.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/Duck.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/Duck.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/FactoryProvider.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/White.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/White.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/abstractfactory/White.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/abstractfactory/White.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BankAccount.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BankAccount.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BankAccount.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BankAccount.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/builder/BuilderPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/FactoryDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/FactoryDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/FactoryDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/FactoryDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Heptagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Heptagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Heptagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Heptagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Octagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Octagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Octagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Octagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Pentagon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Pentagon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Pentagon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Pentagon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Polygon.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Polygon.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Polygon.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Polygon.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/PolygonFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/PolygonFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/PolygonFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/PolygonFactory.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Square.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Square.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Square.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Square.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Triangle.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Triangle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/factory/Triangle.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/factory/Triangle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/Singleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/Singleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/Singleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/Singleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/creational/singleton/SingletonDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java similarity index 95% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java index a0b1a7cdf5..80ef992abb 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Car.java +++ b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Car.java @@ -2,8 +2,6 @@ package com.baeldung.flyweight; import java.awt.Color; -import javax.annotation.concurrent.Immutable; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -12,7 +10,6 @@ import org.slf4j.LoggerFactory; * * @author Donato Rimenti */ -@Immutable public class Car implements Vehicle { /** diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Engine.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Engine.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Engine.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Engine.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/Vehicle.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Vehicle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/Vehicle.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/Vehicle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/flyweight/VehicleFactory.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/VehicleFactory.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/flyweight/VehicleFactory.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/flyweight/VehicleFactory.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Address.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Address.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Address.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Address.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Employee.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Employee.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/Employee.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/Employee.java diff --git a/patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/builder/Employee.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/builder/Employee.java similarity index 100% rename from patterns/design-patterns-2/src/main/java/com/baeldung/freebuilder/builder/Employee.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/freebuilder/builder/Employee.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/ClassSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/ClassSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/ClassSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/ClassSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/EnumSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/EnumSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/EnumSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/EnumSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/Sandbox.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/Sandbox.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/Sandbox.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/Sandbox.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DclSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/DraconianSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EarlyInitSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/EnumSingleton.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java b/patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java rename to patterns/design-patterns-creational/src/main/java/com/baeldung/singleton/synchronization/InitOnDemandSingleton.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java similarity index 97% rename from patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java index 0c0266a111..ee8698b18d 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java +++ b/patterns/design-patterns-creational/src/test/java/com/baeldung/constructorsstaticfactorymethods/UserUnitTest.java @@ -1,43 +1,43 @@ -package com.baeldung.constructorsstaticfactorymethods; - -import com.baeldung.constructorsstaticfactorymethods.entities.User; -import static org.assertj.core.api.Assertions.assertThat; -import org.junit.Test; - -public class UserUnitTest { - - @Test - public void givenUserClass_whenCalledcreateWithDefaultCountry_thenCorrect() { - assertThat(User.createWithDefaultCountry("John", "john@domain.com")).isInstanceOf(User.class); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetName_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getName()).isEqualTo("John"); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetEmail_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getEmail()).isEqualTo("john@domain.com"); - } - - @Test - public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetCountry_thenCorrect() { - User user = User.createWithDefaultCountry("John", "john@domain.com"); - assertThat(user.getCountry()).isEqualTo("Argentina"); - } - - @Test - public void givenUserInstanceCreatedWithcreateWithInstantiationTime_whenCalledcreateWithInstantiationTime_thenCorrect() { - assertThat(User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina")).isInstanceOf(User.class); - } - - @Test - public void givenUserInstanceCreatedWithgetSingletonIntance_whenCalledgetSingletonInstance_thenCorrect() { - User user1 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - User user2 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); - assertThat(user1).isEqualTo(user2); - } +package com.baeldung.constructorsstaticfactorymethods; + +import com.baeldung.constructorsstaticfactorymethods.entities.User; +import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +public class UserUnitTest { + + @Test + public void givenUserClass_whenCalledcreateWithDefaultCountry_thenCorrect() { + assertThat(User.createWithDefaultCountry("John", "john@domain.com")).isInstanceOf(User.class); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetName_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getName()).isEqualTo("John"); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetEmail_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getEmail()).isEqualTo("john@domain.com"); + } + + @Test + public void givenUserIntanceCreatedWithcreateWithDefaultCountry_whenCalledgetCountry_thenCorrect() { + User user = User.createWithDefaultCountry("John", "john@domain.com"); + assertThat(user.getCountry()).isEqualTo("Argentina"); + } + + @Test + public void givenUserInstanceCreatedWithcreateWithInstantiationTime_whenCalledcreateWithInstantiationTime_thenCorrect() { + assertThat(User.createWithLoggedInstantiationTime("John", "john@domain.com", "Argentina")).isInstanceOf(User.class); + } + + @Test + public void givenUserInstanceCreatedWithgetSingletonIntance_whenCalledgetSingletonInstance_thenCorrect() { + User user1 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + User user2 = User.getSingletonInstance("John", "john@domain.com", "Argentina"); + assertThat(user1).isEqualTo(user2); + } } \ No newline at end of file diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/abstractfactory/AbstractPatternIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/builder/BuilderPatternIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/factory/FactoryIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/creational/singleton/SingletonIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/flyweight/FlyweightUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/EmployeeBuilderUnitTest.java diff --git a/patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java similarity index 100% rename from patterns/design-patterns-2/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/freebuilder/builder/EmployeeBuilderUnitTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java b/patterns/design-patterns-creational/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java rename to patterns/design-patterns-creational/src/test/java/com/baeldung/singleton/synchronization/SingletonSynchronizationIntegrationTest.java diff --git a/patterns/design-patterns-functional/README.md b/patterns/design-patterns-functional/README.md new file mode 100644 index 0000000000..04e21bafd5 --- /dev/null +++ b/patterns/design-patterns-functional/README.md @@ -0,0 +1,2 @@ +### Relevant Articles: +- [Currying in Java](https://www.baeldung.com/java-currying) diff --git a/patterns/design-patterns-functional/pom.xml b/patterns/design-patterns-functional/pom.xml new file mode 100644 index 0000000000..5df7cc0cb9 --- /dev/null +++ b/patterns/design-patterns-functional/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + design-patterns-functional + 1.0 + design-patterns-functional + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/currying/Letter.java b/patterns/design-patterns-functional/src/main/java/com/baeldung/currying/Letter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/currying/Letter.java rename to patterns/design-patterns-functional/src/main/java/com/baeldung/currying/Letter.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/currying/LetterUnitTest.java b/patterns/design-patterns-functional/src/test/java/com/baeldung/currying/LetterUnitTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/currying/LetterUnitTest.java rename to patterns/design-patterns-functional/src/test/java/com/baeldung/currying/LetterUnitTest.java diff --git a/patterns/design-patterns-structural/README.md b/patterns/design-patterns-structural/README.md new file mode 100644 index 0000000000..91620a522e --- /dev/null +++ b/patterns/design-patterns-structural/README.md @@ -0,0 +1,7 @@ +### Relevant Articles: +- [Facade Design Pattern in Java](https://www.baeldung.com/java-facade-pattern) +- [Proxy, Decorator, Adapter and Bridge Patterns](https://www.baeldung.com/java-structural-design-patterns) +- [Composite Design Pattern in Java](https://www.baeldung.com/java-composite-pattern) +- [The Decorator Pattern in Java](https://www.baeldung.com/java-decorator-pattern) +- [The Adapter Pattern in Java](https://www.baeldung.com/java-adapter-pattern) +- [The Proxy Pattern in Java](https://www.baeldung.com/java-proxy-pattern) diff --git a/patterns/design-patterns-structural/pom.xml b/patterns/design-patterns-structural/pom.xml new file mode 100644 index 0000000000..63806058c9 --- /dev/null +++ b/patterns/design-patterns-structural/pom.xml @@ -0,0 +1,30 @@ + + + 4.0.0 + design-patterns-structural + 1.0 + design-patterns-structural + jar + + + com.baeldung + patterns + 1.0.0-SNAPSHOT + .. + + + + + log4j + log4j + ${log4j.version} + + + + + UTF-8 + 1.8 + 1.8 + + diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java similarity index 94% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java index a4e10a0868..9f696a5f40 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AdapterPatternDriver.java @@ -1,6 +1,6 @@ package com.baeldung.adapter; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; public class AdapterPatternDriver { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/AstonMartin.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AstonMartin.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/AstonMartin.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/AstonMartin.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/BugattiVeyron.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/BugattiVeyron.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/BugattiVeyron.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/BugattiVeyron.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/McLaren.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/McLaren.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/McLaren.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/McLaren.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/Movable.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/Movable.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/Movable.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/Movable.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/adapter/MovableAdapterImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Blue.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Blue.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Blue.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/BridgePatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/BridgePatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/BridgePatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Color.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Color.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Color.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Red.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Red.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Red.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Shape.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Shape.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Shape.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Square.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Square.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Square.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/bridge/Triangle.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/bridge/Triangle.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/bridge/Triangle.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/CompositeDemo.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/CompositeDemo.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/CompositeDemo.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/Department.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/Department.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/Department.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/FinancialDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/FinancialDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/FinancialDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/HeadDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/HeadDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/HeadDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/composite/SalesDepartment.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/composite/SalesDepartment.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/composite/SalesDepartment.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/BubbleLights.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/BubbleLights.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/BubbleLights.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/BubbleLights.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTree.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTree.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTree.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTree.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/ChristmasTreeImpl.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java similarity index 90% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java index c20c23ff6e..6a9da7c78c 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/DecoratorPatternDriver.java @@ -1,6 +1,6 @@ package com.baeldung.decorator; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; public class DecoratorPatternDriver { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/Garland.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/Garland.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/Garland.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/Garland.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/decorator/TreeDecorator.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/TreeDecorator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/decorator/TreeDecorator.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/decorator/TreeDecorator.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/CarEngineFacade.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/CarEngineFacade.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/CarEngineFacade.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/CarEngineFacade.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowController.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/AirFlowMeter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CatalyticConverter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CoolingController.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CoolingController.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/CoolingController.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/CoolingController.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelInjector.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelPump.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelPump.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/FuelPump.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/FuelPump.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Radiator.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Radiator.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Radiator.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Radiator.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Starter.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Starter.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/Starter.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/Starter.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/facade/carsystem/TemperatureSensor.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObject.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObject.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObject.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java similarity index 88% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java index 7ade31da88..6d38672a63 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectImpl.java @@ -1,6 +1,6 @@ package com.baeldung.proxy; -import static com.baeldung.util.LogerUtil.LOG;; +import static com.baeldung.util.LoggerUtil.LOG; public class ExpensiveObjectImpl implements ExpensiveObject { diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ExpensiveObjectProxy.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java similarity index 100% rename from patterns/design-patterns/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/proxy/ProxyPatternDriver.java diff --git a/patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java b/patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java similarity index 87% rename from patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java rename to patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java index 7217a4bc40..9702cba0f5 100644 --- a/patterns/design-patterns/src/main/java/com/baeldung/util/LogerUtil.java +++ b/patterns/design-patterns-structural/src/main/java/com/baeldung/util/LoggerUtil.java @@ -8,7 +8,7 @@ import java.util.Properties; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; -public class LogerUtil { +public class LoggerUtil { public final static Logger LOG = Logger.getLogger("GLOBAL"); @@ -22,7 +22,7 @@ public class LogerUtil { props.load( new BufferedReader( new InputStreamReader( - LogerUtil.class.getResourceAsStream("/log4jstructuraldp.properties") + LoggerUtil.class.getResourceAsStream("/log4jstructuraldp.properties") ) ) ); diff --git a/patterns/design-patterns/src/main/resources/log4jstructuraldp.properties b/patterns/design-patterns-structural/src/main/resources/log4jstructuraldp.properties similarity index 100% rename from patterns/design-patterns/src/main/resources/log4jstructuraldp.properties rename to patterns/design-patterns-structural/src/main/resources/log4jstructuraldp.properties diff --git a/patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java similarity index 75% rename from patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java index 78a1492d83..536caf7341 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/AdapterPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/adapter/AdapterPatternIntegrationTest.java @@ -1,16 +1,9 @@ -package com.baeldung; +package com.baeldung.adapter; import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.adapter.AstonMartin; -import com.baeldung.adapter.BugattiVeyron; -import com.baeldung.adapter.McLaren; -import com.baeldung.adapter.Movable; -import com.baeldung.adapter.MovableAdapter; -import com.baeldung.adapter.MovableAdapterImpl; - public class AdapterPatternIntegrationTest { @Test public void givenMovableAdapter_WhenConvertingMPHToKMPH_thenSuccessfullyConverted() { diff --git a/patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java similarity index 72% rename from patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java index adcb5cdd2c..814a91c070 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/BridgePatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/bridge/BridgePatternIntegrationTest.java @@ -1,15 +1,9 @@ -package com.baeldung; +package com.baeldung.bridge; import static org.junit.Assert.*; import org.junit.Test; -import com.baeldung.bridge.Blue; -import com.baeldung.bridge.Red; -import com.baeldung.bridge.Shape; -import com.baeldung.bridge.Square; -import com.baeldung.bridge.Triangle; - public class BridgePatternIntegrationTest { @Test diff --git a/patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java similarity index 75% rename from patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java index 23a717ae2e..0f2e262346 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/DecoratorPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/decorator/DecoratorPatternIntegrationTest.java @@ -1,14 +1,9 @@ -package com.baeldung; +package com.baeldung.decorator; import static org.junit.Assert.assertEquals; import org.junit.Test; -import com.baeldung.decorator.BubbleLights; -import com.baeldung.decorator.ChristmasTree; -import com.baeldung.decorator.ChristmasTreeImpl; -import com.baeldung.decorator.Garland; - public class DecoratorPatternIntegrationTest { @Test public void givenDecoratorPattern_WhenDecoratorsInjectedAtRuntime_thenConfigSuccess() { diff --git a/patterns/design-patterns/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java similarity index 100% rename from patterns/design-patterns/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/facade/CarEngineFacadeIntegrationTest.java diff --git a/patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java similarity index 87% rename from patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java index c035793b64..6db19f7cea 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/ProxyPatternIntegrationTest.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/ProxyPatternIntegrationTest.java @@ -1,6 +1,6 @@ -package com.baeldung; +package com.baeldung.proxy; -import static com.baeldung.util.LogerUtil.LOG; +import static com.baeldung.util.LoggerUtil.LOG; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; @@ -11,9 +11,6 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; -import com.baeldung.proxy.ExpensiveObject; -import com.baeldung.proxy.ExpensiveObjectProxy; - public class ProxyPatternIntegrationTest { public static TestAppenderDP appender; diff --git a/patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java similarity index 95% rename from patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java rename to patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java index 2b3bc47292..1c6d9a2064 100644 --- a/patterns/design-patterns/src/test/java/com/baeldung/TestAppenderDP.java +++ b/patterns/design-patterns-structural/src/test/java/com/baeldung/proxy/TestAppenderDP.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.proxy; import java.util.ArrayList; import java.util.List; diff --git a/patterns/design-patterns/README.md b/patterns/design-patterns/README.md deleted file mode 100644 index 1c611f05d2..0000000000 --- a/patterns/design-patterns/README.md +++ /dev/null @@ -1,23 +0,0 @@ -### Relevant Articles: -- [Facade Design Pattern in Java](http://www.baeldung.com/java-facade-pattern) -- [Singletons in Java](http://www.baeldung.com/java-singleton) -- [Proxy, Decorator, Adapter and Bridge Patterns](http://www.baeldung.com/java-structural-design-patterns) -- [Introduction to Creational Design Patterns](http://www.baeldung.com/creational-design-patterns) -- [The Observer Pattern in Java](http://www.baeldung.com/java-observer-pattern) -- [Flyweight Pattern in Java](http://www.baeldung.com/java-flyweight) -- [Service Locator Pattern](http://www.baeldung.com/java-service-locator-pattern) -- [Double-Checked Locking with Singleton](http://www.baeldung.com/java-singleton-double-checked-locking) -- [Composite Design Pattern in Java](http://www.baeldung.com/java-composite-pattern) -- [Visitor Design Pattern in Java](http://www.baeldung.com/java-visitor-pattern) -- [The DAO Pattern in Java](http://www.baeldung.com/java-dao-pattern) -- [Interpreter Design Pattern in Java](http://www.baeldung.com/java-interpreter-pattern) -- [State Design Pattern in Java](https://www.baeldung.com/java-state-design-pattern) -- [The Decorator Pattern in Java](https://www.baeldung.com/java-decorator-pattern) -- [Abstract Factory Pattern in Java](https://www.baeldung.com/java-abstract-factory-pattern) -- [Implementing the Template Method Pattern in Java](http://www.baeldung.com/java-template-method-pattern) -- [Chain of Responsibility Design Pattern in Java](http://www.baeldung.com/chain-of-responsibility-pattern) -- [The Command Pattern in Java](http://www.baeldung.com/java-command-pattern) -- [Java Constructors vs Static Factory Methods](https://www.baeldung.com/java-constructors-vs-static-factory-methods) -- [The Adapter Pattern in Java](https://www.baeldung.com/java-adapter-pattern) -- [Currying in Java](https://www.baeldung.com/java-currying) -- [The Proxy Pattern in Java](https://www.baeldung.com/java-proxy-pattern) diff --git a/patterns/pom.xml b/patterns/pom.xml index 7f7368ca07..196c3c3319 100644 --- a/patterns/pom.xml +++ b/patterns/pom.xml @@ -16,8 +16,12 @@ front-controller intercepting-filter - design-patterns - design-patterns-2 + design-patterns-architectural + design-patterns-behavioral + design-patterns-behavioral-2 + design-patterns-creational + design-patterns-functional + design-patterns-structural solid dip backoff-jitter diff --git a/persistence-modules/java-cassandra/README.md b/persistence-modules/java-cassandra/README.md index 3ab6f5f099..f3710c9d69 100644 --- a/persistence-modules/java-cassandra/README.md +++ b/persistence-modules/java-cassandra/README.md @@ -1,2 +1,3 @@ ### Relevant Articles: - [A Guide to Cassandra with Java](http://www.baeldung.com/cassandra-with-java) +- [Intro to DataStax Java Driver for Apache Cassandra](https://www.baeldung.com/cassandra-datastax-java-driver) diff --git a/persistence-modules/java-sql2o/README.md b/persistence-modules/persistence-libraries/README.md similarity index 100% rename from persistence-modules/java-sql2o/README.md rename to persistence-modules/persistence-libraries/README.md diff --git a/persistence-modules/java-sql2o/pom.xml b/persistence-modules/persistence-libraries/pom.xml similarity index 97% rename from persistence-modules/java-sql2o/pom.xml rename to persistence-modules/persistence-libraries/pom.xml index fe5a0e5dc8..cce051f303 100644 --- a/persistence-modules/java-sql2o/pom.xml +++ b/persistence-modules/persistence-libraries/pom.xml @@ -2,7 +2,7 @@ 4.0.0 - java-sql2o + persistence-libraries 1.0-SNAPSHOT diff --git a/persistence-modules/java-sql2o/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java b/persistence-modules/persistence-libraries/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java similarity index 100% rename from persistence-modules/java-sql2o/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java rename to persistence-modules/persistence-libraries/src/test/java/com/baeldung/persistence/sql2o/Sql2oIntegrationTest.java diff --git a/persistence-modules/pom.xml b/persistence-modules/pom.xml index 9ae24efcc1..5dd0611f41 100644 --- a/persistence-modules/pom.xml +++ b/persistence-modules/pom.xml @@ -30,7 +30,7 @@ java-jpa java-jpa-2 java-mongodb - java-sql2o + persistence-libraries jnosql liquibase orientdb @@ -59,7 +59,7 @@ spring-jpa spring-persistence-simple jpa-hibernate-cascade-type - r2dbc + r2dbc spring-boot-jdbi diff --git a/pom.xml b/pom.xml index 7f92acef6c..b3701016d1 100644 --- a/pom.xml +++ b/pom.xml @@ -408,6 +408,7 @@ core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf @@ -442,6 +443,7 @@ grpc gson guava + guava-io guava-collections guava-collections-set guava-modules @@ -1135,6 +1137,7 @@ core-java-modules/core-java-lang-2 core-java-modules/core-java-lang-oop core-java-modules/core-java-lang-oop-2 + core-java-modules/core-java-lang-oop-3 core-java-modules core-java-modules/core-java-networking core-java-modules/core-java-perf @@ -1166,6 +1169,7 @@ grpc gson guava + guava-io guava-collections guava-collections-set guava-modules diff --git a/spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java b/spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java similarity index 89% rename from spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java rename to spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java index 0bd8637681..7f8736ae87 100644 --- a/spring-5/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java +++ b/spring-4/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java b/spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java similarity index 95% rename from spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java rename to spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java index 0cc876d5b1..e3ed608521 100644 --- a/spring-4/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java +++ b/spring-4/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import static org.junit.Assert.*; diff --git a/spring-5-data-reactive/pom.xml b/spring-5-data-reactive/pom.xml index 5372803842..296da87529 100644 --- a/spring-5-data-reactive/pom.xml +++ b/spring-5-data-reactive/pom.xml @@ -14,6 +14,14 @@ + + io.projectreactor + reactor-core + + + org.springframework.boot + spring-boot-starter-data-couchbase-reactive + org.springframework.boot spring-boot-starter-data-mongodb-reactive @@ -105,6 +113,12 @@ httpclient ${httpclient.version} + + com.couchbase.mock + CouchbaseMock + ${couchbaseMock.version} + test + @@ -224,6 +238,7 @@ 0.8.0.M8 4.5.2 1.4.199 + 1.5.23 diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java new file mode 100644 index 0000000000..917bcfdaa8 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/ReactiveCouchbaseApplication.java @@ -0,0 +1,12 @@ +package com.baeldung.couchbase; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ReactiveCouchbaseApplication { + + public static void main(String[] args) { + SpringApplication.run(ReactiveCouchbaseApplication.class, args); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java new file mode 100644 index 0000000000..480c96e986 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/CouchbaseProperties.java @@ -0,0 +1,40 @@ +package com.baeldung.couchbase.configuration; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; + +import java.util.Collections; +import java.util.List; + +@Configuration +public class CouchbaseProperties { + + private final List bootstrapHosts; + private final String bucketName; + private final String bucketPassword; + private final int port; + + public CouchbaseProperties(@Value("${spring.couchbase.bootstrap-hosts}") final List bootstrapHosts, @Value("${spring.couchbase.bucket.name}") final String bucketName, @Value("${spring.couchbase.bucket.password}") final String bucketPassword, + @Value("${spring.couchbase.port}") final int port) { + this.bootstrapHosts = Collections.unmodifiableList(bootstrapHosts); + this.bucketName = bucketName; + this.bucketPassword = bucketPassword; + this.port = port; + } + + public List getBootstrapHosts() { + return bootstrapHosts; + } + + public String getBucketName() { + return bucketName; + } + + public String getBucketPassword() { + return bucketPassword; + } + + public int getPort() { + return port; + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java new file mode 100644 index 0000000000..059bd36cae --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/N1QLReactiveCouchbaseConfiguration.java @@ -0,0 +1,15 @@ +package com.baeldung.couchbase.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.couchbase.repository.config.EnableReactiveCouchbaseRepositories; + +@Configuration +@EnableReactiveCouchbaseRepositories("com.baeldung.couchbase.domain.repository.n1ql") +@Primary +public class N1QLReactiveCouchbaseConfiguration extends ReactiveCouchbaseConfiguration { + + public N1QLReactiveCouchbaseConfiguration(CouchbaseProperties couchbaseProperties) { + super(couchbaseProperties); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java new file mode 100644 index 0000000000..2f3b5486d8 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ReactiveCouchbaseConfiguration.java @@ -0,0 +1,39 @@ +package com.baeldung.couchbase.configuration; + +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; +import org.springframework.data.couchbase.config.AbstractReactiveCouchbaseConfiguration; + +import java.util.List; + +public abstract class ReactiveCouchbaseConfiguration extends AbstractReactiveCouchbaseConfiguration { + + private CouchbaseProperties couchbaseProperties; + + public ReactiveCouchbaseConfiguration(final CouchbaseProperties couchbaseProperties) { + this.couchbaseProperties = couchbaseProperties; + } + + @Override + protected List getBootstrapHosts() { + return couchbaseProperties.getBootstrapHosts(); + } + + @Override + protected String getBucketName() { + return couchbaseProperties.getBucketName(); + } + + @Override + protected String getBucketPassword() { + return couchbaseProperties.getBucketPassword(); + } + + @Override + public CouchbaseEnvironment couchbaseEnvironment() { + return DefaultCouchbaseEnvironment + .builder() + .bootstrapHttpDirectPort(couchbaseProperties.getPort()) + .build(); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java new file mode 100644 index 0000000000..9b4d9b0319 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/configuration/ViewReactiveCouchbaseConfiguration.java @@ -0,0 +1,13 @@ +package com.baeldung.couchbase.configuration; + +import org.springframework.context.annotation.Configuration; +import org.springframework.data.couchbase.repository.config.EnableReactiveCouchbaseRepositories; + +@Configuration +@EnableReactiveCouchbaseRepositories("com.baeldung.couchbase.domain.repository.view") +public class ViewReactiveCouchbaseConfiguration extends ReactiveCouchbaseConfiguration { + + public ViewReactiveCouchbaseConfiguration(CouchbaseProperties couchbaseProperties) { + super(couchbaseProperties); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java new file mode 100644 index 0000000000..285de34df8 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/Person.java @@ -0,0 +1,43 @@ +package com.baeldung.couchbase.domain; + +import org.springframework.data.annotation.Id; +import org.springframework.data.couchbase.core.mapping.Document; + +import java.util.Objects; +import java.util.UUID; + +@Document +public class Person { + + @Id private UUID id; + private String firstName; + + public Person(final UUID id, final String firstName) { + this.id = id; + this.firstName = firstName; + } + + private Person() { + } + + public UUID getId() { + return id; + } + + public String getFirstName() { + return firstName; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Person person = (Person) o; + return Objects.equals(id, person.id) && Objects.equals(firstName, person.firstName); + } + + @Override + public int hashCode() { + return Objects.hash(id, firstName); + } +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java new file mode 100644 index 0000000000..6f73a77ceb --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepository.java @@ -0,0 +1,16 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +import org.springframework.data.couchbase.core.query.N1qlPrimaryIndexed; +import org.springframework.data.repository.reactive.ReactiveCrudRepository; +import org.springframework.stereotype.Repository; +import reactor.core.publisher.Flux; + +import java.util.UUID; + +@Repository +@N1qlPrimaryIndexed +public interface N1QLPersonRepository extends ReactiveCrudRepository { + + Flux findAllByFirstName(final String firstName); +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java new file mode 100644 index 0000000000..57dd149425 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepository.java @@ -0,0 +1,13 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +import org.springframework.data.couchbase.core.query.N1qlPrimaryIndexed; +import org.springframework.data.repository.reactive.ReactiveSortingRepository; +import org.springframework.stereotype.Repository; + +import java.util.UUID; + +@Repository +@N1qlPrimaryIndexed +public interface N1QLSortingPersonRepository extends ReactiveSortingRepository { +} diff --git a/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java new file mode 100644 index 0000000000..28a7ec1b78 --- /dev/null +++ b/spring-5-data-reactive/src/main/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepository.java @@ -0,0 +1,20 @@ +package com.baeldung.couchbase.domain.repository.view; + +import com.baeldung.couchbase.domain.Person; +import org.springframework.data.couchbase.core.query.View; +import org.springframework.data.couchbase.core.query.ViewIndexed; +import org.springframework.data.repository.reactive.ReactiveCrudRepository; +import org.springframework.stereotype.Repository; +import reactor.core.publisher.Flux; + +import java.util.UUID; + +@Repository +@ViewIndexed(designDoc = ViewPersonRepository.DESIGN_DOCUMENT) +public interface ViewPersonRepository extends ReactiveCrudRepository { + + String DESIGN_DOCUMENT = "persons"; + + @View(designDocument = ViewPersonRepository.DESIGN_DOCUMENT) + Flux findByFirstName(String firstName); +} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java new file mode 100644 index 0000000000..2a09fce4b0 --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/CouchbaseMockConfiguration.java @@ -0,0 +1,54 @@ +package com.baeldung.couchbase.domain.repository; + +import com.baeldung.couchbase.configuration.CouchbaseProperties; +import com.couchbase.mock.Bucket; +import com.couchbase.mock.BucketConfiguration; +import com.couchbase.mock.CouchbaseMock; +import org.springframework.boot.test.context.TestConfiguration; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.Collections; + +@TestConfiguration +public class CouchbaseMockConfiguration { + + private CouchbaseMock couchbaseMock; + + public CouchbaseMockConfiguration(final CouchbaseProperties couchbaseProperties) { + final BucketConfiguration bucketConfiguration = new BucketConfiguration(); + bucketConfiguration.numNodes = 1; + bucketConfiguration.numReplicas = 1; + bucketConfiguration.numVBuckets = 1024; + bucketConfiguration.name = couchbaseProperties.getBucketName(); + bucketConfiguration.type = Bucket.BucketType.COUCHBASE; + bucketConfiguration.password = couchbaseProperties.getBucketPassword(); + + try { + couchbaseMock = new CouchbaseMock(couchbaseProperties.getPort(), Collections.singletonList(bucketConfiguration)); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + } + + @PostConstruct + public void postConstruct() { + try { + couchbaseMock.start(); + } catch (final IOException ex) { + throw new UncheckedIOException(ex); + } + try { + couchbaseMock.waitForStartup(); + } catch (final InterruptedException ex) { + throw new RuntimeException(ex); + } + } + + @PreDestroy + public void preDestroy() { + couchbaseMock.stop(); + } +} diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java new file mode 100644 index 0000000000..0c1b6bde6c --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLPersonRepositoryLiveTest.java @@ -0,0 +1,55 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +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 reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class N1QLPersonRepositoryLiveTest { + + @Autowired private N1QLPersonRepository personRepository; + + @Test + public void shouldFindAll_byLastName() { + //Given + final String firstName = "John"; + final Person matchingPerson = new Person(UUID.randomUUID(), firstName); + final Person nonMatchingPerson = new Person(UUID.randomUUID(), "NotJohn"); + wrap(() -> { + personRepository + .save(matchingPerson) + .subscribe(); + personRepository + .save(nonMatchingPerson) + .subscribe(); + //When + final Flux allByFirstName = personRepository.findAllByFirstName(firstName); + //Then + StepVerifier + .create(allByFirstName) + .expectNext(matchingPerson) + .verifyComplete(); + + }, matchingPerson, nonMatchingPerson); + } + + private void wrap(final Runnable runnable, final Person... people) { + try { + runnable.run(); + } finally { + for (final Person person : people) { + personRepository + .delete(person) + .subscribe(); + } + } + } +} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java new file mode 100644 index 0000000000..4ba2206e0a --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/n1ql/N1QLSortingPersonRepositoryLiveTest.java @@ -0,0 +1,60 @@ +package com.baeldung.couchbase.domain.repository.n1ql; + +import com.baeldung.couchbase.domain.Person; +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.data.domain.Sort; +import org.springframework.test.context.junit4.SpringRunner; +import reactor.core.publisher.Flux; +import reactor.test.StepVerifier; + +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class N1QLSortingPersonRepositoryLiveTest { + + @Autowired private N1QLSortingPersonRepository personRepository; + + @Test + public void shouldFindAll_sortedByFirstName() { + //Given + final Person firstPerson = new Person(UUID.randomUUID(), "John"); + final Person secondPerson = new Person(UUID.randomUUID(), "Mikki"); + wrap(() -> { + personRepository + .save(firstPerson) + .subscribe(); + personRepository + .save(secondPerson) + .subscribe(); + //When + final Flux allByFirstName = personRepository.findAll(Sort.by(Sort.Direction.DESC, "firstName")); + //Then + StepVerifier + .create(allByFirstName) + .expectNextMatches(person -> person + .getFirstName() + .equals(secondPerson.getFirstName())) + .expectNextMatches(person -> person + .getFirstName() + .equals(firstPerson.getFirstName())) + .verifyComplete(); + }, firstPerson, secondPerson); + } + + //workaround for deleteAll() + private void wrap(final Runnable runnable, final Person... people) { + try { + runnable.run(); + } finally { + for (final Person person : people) { + personRepository + .delete(person) + .subscribe(); + } + } + } +} \ No newline at end of file diff --git a/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java new file mode 100644 index 0000000000..712e7b0d37 --- /dev/null +++ b/spring-5-data-reactive/src/test/java/com/baeldung/couchbase/domain/repository/view/ViewPersonRepositoryIntegrationTest.java @@ -0,0 +1,79 @@ +package com.baeldung.couchbase.domain.repository.view; + +import com.baeldung.couchbase.configuration.CouchbaseProperties; +import com.baeldung.couchbase.configuration.ViewReactiveCouchbaseConfiguration; +import com.baeldung.couchbase.domain.Person; +import com.baeldung.couchbase.domain.repository.CouchbaseMockConfiguration; +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 reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.test.StepVerifier; + +import java.util.UUID; + +@RunWith(SpringRunner.class) +@SpringBootTest(properties = { "spring.couchbase.port=10010" }, classes = { ViewReactiveCouchbaseConfiguration.class, CouchbaseProperties.class, CouchbaseMockConfiguration.class }) +public class ViewPersonRepositoryIntegrationTest { + + @Autowired private ViewPersonRepository personRepository; + + @Test + public void shouldSavePerson_findById_thenDeleteIt() { + //Given + final UUID id = UUID.randomUUID(); + final Person person = new Person(id, "John"); + wrap(() -> { + personRepository + .save(person) + .subscribe(); + //When + final Mono byId = personRepository.findById(id); + //Then + StepVerifier + .create(byId) + .expectNextMatches(result -> result + .getId() + .equals(id)) + .expectComplete() + .verify(); + }, person); + } + + @Test + public void shouldFindAll_thenDeleteIt() { + //Given + final Person person = new Person(UUID.randomUUID(), "John"); + final Person secondPerson = new Person(UUID.randomUUID(), "Mikki"); + wrap(() -> { + personRepository + .save(person) + .subscribe(); + personRepository + .save(secondPerson) + .subscribe(); + //When + final Flux all = personRepository.findAll(); + //Then + StepVerifier + .create(all) + .expectNextCount(2) + .verifyComplete(); + }, person, secondPerson); + } + + private void wrap(final Runnable runnable, final Person... people) { + try { + runnable.run(); + } finally { + for (final Person person : people) { + personRepository + .delete(person) + .subscribe(); + } + } + } +} \ No newline at end of file diff --git a/spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java b/spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java similarity index 89% rename from spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java rename to spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java index 0bd8637681..7f8736ae87 100644 --- a/spring-4/src/test/java/com/baeldung/connectionpool/ApplicationWithHikariConnectionPool.java +++ b/spring-5/src/test/java/com/baeldung/hikari/ApplicationWithHikariConnectionPool.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java b/spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java similarity index 94% rename from spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java rename to spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java index d91cca85ee..0c4b91bd8a 100644 --- a/spring-5/src/test/java/com/baeldung/connectionpool/HikariIntegrationTest.java +++ b/spring-5/src/test/java/com/baeldung/hikari/HikariIntegrationTest.java @@ -1,4 +1,4 @@ -package com.baeldung.connectionpool; +package com.baeldung.hikari; import static org.junit.Assert.*; diff --git a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java similarity index 94% rename from spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java rename to spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java index b5fe494ee2..11d3806b6e 100644 --- a/spring-all/src/main/java/org/baeldung/spring/config/ScopesConfig.java +++ b/spring-all/src/main/java/org/baeldung/scopes/ScopesConfig.java @@ -1,7 +1,5 @@ -package org.baeldung.spring.config; +package org.baeldung.scopes; -import org.baeldung.scopes.HelloMessageGenerator; -import org.baeldung.scopes.Person; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/Application.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java similarity index 78% rename from spring-boot/src/main/java/com/baeldung/validation/application/Application.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java index af8f768193..b37eec9da0 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/Application.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/Application.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application; +package com.baeldung.beanvalidation.application; + +import com.baeldung.beanvalidation.application.entities.User; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.entities.User; -import com.baeldung.validation.application.repositories.UserRepository; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java similarity index 87% rename from spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java index a4aeefb70b..0c47e27e25 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/controllers/UserController.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/controllers/UserController.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application.controllers; +package com.baeldung.beanvalidation.application.controllers; + +import com.baeldung.beanvalidation.application.entities.User; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.entities.User; -import com.baeldung.validation.application.repositories.UserRepository; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java similarity index 90% rename from spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java index 529368f132..8233d08f4e 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/entities/User.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/entities/User.java @@ -1,4 +1,4 @@ -package com.baeldung.validation.application.entities; +package com.baeldung.beanvalidation.application.entities; import javax.persistence.Entity; import javax.persistence.GeneratedValue; diff --git a/spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java similarity index 59% rename from spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java rename to spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java index b579addcaa..8bf7a9f8b2 100644 --- a/spring-boot/src/main/java/com/baeldung/validation/application/repositories/UserRepository.java +++ b/spring-boot/src/main/java/com/baeldung/beanvalidation/application/repositories/UserRepository.java @@ -1,8 +1,9 @@ -package com.baeldung.validation.application.repositories; +package com.baeldung.beanvalidation.application.repositories; -import com.baeldung.validation.application.entities.User; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Repository; +import com.baeldung.beanvalidation.application.entities.User; + @Repository public interface UserRepository extends CrudRepository {} diff --git a/spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java b/spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java similarity index 91% rename from spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java rename to spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java index 77a230ee6c..07d9b0807e 100644 --- a/spring-boot/src/test/java/com/baeldung/validation/application/UserControllerIntegrationTest.java +++ b/spring-boot/src/test/java/com/baeldung/beanvalidation/application/UserControllerIntegrationTest.java @@ -1,7 +1,8 @@ -package com.baeldung.validation.application; +package com.baeldung.beanvalidation.application; + +import com.baeldung.beanvalidation.application.controllers.UserController; +import com.baeldung.beanvalidation.application.repositories.UserRepository; -import com.baeldung.validation.application.controllers.UserController; -import com.baeldung.validation.application.repositories.UserRepository; import java.nio.charset.Charset; import static org.assertj.core.api.Assertions.assertThat; import org.hamcrest.core.Is; diff --git a/spring-core/src/main/java/com/baeldung/definition/Config.java b/spring-core/src/main/java/com/baeldung/springbean/Config.java similarity index 74% rename from spring-core/src/main/java/com/baeldung/definition/Config.java rename to spring-core/src/main/java/com/baeldung/springbean/Config.java index 126e6259ca..27275dbb0f 100644 --- a/spring-core/src/main/java/com/baeldung/definition/Config.java +++ b/spring-core/src/main/java/com/baeldung/springbean/Config.java @@ -1,11 +1,12 @@ -package com.baeldung.definition; +package com.baeldung.springbean; -import com.baeldung.definition.domain.Address; -import com.baeldung.definition.domain.Company; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import com.baeldung.springbean.domain.Address; +import com.baeldung.springbean.domain.Company; + @Configuration @ComponentScan(basePackageClasses = Company.class) public class Config { diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java b/spring-core/src/main/java/com/baeldung/springbean/domain/Address.java similarity index 84% rename from spring-core/src/main/java/com/baeldung/definition/domain/Address.java rename to spring-core/src/main/java/com/baeldung/springbean/domain/Address.java index 91be18398e..5704be4bf8 100644 --- a/spring-core/src/main/java/com/baeldung/definition/domain/Address.java +++ b/spring-core/src/main/java/com/baeldung/springbean/domain/Address.java @@ -1,4 +1,4 @@ -package com.baeldung.definition.domain; +package com.baeldung.springbean.domain; import lombok.Data; diff --git a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java b/spring-core/src/main/java/com/baeldung/springbean/domain/Company.java similarity index 84% rename from spring-core/src/main/java/com/baeldung/definition/domain/Company.java rename to spring-core/src/main/java/com/baeldung/springbean/domain/Company.java index eabde8afdf..68c177dab7 100644 --- a/spring-core/src/main/java/com/baeldung/definition/domain/Company.java +++ b/spring-core/src/main/java/com/baeldung/springbean/domain/Company.java @@ -1,4 +1,4 @@ -package com.baeldung.definition.domain; +package com.baeldung.springbean.domain; import lombok.Data; import org.springframework.stereotype.Component; diff --git a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java b/spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java similarity index 88% rename from spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java rename to spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java index 0057611308..e148ab2dd9 100644 --- a/spring-core/src/test/java/com/baeldung/definition/SpringBeanIntegrationTest.java +++ b/spring-core/src/test/java/com/baeldung/springbean/SpringBeanIntegrationTest.java @@ -1,11 +1,12 @@ -package com.baeldung.definition; +package com.baeldung.springbean; + +import static org.junit.Assert.assertEquals; -import com.baeldung.definition.domain.Company; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import static org.junit.Assert.assertEquals; +import com.baeldung.springbean.domain.Company; public class SpringBeanIntegrationTest { @Test diff --git a/spring-data-rest-querydsl/pom.xml b/spring-data-rest-querydsl/pom.xml index 55ff78f0cb..2c75990c65 100644 --- a/spring-data-rest-querydsl/pom.xml +++ b/spring-data-rest-querydsl/pom.xml @@ -1,5 +1,6 @@ - 4.0.0 com.baeldung @@ -44,6 +45,11 @@ spring-boot-starter-test test + + com.h2database + h2 + test + diff --git a/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java b/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java index 28d084a4dc..4b2f567090 100644 --- a/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java +++ b/spring-data-rest-querydsl/src/main/java/com/baeldung/Application.java @@ -13,6 +13,9 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories; import javax.annotation.PostConstruct; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + */ @SpringBootApplication @EntityScan("com.baeldung.entity") @EnableJpaRepositories("com.baeldung.controller.repository") diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java similarity index 60% rename from spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java rename to spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java index 7f906bdbcd..48c4630fa5 100644 --- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ b/spring-data-rest-querydsl/src/test/java/com/baeldung/SpringContextTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,9 +7,13 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.Application; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) -public class SpringContextIntegrationTest { +public class SpringContextTest { @Test public void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java deleted file mode 100644 index 5cb0a8167e..0000000000 --- a/spring-data-rest-querydsl/src/test/java/org/baeldung/SpringContextLiveTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.Application; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -public class SpringContextLiveTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-data-rest-querydsl/src/test/resources/application.yml b/spring-data-rest-querydsl/src/test/resources/application.yml new file mode 100644 index 0000000000..33b7231838 --- /dev/null +++ b/spring-data-rest-querydsl/src/test/resources/application.yml @@ -0,0 +1,11 @@ +spring: + datasource: + url: jdbc:h2:mem:springcloud + username: sa + password: + jpa: + hibernate: + ddl-auto: create-drop + properties: + hibernate: + dialect: org.hibernate.dialect.H2Dialect \ No newline at end of file diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java similarity index 71% rename from spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java index bbd3b6c2ba..4d6724f10f 100644 --- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-ejb/spring-ejb-client/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,6 +7,11 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.springejbclient.SpringEjbClientApplication; +/** + * This Live Test requires: + * * run the `spring-ejb-remote` module with the following command: `mvn clean package cargo:run -Pwildfly-standalone` + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = SpringEjbClientApplication.class) public class SpringContextLiveTest { diff --git a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java b/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 4d2d83646d..0000000000 --- a/spring-ejb/spring-ejb-client/src/test/java/org/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.springejbclient.SpringEjbClientApplication; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = SpringEjbClientApplication.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-ejb/spring-ejb-remote/pom.xml b/spring-ejb/spring-ejb-remote/pom.xml index 4f4ddb0b54..4a365180f2 100644 --- a/spring-ejb/spring-ejb-remote/pom.xml +++ b/spring-ejb/spring-ejb-remote/pom.xml @@ -1,11 +1,12 @@ - 4.0.0 spring-ejb-remote - spring-ejb-remote + spring-ejb-remote ejb - + com.baeldung.spring.ejb spring-ejb @@ -46,7 +47,7 @@ wildfly10x - http://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip + https://download.jboss.org/wildfly/12.0.0.Final/wildfly-12.0.0.Final.zip diff --git a/spring-mvc-java/pom.xml b/spring-mvc-java/pom.xml index cb16e91bc4..ea0acdcb00 100644 --- a/spring-mvc-java/pom.xml +++ b/spring-mvc-java/pom.xml @@ -8,17 +8,20 @@ war - parent-spring-5 + parent-boot-2 com.baeldung 0.0.1-SNAPSHOT - ../parent-spring-5 + ../parent-boot-2 - org.springframework - spring-webmvc - ${spring.version} + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-tomcat javax.servlet @@ -33,7 +36,11 @@ javax.servlet jstl - ${jstl.version} + + + org.apache.tomcat.embed + tomcat-embed-jasper + provided @@ -55,17 +62,6 @@ - - commons-fileupload - commons-fileupload - ${commons-fileupload.version} - - - commons-io - commons-io - - - net.sourceforge.htmlunit htmlunit @@ -106,9 +102,8 @@ 2.4.0 - org.springframework - spring-test - ${spring.version} + org.springframework.boot + spring-boot-starter-test test @@ -134,15 +129,8 @@ 2.8.5 - org.springframework - spring-websocket - ${spring.version} - - - - org.springframework - spring-messaging - ${spring.version} + org.springframework.boot + spring-boot-starter-websocket org.glassfish @@ -296,6 +284,7 @@ 3.16-beta1 3.0.1-b09 + com.baeldung.SpringMVCApplication diff --git a/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java b/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java new file mode 100644 index 0000000000..a456dc125e --- /dev/null +++ b/spring-mvc-java/src/main/java/com/baeldung/SpringMVCApplication.java @@ -0,0 +1,12 @@ +package com.baeldung; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +@SpringBootApplication +public class SpringMVCApplication extends SpringBootServletInitializer { + public static void main(String[] args) { + SpringApplication.run(SpringMVCApplication.class, args); + } +} \ No newline at end of file diff --git a/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java b/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java index 7ae37404be..169d664471 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java +++ b/spring-mvc-java/src/main/java/com/baeldung/aop/LoggingAspect.java @@ -23,15 +23,15 @@ public class LoggingAspect { } }; - @Pointcut("@target(org.springframework.stereotype.Repository)") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.*(..))") public void repositoryMethods() { } - @Pointcut("@annotation(com.baeldung.aop.annotations.Loggable)") + @Pointcut("within(com.baeldung..*) && @annotation(com.baeldung.aop.annotations.Loggable)") public void loggableMethods() { } - @Pointcut("@args(com.baeldung.aop.annotations.Entity)") + @Pointcut("within(com.baeldung..*) && @args(com.baeldung.aop.annotations.Entity)") public void methodsAcceptingEntities() { } diff --git a/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java b/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java index 1f2076adff..8f374cc1e5 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java +++ b/spring-mvc-java/src/main/java/com/baeldung/aop/PerformanceAspect.java @@ -15,7 +15,7 @@ public class PerformanceAspect { private static Logger logger = Logger.getLogger(PerformanceAspect.class.getName()); - @Pointcut("within(@org.springframework.stereotype.Repository *)") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.*(..))") public void repositoryClassMethods() { } diff --git a/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java b/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java index 7791c63e7b..a45402dc18 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java +++ b/spring-mvc-java/src/main/java/com/baeldung/aop/PublishingAspect.java @@ -20,11 +20,11 @@ public class PublishingAspect { this.eventPublisher = eventPublisher; } - @Pointcut("@target(org.springframework.stereotype.Repository)") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.*(..))") public void repositoryMethods() { } - @Pointcut("execution(* *..create*(Long,..))") + @Pointcut("within(com.baeldung..*) && execution(* com.baeldung.dao.FooDao.create*(Long,..))") public void firstLongParamMethods() { } diff --git a/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java b/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java deleted file mode 100644 index eec12f466f..0000000000 --- a/spring-mvc-java/src/main/java/com/baeldung/config/AppInitializer.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.baeldung.config; - -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.ContextLoaderListener; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -public class AppInitializer implements WebApplicationInitializer { - - @Override - public void onStartup(ServletContext container) throws ServletException { - AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext(); - - context.scan("com.baeldung"); - - container.addListener(new ContextLoaderListener(context)); - - ServletRegistration.Dynamic dispatcher = container.addServlet("mvc", new DispatcherServlet(context)); - dispatcher.setLoadOnStartup(1); - dispatcher.addMapping("/"); - - // final MultipartConfigElement multipartConfigElement = new - // MultipartConfigElement(TMP_FOLDER, MAX_UPLOAD_SIZE, - // MAX_UPLOAD_SIZE * 2, MAX_UPLOAD_SIZE / 2); - // - // appServlet.setMultipartConfig(multipartConfigElement); - } - -} diff --git a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java index 44fef92917..96e300464b 100644 --- a/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java +++ b/spring-mvc-java/src/main/java/com/baeldung/spring/web/config/WebConfig.java @@ -3,9 +3,6 @@ package com.baeldung.spring.web.config; import java.util.ArrayList; import java.util.List; -import javax.servlet.ServletContext; - -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; @@ -15,7 +12,6 @@ import org.springframework.context.support.ResourceBundleMessageSource; import org.springframework.http.MediaType; import org.springframework.http.converter.ByteArrayHttpMessageConverter; import org.springframework.http.converter.HttpMessageConverter; -import org.springframework.web.multipart.commons.CommonsMultipartResolver; import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.PathMatchConfigurer; @@ -26,8 +22,9 @@ import org.springframework.web.servlet.view.InternalResourceViewResolver; import org.springframework.web.servlet.view.JstlView; import org.springframework.web.util.UrlPathHelper; import org.thymeleaf.spring4.SpringTemplateEngine; +import org.thymeleaf.spring4.templateresolver.SpringResourceTemplateResolver; import org.thymeleaf.spring4.view.ThymeleafViewResolver; -import org.thymeleaf.templateresolver.ServletContextTemplateResolver; +import org.thymeleaf.templateresolver.ITemplateResolver; import com.baeldung.excel.ExcelPOIHelper; @@ -35,9 +32,6 @@ import com.baeldung.excel.ExcelPOIHelper; @Configuration @ComponentScan(basePackages = { "com.baeldung.web.controller" }) public class WebConfig implements WebMvcConfigurer { - - @Autowired - private ServletContext ctx; @Override public void addViewControllers(final ViewControllerRegistry registry) { @@ -64,11 +58,11 @@ public class WebConfig implements WebMvcConfigurer { @Bean @Description("Thymeleaf template resolver serving HTML 5") - public ServletContextTemplateResolver templateResolver() { - final ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(ctx); + public ITemplateResolver templateResolver() { + final SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver(); templateResolver.setPrefix("/WEB-INF/templates/"); templateResolver.setSuffix(".html"); - templateResolver.setTemplateMode("HTML5"); + templateResolver.setTemplateMode("HTML"); return templateResolver; } @@ -92,15 +86,6 @@ public class WebConfig implements WebMvcConfigurer { public void addResourceHandlers(final ResourceHandlerRegistry registry) { registry.addResourceHandler("/resources/**").addResourceLocations("/resources/"); } - - @Bean(name = "multipartResolver") - public CommonsMultipartResolver multipartResolver() { - - final CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); - multipartResolver.setMaxUploadSize(100000); - - return multipartResolver; - } @Override public void extendMessageConverters(final List> converters) { diff --git a/spring-mvc-java/src/main/resources/application.properties b/spring-mvc-java/src/main/resources/application.properties new file mode 100644 index 0000000000..00c491c271 --- /dev/null +++ b/spring-mvc-java/src/main/resources/application.properties @@ -0,0 +1,5 @@ +server.servlet.context-path=/spring-mvc-java +spring.servlet.multipart.max-file-size=1MB +spring.servlet.multipart.max-request-size=1MB +spring.servlet.multipart.enabled=true +spring.servlet.multipart.location=${java.io.tmpdir} \ No newline at end of file diff --git a/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java index 4c06917325..ae91d4dc1e 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -3,15 +3,12 @@ package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.config.AppInitializer; +import com.baeldung.config.TestConfig; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AppInitializer.class }, loader = AnnotationConfigContextLoader.class) -@WebAppConfiguration +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {TestConfig.class}) public class SpringContextIntegrationTest { @Test diff --git a/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java b/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java index 9777addb61..8943ecb548 100644 --- a/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-mvc-java/src/test/java/com/baeldung/SpringContextTest.java @@ -3,15 +3,12 @@ package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.AnnotationConfigContextLoader; -import org.springframework.test.context.web.WebAppConfiguration; +import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.config.AppInitializer; +import com.baeldung.config.TestConfig; -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AppInitializer.class }, loader = AnnotationConfigContextLoader.class) -@WebAppConfiguration +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = {TestConfig.class}) public class SpringContextTest { @Test diff --git a/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java new file mode 100644 index 0000000000..dfa50fcb26 --- /dev/null +++ b/spring-mvc-xml/src/main/java/com/baeldung/spring/controller/GreetingController.java @@ -0,0 +1,16 @@ +package com.baeldung.spring.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +@Controller +public class GreetingController { + + @RequestMapping(value = "/greeting", method = RequestMethod.GET) + public String get(ModelMap model) { + model.addAttribute("message", "Hello, World!"); + return "greeting"; + } +} \ No newline at end of file diff --git a/spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp b/spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp new file mode 100644 index 0000000000..ac17c75ab7 --- /dev/null +++ b/spring-mvc-xml/src/main/webapp/WEB-INF/view/greeting.jsp @@ -0,0 +1,9 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Greeting + + +

${message}

+ + \ No newline at end of file diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java new file mode 100644 index 0000000000..4904873be2 --- /dev/null +++ b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -0,0 +1,23 @@ +package com.baeldung; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +import com.baeldung.server.JmsServer; + +/** + * This Live Test requires: + * * the `com.baeldung:remoting-http-api:jar:1.0-SNAPSHOT` artifact accessible. For that we can run `mvn clean install` in the 'spring-remoting/remoting-http/remoting-http-api' module. + * * an ActiveMQ instance running (e.g. `docker run -p 61616:61616 -p 8161:8161 --name bael-activemq rmohr/activemq`) + * + */ +@SpringBootTest(classes = JmsServer.class) +@RunWith(SpringRunner.class) +public class SpringContextLiveTest { + + @Test + public void whenSpringContextIsBootstrapped_thenNoExceptions() { + } +} diff --git a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java b/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java deleted file mode 100644 index b806f21c27..0000000000 --- a/spring-remoting/remoting-jms/remoting-jms-server/src/test/java/org/baeldung/SpringContextManualTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.server.JmsServer; - -@SpringBootTest(classes = JmsServer.class) -@RunWith(SpringRunner.class) -public class SpringContextManualTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java similarity index 56% rename from spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java rename to spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java index 3bace4cd1e..73f7592dcc 100644 --- a/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/org/baeldung/SpringContextLiveTest.java +++ b/spring-remoting/remoting-rmi/remoting-rmi-client/src/test/java/com/baeldung/SpringContextLiveTest.java @@ -1,4 +1,4 @@ -package org.baeldung; +package com.baeldung; import org.junit.Test; import org.junit.runner.RunWith; @@ -7,6 +7,12 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.client.RmiClient; +/** + * This Live Test requires: + * * the `com.baeldung:remoting-http-api:jar:1.0-SNAPSHOT` artifact accessible. For that we can run `mvn clean install` in the 'spring-remoting/remoting-http/remoting-http-api' module. + * * the 'spring-remoting\remoting-rmi\remoting-rmi-server' service running + * + */ @SpringBootTest(classes = RmiClient.class) @RunWith(SpringRunner.class) public class SpringContextLiveTest { diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java deleted file mode 100644 index 18fabce5ca..0000000000 --- a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit4.SpringRunner; - -import com.baeldung.spring.Application; - -@RunWith(SpringRunner.class) -@SpringBootTest(classes = Application.class) -public class SpringContextIntegrationTest { - - @Test - public void whenSpringContextIsBootstrapped_thenNoExceptions() { - } -} diff --git a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java index 57886a232a..de83fb663a 100644 --- a/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-rest-query-language/src/test/java/com/baeldung/SpringContextTest.java @@ -7,6 +7,10 @@ import org.springframework.test.context.junit4.SpringRunner; import com.baeldung.spring.Application; +/** + * Note: In the IDE, remember to generate query type classes before running the Integration Test (e.g. in Eclipse right-click on the project > Run As > Maven generate sources) + * + */ @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) public class SpringContextTest { diff --git a/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java b/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java index 2c11e36141..90012ed054 100644 --- a/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java +++ b/spring-rest-simple/src/main/java/com/baeldung/requestmapping/FooMappingExamplesController.java @@ -1,6 +1,8 @@ package com.baeldung.requestmapping; +import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @@ -97,5 +99,29 @@ public class FooMappingExamplesController { public String putAndPostFoos() { return "Advanced - PUT and POST within single method"; } + + // --- Ambiguous Mapping + + @GetMapping(value = "foos/duplicate" ) + public String duplicate() { + return "Duplicate"; + } + + // uncomment for exception of type java.lang.IllegalStateException: Ambiguous mapping -} + // @GetMapping(value = "foos/duplicate" ) + // public String duplicateEx() { + // return "Duplicate"; + // } + + @GetMapping(value = "foos/duplicate/xml", produces = MediaType.APPLICATION_XML_VALUE) + public String duplicateXml() { + return "Duplicate Xml"; + } + + @GetMapping(value = "foos/duplicate/json", produces = MediaType.APPLICATION_JSON_VALUE) + public String duplicateJson() { + return "Duplicate Json"; + } + +} \ No newline at end of file diff --git a/spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java b/spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java similarity index 92% rename from spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java rename to spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java index 75f4d714e2..3fce0f1289 100644 --- a/spring-rest/src/main/java/com/baeldung/custom/CustomApplication.java +++ b/spring-rest/src/main/java/com/baeldung/changeport/CustomApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.custom; +package com.baeldung.changeport; import java.util.Collections; diff --git a/spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java b/spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java similarity index 92% rename from spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java rename to spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java index 978e7c8a82..f3610aeac6 100644 --- a/spring-rest/src/main/java/com/baeldung/custom/ServerPortCustomizer.java +++ b/spring-rest/src/main/java/com/baeldung/changeport/ServerPortCustomizer.java @@ -1,4 +1,4 @@ -package com.baeldung.custom; +package com.baeldung.changeport; import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.springframework.boot.web.server.WebServerFactoryCustomizer; diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java index f04106c1e1..3c2cde4268 100644 --- a/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java +++ b/spring-rest/src/test/java/com/baeldung/SpringContextIntegrationTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.custom.CustomApplication; +import com.baeldung.changeport.CustomApplication; import com.baeldung.produceimage.ImageApplication; import com.baeldung.propertyeditor.PropertyEditorApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; diff --git a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java index 4b2024e207..0f39fc3983 100644 --- a/spring-rest/src/test/java/com/baeldung/SpringContextTest.java +++ b/spring-rest/src/test/java/com/baeldung/SpringContextTest.java @@ -5,7 +5,7 @@ import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; -import com.baeldung.custom.CustomApplication; +import com.baeldung.changeport.CustomApplication; import com.baeldung.produceimage.ImageApplication; import com.baeldung.propertyeditor.PropertyEditorApplication; import com.baeldung.responseheaders.ResponseHeadersApplication; diff --git a/spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java b/spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java similarity index 96% rename from spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java rename to spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java index de18f6db09..1347cb0c7a 100644 --- a/spring-resttemplate/src/test/java/org/baeldung/resttemplate/PersonAPILiveTest.java +++ b/spring-resttemplate/src/test/java/org/baeldung/resttemplate/postjson/PersonAPILiveTest.java @@ -1,10 +1,11 @@ -package org.baeldung.resttemplate; +package org.baeldung.resttemplate.postjson; import static org.junit.Assert.assertNotNull; import java.io.IOException; import java.net.URI; +import org.baeldung.resttemplate.RestTemplateConfigurationApplication; import org.baeldung.resttemplate.web.dto.Person; import org.json.JSONException; import org.json.JSONObject; diff --git a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java b/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java similarity index 91% rename from spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java rename to spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java index c2a4b35df0..ec1ba8dcd9 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/SpringSessionApplication.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/SpringSessionApplication.java @@ -1,4 +1,4 @@ -package com.baeldung; +package com.baeldung.session; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java b/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java similarity index 97% rename from spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java rename to spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java index f4f876af9c..c30bfa5506 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/security/SessionFilter.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/filter/SessionFilter.java @@ -1,4 +1,4 @@ -package com.baeldung.security; +package com.baeldung.session.filter; import java.io.IOException; import java.util.Arrays; diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java similarity index 98% rename from spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java rename to spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java index a922ba6f7f..35b53a0e7f 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/spring/SecSecurityConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/security/config/SecSecurityConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.session.security.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java similarity index 93% rename from spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java rename to spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java index 1353ee25d0..82199a9e4e 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/web/SessionRestController.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/SessionRestController.java @@ -1,4 +1,4 @@ -package com.baeldung.web; +package com.baeldung.session.web; import javax.servlet.http.HttpSession; diff --git a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java b/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java similarity index 96% rename from spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java rename to spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java index 38a4f3f81b..4db6d07872 100644 --- a/spring-security-mvc/src/main/java/com/baeldung/spring/MvcConfig.java +++ b/spring-security-mvc/src/main/java/com/baeldung/session/web/config/MvcConfig.java @@ -1,4 +1,4 @@ -package com.baeldung.spring; +package com.baeldung.session.web.config; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; diff --git a/spring-security-rest/src/main/java/org/baeldung/web/ApiError.java b/spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java similarity index 97% rename from spring-security-rest/src/main/java/org/baeldung/web/ApiError.java rename to spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java index e1c58da64a..8a1ddd8882 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/ApiError.java +++ b/spring-security-rest/src/main/java/org/baeldung/errorhandling/ApiError.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import java.util.Arrays; import java.util.List; diff --git a/spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java b/spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java similarity index 99% rename from spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java rename to spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java index 71b1a4775e..cd4d58e60c 100644 --- a/spring-security-rest/src/main/java/org/baeldung/web/CustomRestExceptionHandler.java +++ b/spring-security-rest/src/main/java/org/baeldung/errorhandling/CustomRestExceptionHandler.java @@ -1,4 +1,4 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import java.util.ArrayList; import java.util.List; diff --git a/spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java b/spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java similarity index 96% rename from spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java rename to spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java index 86beeb46a9..8d1db5736f 100644 --- a/spring-security-rest/src/test/java/org/baeldung/web/FooLiveTest.java +++ b/spring-security-rest/src/test/java/org/baeldung/errorhandling/FooLiveTest.java @@ -1,8 +1,10 @@ -package org.baeldung.web; +package org.baeldung.errorhandling; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; +import org.baeldung.errorhandling.ApiError; +import org.baeldung.web.TestConfig; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.http.HttpStatus; diff --git a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java b/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java similarity index 98% rename from testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java rename to testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java index 118d50ea40..d0b838a789 100644 --- a/testing-modules/mockito/src/test/java/org/baeldung/mockito/MockitoSpyIntegrationTest.java +++ b/testing-modules/mockito/src/test/java/org/baeldung/mockito/spy/MockitoSpyIntegrationTest.java @@ -1,4 +1,4 @@ -package org.baeldung.mockito; +package org.baeldung.mockito.spy; import static org.junit.Assert.assertEquals;