diff --git a/core-java-modules/core-java-arrays-operations-basic-3/src/test/java/com/baeldung/signchanges/SignChangesInAnArrayUnitTest.java b/core-java-modules/core-java-arrays-operations-basic-3/src/test/java/com/baeldung/signchanges/SignChangesInAnArrayUnitTest.java new file mode 100644 index 000000000000..bb942356c559 --- /dev/null +++ b/core-java-modules/core-java-arrays-operations-basic-3/src/test/java/com/baeldung/signchanges/SignChangesInAnArrayUnitTest.java @@ -0,0 +1,63 @@ +package com.baeldung.signchanges; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; +import java.util.stream.IntStream; + +public class SignChangesInAnArrayUnitTest { + + int[] sampleArray = {1, -2, -3, 4, 0, -1, 5}; + + int countSignChanges(int[] arr) { + if (arr == null || arr.length < 2) { + return 0; + } + int count = 0; + + int prevSign = Integer.signum(arr[0]); + + for (int i = 1; i < arr.length; i++) { + int currentSign = Integer.signum(arr[i]); + + if (currentSign != 0 && prevSign != 0 && currentSign != prevSign) { + count++; + } + + if (currentSign != 0) { + prevSign = currentSign; + } + } + + return count; + } + + @Test + void givenArray_whenExistsSignChanges_thenReturnSignChangesQuantity() { + int result = countSignChanges(sampleArray); + Assertions.assertThat(result).isEqualTo(4); + } + + int countSignChangesStream(int[] arr) { + if (arr == null || arr.length < 2) { + return 0; + } + + int[] signs = Arrays.stream(arr) + .map(Integer::signum) + .filter(s -> s != 0) + .toArray(); + + return (int) IntStream.range(1, signs.length) + .filter(i -> signs[i] != signs[i - 1]) + .count(); + } + + @Test + void givenArray_whenUsingStreams_thenReturnSignChangesQuantity() { + int result = countSignChangesStream(sampleArray); + Assertions.assertThat(result).isEqualTo(4); + } + +} diff --git a/core-java-modules/core-java-string-algorithms-5/src/main/java/com/baeldung/uniqueint/StringToUniqueInt.java b/core-java-modules/core-java-string-algorithms-5/src/main/java/com/baeldung/uniqueint/StringToUniqueInt.java index 5128714be205..2eb104f05018 100644 --- a/core-java-modules/core-java-string-algorithms-5/src/main/java/com/baeldung/uniqueint/StringToUniqueInt.java +++ b/core-java-modules/core-java-string-algorithms-5/src/main/java/com/baeldung/uniqueint/StringToUniqueInt.java @@ -38,12 +38,12 @@ public static int toIntByMD5(String value) { } public static int toIntByLookup(String value) { - var found = lookupMap.get(value); + Integer found = lookupMap.get(value); if (found != null) { return found; } - var intValue = counter.incrementAndGet(); + Integer intValue = counter.incrementAndGet(); lookupMap.put(value, intValue); return intValue; } diff --git a/core-java-modules/core-java-swing/pom.xml b/core-java-modules/core-java-swing/pom.xml index 462e31e439f5..d7e481b0fc0e 100644 --- a/core-java-modules/core-java-swing/pom.xml +++ b/core-java-modules/core-java-swing/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 core-java-swing jar @@ -19,4 +19,8 @@ UTF-8 + + src/main/java + + \ No newline at end of file diff --git a/core-java-modules/core-java-swing/src/main/java/com/baeldung/clipboard/AwtClipboard.java b/core-java-modules/core-java-swing/src/main/java/com/baeldung/clipboard/AwtClipboard.java new file mode 100644 index 000000000000..3d3959fa80e2 --- /dev/null +++ b/core-java-modules/core-java-swing/src/main/java/com/baeldung/clipboard/AwtClipboard.java @@ -0,0 +1,39 @@ +package com.baeldung.clipboard; + +import java.awt.Toolkit; +import java.awt.datatransfer.Clipboard; +import java.awt.datatransfer.StringSelection; +import java.awt.datatransfer.Transferable; +import java.awt.datatransfer.UnsupportedFlavorException; +import java.io.IOException; +import java.awt.datatransfer.DataFlavor; + +public class AwtClipboard { + + public static void main(String[] args) throws IOException, UnsupportedFlavorException { + String textToCopy = "Baeldung helps developers explore the Java ecosystem and simply be better engineers."; + copyToClipboard(textToCopy); + + String textCopied = copyFromClipboard(); + if (textCopied != null) { + System.out.println(textCopied); + } + } + + public static void copyToClipboard(String text) { + Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); + StringSelection data = new StringSelection(text); + cb.setContents(data, null); + } + + public static String copyFromClipboard() throws UnsupportedFlavorException, IOException { + Clipboard cb = Toolkit.getDefaultToolkit().getSystemClipboard(); + Transferable transferable = cb.getContents(null); + if (transferable.isDataFlavorSupported(DataFlavor.stringFlavor)) { + String data = (String) transferable.getTransferData(DataFlavor.stringFlavor); + return data; + } + System.out.println("Couldn't get data from the clipboard"); + return null; + } +} \ No newline at end of file diff --git a/libraries-2/pom.xml b/libraries-2/pom.xml index 471e0eac97d2..41c26a2ea340 100644 --- a/libraries-2/pom.xml +++ b/libraries-2/pom.xml @@ -13,11 +13,6 @@ - - io.github.classgraph - classgraph - ${classgraph.version} - org.jbpm jbpm-test @@ -31,17 +26,6 @@ - - edu.uci.ics - crawler4j - ${crawler4j.version} - - - com.sleepycat - je - - - com.github.jknack handlebars @@ -57,11 +41,6 @@ je ${sleepycat-je.version} - - org.mapdb - mapdb - ${mapdb.version} - commons-io commons-io @@ -96,11 +75,6 @@ value ${immutables.version} - - io.nats - jnats - ${jnats.version} - org.mutabilitydetector MutabilityDetector @@ -108,10 +82,44 @@ test - org.awaitility - awaitility - ${awaitility.version} - test + com.squareup + javapoet + ${javapoet.version} + + + com.googlecode.libphonenumber + libphonenumber + ${libphonenumber.version} + + + com.github.javaparser + javaparser-core + ${javaparser.version} + + + org.soot-oss + sootup.core + ${sootup.version} + + + org.soot-oss + sootup.java.core + ${sootup.version} + + + org.soot-oss + sootup.java.sourcecode + ${sootup.version} + + + org.soot-oss + sootup.java.bytecode + ${sootup.version} + + + com.google.guava + guava + ${guava.version} @@ -126,19 +134,18 @@ - 3.0.8 - 4.8.153 7.20.0.Final - 4.4.0 4.3.1 2.7.1 2.5.2.Final 18.3.12 3.0.14 2.5.6 - 2.17.3 0.9.6 - 4.2.1 + 1.10.0 + 8.12.9 + 3.25.10 + 1.3.0 \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/javapoet/PersonGenerator.java b/libraries-2/src/main/java/com/baeldung/javapoet/PersonGenerator.java similarity index 99% rename from libraries/src/main/java/com/baeldung/javapoet/PersonGenerator.java rename to libraries-2/src/main/java/com/baeldung/javapoet/PersonGenerator.java index 17fe9002e847..43ab140e5149 100644 --- a/libraries/src/main/java/com/baeldung/javapoet/PersonGenerator.java +++ b/libraries-2/src/main/java/com/baeldung/javapoet/PersonGenerator.java @@ -176,6 +176,7 @@ public void generateStudentClass() throws IOException { private void writeToOutputFile(String packageName, TypeSpec typeSpec) throws IOException { JavaFile javaFile = JavaFile .builder(packageName, typeSpec) + .skipJavaLangImports(true) .indent(FOUR_WHITESPACES) .build(); javaFile.writeTo(outputFile); diff --git a/libraries-4/src/test/java/com/baeldung/javaparser/AnalyzeUnitTest.java b/libraries-2/src/test/java/com/baeldung/javaparser/AnalyzeUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/javaparser/AnalyzeUnitTest.java rename to libraries-2/src/test/java/com/baeldung/javaparser/AnalyzeUnitTest.java index 28c938c80acc..105b5bcedcf8 100644 --- a/libraries-4/src/test/java/com/baeldung/javaparser/AnalyzeUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/javaparser/AnalyzeUnitTest.java @@ -1,5 +1,13 @@ package com.baeldung.javaparser; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.Arrays; +import java.util.List; + +import org.junit.jupiter.api.Test; + import com.github.javaparser.StaticJavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.ImportDeclaration; @@ -9,13 +17,6 @@ import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.visitor.GenericListVisitorAdapter; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; -import java.util.List; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; public class AnalyzeUnitTest { private final String code = String.join("\n", Arrays.asList( diff --git a/libraries-4/src/test/java/com/baeldung/javaparser/ManipulateUnitTest.java b/libraries-2/src/test/java/com/baeldung/javaparser/ManipulateUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/javaparser/ManipulateUnitTest.java rename to libraries-2/src/test/java/com/baeldung/javaparser/ManipulateUnitTest.java index f7467b892aa6..2179f0644742 100644 --- a/libraries-4/src/test/java/com/baeldung/javaparser/ManipulateUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/javaparser/ManipulateUnitTest.java @@ -1,14 +1,15 @@ package com.baeldung.javaparser; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; + +import org.junit.jupiter.api.Test; + import com.github.javaparser.StaticJavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.body.MethodDeclaration; import com.github.javaparser.ast.visitor.VoidVisitorAdapter; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; - -import static org.junit.jupiter.api.Assertions.assertEquals; public class ManipulateUnitTest { private final String code = String.join("\n", Arrays.asList( diff --git a/libraries-4/src/test/java/com/baeldung/javaparser/OutputUnitTest.java b/libraries-2/src/test/java/com/baeldung/javaparser/OutputUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/javaparser/OutputUnitTest.java rename to libraries-2/src/test/java/com/baeldung/javaparser/OutputUnitTest.java index 5128cc2204ed..0ef1615cd1c5 100644 --- a/libraries-4/src/test/java/com/baeldung/javaparser/OutputUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/javaparser/OutputUnitTest.java @@ -1,16 +1,17 @@ package com.baeldung.javaparser; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Arrays; + +import org.junit.jupiter.api.Test; + import com.github.javaparser.StaticJavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.printer.DefaultPrettyPrinterVisitor; import com.github.javaparser.printer.configuration.DefaultConfigurationOption; import com.github.javaparser.printer.configuration.DefaultPrinterConfiguration; import com.github.javaparser.printer.configuration.Indentation; -import org.junit.jupiter.api.Test; - -import java.util.Arrays; - -import static org.junit.jupiter.api.Assertions.assertEquals; public class OutputUnitTest { private final String code = String.join("\n", Arrays.asList( diff --git a/libraries-4/src/test/java/com/baeldung/javaparser/ParseUnitTest.java b/libraries-2/src/test/java/com/baeldung/javaparser/ParseUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/javaparser/ParseUnitTest.java rename to libraries-2/src/test/java/com/baeldung/javaparser/ParseUnitTest.java index 1a3dbc5a45bf..6ff6436dc811 100644 --- a/libraries-4/src/test/java/com/baeldung/javaparser/ParseUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/javaparser/ParseUnitTest.java @@ -1,14 +1,15 @@ package com.baeldung.javaparser; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.Test; + import com.github.javaparser.ParseProblemException; import com.github.javaparser.StaticJavaParser; import com.github.javaparser.ast.CompilationUnit; import com.github.javaparser.ast.expr.AnnotationExpr; import com.github.javaparser.ast.stmt.Statement; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; public class ParseUnitTest { @Test diff --git a/libraries/src/test/java/com/baeldung/javapoet/test/PersonGeneratorUnitTest.java b/libraries-2/src/test/java/com/baeldung/javapoet/test/PersonGeneratorUnitTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/javapoet/test/PersonGeneratorUnitTest.java rename to libraries-2/src/test/java/com/baeldung/javapoet/test/PersonGeneratorUnitTest.java diff --git a/libraries/src/test/java/com/baeldung/javapoet/test/person/Gender.java b/libraries-2/src/test/java/com/baeldung/javapoet/test/person/Gender.java similarity index 100% rename from libraries/src/test/java/com/baeldung/javapoet/test/person/Gender.java rename to libraries-2/src/test/java/com/baeldung/javapoet/test/person/Gender.java diff --git a/libraries/src/test/java/com/baeldung/javapoet/test/person/Person.java b/libraries-2/src/test/java/com/baeldung/javapoet/test/person/Person.java similarity index 88% rename from libraries/src/test/java/com/baeldung/javapoet/test/person/Person.java rename to libraries-2/src/test/java/com/baeldung/javapoet/test/person/Person.java index fae8b2307572..64d9235f7c30 100644 --- a/libraries/src/test/java/com/baeldung/javapoet/test/person/Person.java +++ b/libraries-2/src/test/java/com/baeldung/javapoet/test/person/Person.java @@ -1,7 +1,5 @@ package com.baeldung.javapoet.test.person; -import java.lang.String; - public interface Person { String DEFAULT_NAME = "Alice"; diff --git a/libraries/src/test/java/com/baeldung/javapoet/test/person/Student.java b/libraries-2/src/test/java/com/baeldung/javapoet/test/person/Student.java similarity index 94% rename from libraries/src/test/java/com/baeldung/javapoet/test/person/Student.java rename to libraries-2/src/test/java/com/baeldung/javapoet/test/person/Student.java index 1c7d5cc09647..9511d552e409 100644 --- a/libraries/src/test/java/com/baeldung/javapoet/test/person/Student.java +++ b/libraries-2/src/test/java/com/baeldung/javapoet/test/person/Student.java @@ -1,7 +1,5 @@ package com.baeldung.javapoet.test.person; -import java.lang.Override; -import java.lang.String; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; diff --git a/libraries/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java b/libraries-2/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java rename to libraries-2/src/test/java/com/baeldung/libphonenumber/LibPhoneNumberUnitTest.java diff --git a/libraries-5/src/test/java/com/baeldung/sootup/AnalyzeUnitTest.java b/libraries-2/src/test/java/com/baeldung/sootup/AnalyzeUnitTest.java similarity index 97% rename from libraries-5/src/test/java/com/baeldung/sootup/AnalyzeUnitTest.java rename to libraries-2/src/test/java/com/baeldung/sootup/AnalyzeUnitTest.java index 709269529bb3..6b7f09f349e7 100644 --- a/libraries-5/src/test/java/com/baeldung/sootup/AnalyzeUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/sootup/AnalyzeUnitTest.java @@ -1,20 +1,20 @@ package com.baeldung.sootup; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; + import org.junit.jupiter.api.Test; + import sootup.core.inputlocation.AnalysisInputLocation; import sootup.java.bytecode.inputlocation.JavaClassPathAnalysisInputLocation; import sootup.java.bytecode.inputlocation.JrtFileSystemAnalysisInputLocation; import sootup.java.bytecode.inputlocation.OTFCompileAnalysisInputLocation; import sootup.java.core.views.JavaView; -import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Path; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - public class AnalyzeUnitTest { @Test void whenAnalyzingTheJvm_thenWeCanListClasses() { diff --git a/libraries-5/src/test/java/com/baeldung/sootup/ClassUnitTest.java b/libraries-2/src/test/java/com/baeldung/sootup/ClassUnitTest.java similarity index 93% rename from libraries-5/src/test/java/com/baeldung/sootup/ClassUnitTest.java rename to libraries-2/src/test/java/com/baeldung/sootup/ClassUnitTest.java index ba7256df479d..a2e72f9ed16d 100644 --- a/libraries-5/src/test/java/com/baeldung/sootup/ClassUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/sootup/ClassUnitTest.java @@ -1,6 +1,15 @@ package com.baeldung.sootup; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Path; +import java.util.Optional; +import java.util.Set; + import org.junit.jupiter.api.Test; + import sootup.core.IdentifierFactory; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SootClass; @@ -9,12 +18,6 @@ import sootup.java.core.JavaSootClass; import sootup.java.core.views.JavaView; -import java.nio.file.Path; -import java.util.Optional; -import java.util.Set; - -import static org.junit.jupiter.api.Assertions.*; - public class ClassUnitTest { @Test void whenAnalyzingThisTestClass_thenWeCanGetASingleClass() { diff --git a/libraries-5/src/test/java/com/baeldung/sootup/FieldUnitTest.java b/libraries-2/src/test/java/com/baeldung/sootup/FieldUnitTest.java similarity index 91% rename from libraries-5/src/test/java/com/baeldung/sootup/FieldUnitTest.java rename to libraries-2/src/test/java/com/baeldung/sootup/FieldUnitTest.java index 310292b35847..296999d2df78 100644 --- a/libraries-5/src/test/java/com/baeldung/sootup/FieldUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/sootup/FieldUnitTest.java @@ -1,6 +1,15 @@ package com.baeldung.sootup; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Path; +import java.util.Optional; +import java.util.Set; + import org.junit.jupiter.api.Test; + import sootup.core.IdentifierFactory; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SootClass; @@ -9,12 +18,6 @@ import sootup.java.bytecode.inputlocation.OTFCompileAnalysisInputLocation; import sootup.java.core.views.JavaView; -import java.nio.file.Path; -import java.util.Optional; -import java.util.Set; - -import static org.junit.jupiter.api.Assertions.*; - public class FieldUnitTest { private String aField; diff --git a/libraries-5/src/test/java/com/baeldung/sootup/MethodBodyUnitTest.java b/libraries-2/src/test/java/com/baeldung/sootup/MethodBodyUnitTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/sootup/MethodBodyUnitTest.java rename to libraries-2/src/test/java/com/baeldung/sootup/MethodBodyUnitTest.java index 079523e46986..9ce84a8bfaa0 100644 --- a/libraries-5/src/test/java/com/baeldung/sootup/MethodBodyUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/sootup/MethodBodyUnitTest.java @@ -1,6 +1,15 @@ package com.baeldung.sootup; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; + import org.junit.jupiter.api.Test; + import sootup.core.IdentifierFactory; import sootup.core.graph.StmtGraph; import sootup.core.inputlocation.AnalysisInputLocation; @@ -12,14 +21,6 @@ import sootup.java.bytecode.inputlocation.OTFCompileAnalysisInputLocation; import sootup.java.core.views.JavaView; -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - public class MethodBodyUnitTest { @Test void whenAnalyzingAMethod_thenWeCanAccessTheLocals() { diff --git a/libraries-5/src/test/java/com/baeldung/sootup/MethodUnitTest.java b/libraries-2/src/test/java/com/baeldung/sootup/MethodUnitTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/sootup/MethodUnitTest.java rename to libraries-2/src/test/java/com/baeldung/sootup/MethodUnitTest.java index c04f635854db..e301fa7dfdb8 100644 --- a/libraries-5/src/test/java/com/baeldung/sootup/MethodUnitTest.java +++ b/libraries-2/src/test/java/com/baeldung/sootup/MethodUnitTest.java @@ -1,6 +1,16 @@ package com.baeldung.sootup; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.nio.file.Path; +import java.util.List; +import java.util.Optional; +import java.util.Set; + import org.junit.jupiter.api.Test; + import sootup.core.IdentifierFactory; import sootup.core.inputlocation.AnalysisInputLocation; import sootup.core.model.SootClass; @@ -9,15 +19,6 @@ import sootup.java.bytecode.inputlocation.OTFCompileAnalysisInputLocation; import sootup.java.core.views.JavaView; -import java.nio.file.Path; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; - public class MethodUnitTest { @Test diff --git a/libraries-3/pom.xml b/libraries-3/pom.xml index 0091997ae713..dded3d5b7e21 100644 --- a/libraries-3/pom.xml +++ b/libraries-3/pom.xml @@ -1,7 +1,7 @@ + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 libraries-3 libraries-3 @@ -14,20 +14,40 @@ - org.projectlombok - lombok - ${lombok.version} + org.springframework.boot + spring-boot-starter + ${spring-boot.version} + + + org.springframework + spring-context + ${spring.version} + + + org.springframework.boot + spring-boot-starter-web + ${spring-boot.version} + + + org.springframework.boot + spring-boot-starter-thymeleaf + ${spring-boot.version} - com.jcabi - jcabi-aspects - ${jcabi-aspects.version} + org.springframework.boot + spring-boot-starter-test + ${spring-boot.version} + test - org.aspectj - aspectjrt - ${aspectjrt.version} - runtime + nl.basjes.parse.useragent + yauaa + ${yauaa.version} + + + org.projectlombok + lombok + ${lombok.version} org.apache.velocity @@ -81,14 +101,35 @@ ${javax.annotation-api.version} - io.atlassian.fugue - fugue - ${fugue.version} + org.javers + javers-core + ${javers.version} + + + org.agrona + agrona + ${agrona.version} + + + io.nats + jnats + ${jnats.version} - org.jooq - jool - ${jool.version} + org.awaitility + awaitility + ${awaitility.version} + test + + + org.jfree + jfreechart + ${jfreechart.version} + + + dev.failsafe + failsafe + ${dev.failsafe.version} @@ -96,32 +137,62 @@ libraries-3 - com.jcabi - jcabi-maven-plugin - ${jcabi-maven-plugin.version} + org.apache.maven.plugins + maven-compiler-plugin + + + org.codehaus.mojo + exec-maven-plugin + ${exec-maven-plugin.version} + generate-sources - ajc + java + + false + true + uk.co.real_logic.sbe.SbeTool + + + sbe.output.dir + ${project.build.directory}/generated-sources/java + + + + ${project.basedir}/src/main/resources/schema.xml + + ${project.build.directory}/generated-sources/java + - org.aspectj - aspectjtools - ${aspectjtools.version} - - - org.aspectj - aspectjweaver - ${aspectjweaver.version} + uk.co.real-logic + sbe-tool + ${sbe-tool.version} - org.apache.maven.plugins - maven-compiler-plugin + org.codehaus.mojo + build-helper-maven-plugin + ${build-helper-maven-plugin.version} + + + add-source + generate-sources + + add-source + + + + ${project.build.directory}/generated-sources/java/ + + + + @@ -133,19 +204,23 @@ - 0.26.0 - 1.9.20.1 - 0.14.1 - 1.9.20.1 - 1.9.20.1 2.2 0.3.0 2.8 2.1.3 1.0.0 1.3.2 - 4.5.1 - 0.9.12 + 3.1.0 + 1.27.0 + 1.17.1 + 3.0.0 + 2.17.3 + 4.2.1 + 1.5.4 + 3.3.2 + 3.3.0 + 6.1.8 + 7.28.1 \ No newline at end of file diff --git a/libraries/src/main/java/com/baeldung/javers/Address.java b/libraries-3/src/main/java/com/baeldung/javers/Address.java similarity index 100% rename from libraries/src/main/java/com/baeldung/javers/Address.java rename to libraries-3/src/main/java/com/baeldung/javers/Address.java diff --git a/libraries/src/main/java/com/baeldung/javers/Person.java b/libraries-3/src/main/java/com/baeldung/javers/Person.java similarity index 100% rename from libraries/src/main/java/com/baeldung/javers/Person.java rename to libraries-3/src/main/java/com/baeldung/javers/Person.java diff --git a/libraries/src/main/java/com/baeldung/javers/PersonWithAddress.java b/libraries-3/src/main/java/com/baeldung/javers/PersonWithAddress.java similarity index 100% rename from libraries/src/main/java/com/baeldung/javers/PersonWithAddress.java rename to libraries-3/src/main/java/com/baeldung/javers/PersonWithAddress.java diff --git a/libraries-4/src/main/java/com/baeldung/jfreechart/BarChartExample.java b/libraries-3/src/main/java/com/baeldung/jfreechart/BarChartExample.java similarity index 97% rename from libraries-4/src/main/java/com/baeldung/jfreechart/BarChartExample.java rename to libraries-3/src/main/java/com/baeldung/jfreechart/BarChartExample.java index 9005746b63c6..4ba0b87da75c 100644 --- a/libraries-4/src/main/java/com/baeldung/jfreechart/BarChartExample.java +++ b/libraries-3/src/main/java/com/baeldung/jfreechart/BarChartExample.java @@ -1,6 +1,6 @@ package com.baeldung.jfreechart; -import javax.swing.JFrame; +import javax.swing.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; diff --git a/libraries-4/src/main/java/com/baeldung/jfreechart/CombinationChartExample.java b/libraries-3/src/main/java/com/baeldung/jfreechart/CombinationChartExample.java similarity index 97% rename from libraries-4/src/main/java/com/baeldung/jfreechart/CombinationChartExample.java rename to libraries-3/src/main/java/com/baeldung/jfreechart/CombinationChartExample.java index 4143814ba9ba..8cca3bfe29f6 100644 --- a/libraries-4/src/main/java/com/baeldung/jfreechart/CombinationChartExample.java +++ b/libraries-3/src/main/java/com/baeldung/jfreechart/CombinationChartExample.java @@ -1,8 +1,6 @@ package com.baeldung.jfreechart; -import java.awt.Font; - -import javax.swing.JFrame; +import javax.swing.*; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; diff --git a/libraries-4/src/main/java/com/baeldung/jfreechart/LineChartExample.java b/libraries-3/src/main/java/com/baeldung/jfreechart/LineChartExample.java similarity index 97% rename from libraries-4/src/main/java/com/baeldung/jfreechart/LineChartExample.java rename to libraries-3/src/main/java/com/baeldung/jfreechart/LineChartExample.java index 795a65f841cf..6be6db7ad367 100644 --- a/libraries-4/src/main/java/com/baeldung/jfreechart/LineChartExample.java +++ b/libraries-3/src/main/java/com/baeldung/jfreechart/LineChartExample.java @@ -1,6 +1,6 @@ package com.baeldung.jfreechart; -import javax.swing.JFrame; +import javax.swing.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; diff --git a/libraries-4/src/main/java/com/baeldung/jfreechart/PieChartExample.java b/libraries-3/src/main/java/com/baeldung/jfreechart/PieChartExample.java similarity index 97% rename from libraries-4/src/main/java/com/baeldung/jfreechart/PieChartExample.java rename to libraries-3/src/main/java/com/baeldung/jfreechart/PieChartExample.java index ed0cff99c8a4..52f7150753f7 100644 --- a/libraries-4/src/main/java/com/baeldung/jfreechart/PieChartExample.java +++ b/libraries-3/src/main/java/com/baeldung/jfreechart/PieChartExample.java @@ -1,6 +1,6 @@ package com.baeldung.jfreechart; -import javax.swing.JFrame; +import javax.swing.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; diff --git a/libraries-4/src/main/java/com/baeldung/jfreechart/TimeSeriesChartExample.java b/libraries-3/src/main/java/com/baeldung/jfreechart/TimeSeriesChartExample.java similarity index 98% rename from libraries-4/src/main/java/com/baeldung/jfreechart/TimeSeriesChartExample.java rename to libraries-3/src/main/java/com/baeldung/jfreechart/TimeSeriesChartExample.java index 60339823e7c0..898ab2bafc9e 100644 --- a/libraries-4/src/main/java/com/baeldung/jfreechart/TimeSeriesChartExample.java +++ b/libraries-3/src/main/java/com/baeldung/jfreechart/TimeSeriesChartExample.java @@ -1,6 +1,6 @@ package com.baeldung.jfreechart; -import javax.swing.JFrame; +import javax.swing.*; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; diff --git a/libraries/src/main/java/com/baeldung/sbe/MarketData.java b/libraries-3/src/main/java/com/baeldung/sbe/MarketData.java similarity index 100% rename from libraries/src/main/java/com/baeldung/sbe/MarketData.java rename to libraries-3/src/main/java/com/baeldung/sbe/MarketData.java diff --git a/libraries/src/main/java/com/baeldung/sbe/MarketDataSource.java b/libraries-3/src/main/java/com/baeldung/sbe/MarketDataSource.java similarity index 100% rename from libraries/src/main/java/com/baeldung/sbe/MarketDataSource.java rename to libraries-3/src/main/java/com/baeldung/sbe/MarketDataSource.java diff --git a/libraries/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java b/libraries-3/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java similarity index 100% rename from libraries/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java rename to libraries-3/src/main/java/com/baeldung/sbe/MarketDataStreamServer.java diff --git a/libraries/src/main/java/com/baeldung/sbe/MarketDataUtil.java b/libraries-3/src/main/java/com/baeldung/sbe/MarketDataUtil.java similarity index 100% rename from libraries/src/main/java/com/baeldung/sbe/MarketDataUtil.java rename to libraries-3/src/main/java/com/baeldung/sbe/MarketDataUtil.java diff --git a/libraries-5/src/main/java/com/baeldung/yauaa/Application.java b/libraries-3/src/main/java/com/baeldung/yauaa/Application.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/yauaa/Application.java rename to libraries-3/src/main/java/com/baeldung/yauaa/Application.java diff --git a/libraries-5/src/main/java/com/baeldung/yauaa/HomePageController.java b/libraries-3/src/main/java/com/baeldung/yauaa/HomePageController.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/yauaa/HomePageController.java rename to libraries-3/src/main/java/com/baeldung/yauaa/HomePageController.java diff --git a/libraries-5/src/main/java/com/baeldung/yauaa/UserAgentAnalyzerConfiguration.java b/libraries-3/src/main/java/com/baeldung/yauaa/UserAgentAnalyzerConfiguration.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/yauaa/UserAgentAnalyzerConfiguration.java rename to libraries-3/src/main/java/com/baeldung/yauaa/UserAgentAnalyzerConfiguration.java diff --git a/libraries-5/src/main/java/com/baeldung/yauaa/UserAgentAttributeLoggingFilter.java b/libraries-3/src/main/java/com/baeldung/yauaa/UserAgentAttributeLoggingFilter.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/yauaa/UserAgentAttributeLoggingFilter.java rename to libraries-3/src/main/java/com/baeldung/yauaa/UserAgentAttributeLoggingFilter.java diff --git a/libraries/src/main/resources/schema.xml b/libraries-3/src/main/resources/schema.xml similarity index 100% rename from libraries/src/main/resources/schema.xml rename to libraries-3/src/main/resources/schema.xml diff --git a/libraries-5/src/main/resources/templates/error/open-in-mobile.html b/libraries-3/src/main/resources/templates/error/open-in-mobile.html similarity index 100% rename from libraries-5/src/main/resources/templates/error/open-in-mobile.html rename to libraries-3/src/main/resources/templates/error/open-in-mobile.html diff --git a/libraries-5/src/main/resources/templates/mobile-home.html b/libraries-3/src/main/resources/templates/mobile-home.html similarity index 100% rename from libraries-5/src/main/resources/templates/mobile-home.html rename to libraries-3/src/main/resources/templates/mobile-home.html diff --git a/libraries-4/src/test/java/com/baeldung/failsafe/BulkheadUnitTest.java b/libraries-3/src/test/java/com/baeldung/failsafe/BulkheadUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/failsafe/BulkheadUnitTest.java rename to libraries-3/src/test/java/com/baeldung/failsafe/BulkheadUnitTest.java index b41cd4ddfa57..eb16f3e38de2 100644 --- a/libraries-4/src/test/java/com/baeldung/failsafe/BulkheadUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/failsafe/BulkheadUnitTest.java @@ -1,16 +1,17 @@ package com.baeldung.failsafe; -import dev.failsafe.Bulkhead; -import dev.failsafe.BulkheadFullException; -import dev.failsafe.Failsafe; -import org.junit.jupiter.api.Test; - -import java.time.Duration; - import static org.junit.Assert.assertTrue; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import java.time.Duration; + +import org.junit.jupiter.api.Test; + +import dev.failsafe.Bulkhead; +import dev.failsafe.BulkheadFullException; +import dev.failsafe.Failsafe; + public class BulkheadUnitTest { @Test void rejectExcessCalls() throws InterruptedException { diff --git a/libraries-4/src/test/java/com/baeldung/failsafe/CircuitBreakerUnitTest.java b/libraries-3/src/test/java/com/baeldung/failsafe/CircuitBreakerUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/failsafe/CircuitBreakerUnitTest.java rename to libraries-3/src/test/java/com/baeldung/failsafe/CircuitBreakerUnitTest.java index 213db509fae9..039e4131fc5c 100644 --- a/libraries-4/src/test/java/com/baeldung/failsafe/CircuitBreakerUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/failsafe/CircuitBreakerUnitTest.java @@ -1,11 +1,12 @@ package com.baeldung.failsafe; +import java.time.Duration; + +import org.junit.jupiter.api.Test; + import dev.failsafe.CircuitBreaker; import dev.failsafe.Failsafe; import dev.failsafe.FailsafeExecutor; -import org.junit.jupiter.api.Test; - -import java.time.Duration; public class CircuitBreakerUnitTest { @Test diff --git a/libraries-4/src/test/java/com/baeldung/failsafe/FallbackUnitTest.java b/libraries-3/src/test/java/com/baeldung/failsafe/FallbackUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/failsafe/FallbackUnitTest.java rename to libraries-3/src/test/java/com/baeldung/failsafe/FallbackUnitTest.java index bd13c5891ff8..3210b8bd4dc5 100644 --- a/libraries-4/src/test/java/com/baeldung/failsafe/FallbackUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/failsafe/FallbackUnitTest.java @@ -1,13 +1,14 @@ package com.baeldung.failsafe; -import dev.failsafe.Failsafe; -import dev.failsafe.FailsafeExecutor; -import dev.failsafe.Fallback; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +import dev.failsafe.Failsafe; +import dev.failsafe.FailsafeExecutor; +import dev.failsafe.Fallback; public class FallbackUnitTest { @Test diff --git a/libraries-4/src/test/java/com/baeldung/failsafe/RateLimiterUnitTest.java b/libraries-3/src/test/java/com/baeldung/failsafe/RateLimiterUnitTest.java similarity index 94% rename from libraries-4/src/test/java/com/baeldung/failsafe/RateLimiterUnitTest.java rename to libraries-3/src/test/java/com/baeldung/failsafe/RateLimiterUnitTest.java index b7b03fce1f0e..8a6d6f33ec99 100644 --- a/libraries-4/src/test/java/com/baeldung/failsafe/RateLimiterUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/failsafe/RateLimiterUnitTest.java @@ -1,12 +1,16 @@ package com.baeldung.failsafe; -import dev.failsafe.*; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.time.Duration; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.Test; + +import dev.failsafe.Failsafe; +import dev.failsafe.FailsafeExecutor; +import dev.failsafe.RateLimitExceededException; +import dev.failsafe.RateLimiter; public class RateLimiterUnitTest { @Test diff --git a/libraries-4/src/test/java/com/baeldung/failsafe/RetryUnitTest.java b/libraries-3/src/test/java/com/baeldung/failsafe/RetryUnitTest.java similarity index 94% rename from libraries-4/src/test/java/com/baeldung/failsafe/RetryUnitTest.java rename to libraries-3/src/test/java/com/baeldung/failsafe/RetryUnitTest.java index 44a5940a41e9..b58936ec6712 100644 --- a/libraries-4/src/test/java/com/baeldung/failsafe/RetryUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/failsafe/RetryUnitTest.java @@ -1,15 +1,18 @@ package com.baeldung.failsafe; -import dev.failsafe.Failsafe; -import dev.failsafe.FailsafeException; -import dev.failsafe.RetryPolicy; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.io.IOException; import java.time.Duration; import java.util.concurrent.atomic.AtomicInteger; -import static org.junit.jupiter.api.Assertions.*; +import org.junit.jupiter.api.Test; + +import dev.failsafe.Failsafe; +import dev.failsafe.FailsafeException; +import dev.failsafe.RetryPolicy; public class RetryUnitTest { @Test diff --git a/libraries-4/src/test/java/com/baeldung/failsafe/TimeoutUnitTest.java b/libraries-3/src/test/java/com/baeldung/failsafe/TimeoutUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/failsafe/TimeoutUnitTest.java rename to libraries-3/src/test/java/com/baeldung/failsafe/TimeoutUnitTest.java index 76b8c4d78c8e..07dd07e3853f 100644 --- a/libraries-4/src/test/java/com/baeldung/failsafe/TimeoutUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/failsafe/TimeoutUnitTest.java @@ -1,14 +1,15 @@ package com.baeldung.failsafe; -import dev.failsafe.Failsafe; -import dev.failsafe.FailsafeException; -import dev.failsafe.Timeout; -import org.junit.jupiter.api.Test; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; import java.time.Duration; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertThrows; +import org.junit.jupiter.api.Test; + +import dev.failsafe.Failsafe; +import dev.failsafe.FailsafeException; +import dev.failsafe.Timeout; public class TimeoutUnitTest { @Test diff --git a/libraries/src/test/java/com/baeldung/javers/JaversUnitTest.java b/libraries-3/src/test/java/com/baeldung/javers/JaversUnitTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/javers/JaversUnitTest.java rename to libraries-3/src/test/java/com/baeldung/javers/JaversUnitTest.java index a8a7df659b6b..1a4553957447 100644 --- a/libraries/src/test/java/com/baeldung/javers/JaversUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/javers/JaversUnitTest.java @@ -1,5 +1,11 @@ package com.baeldung.javers; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import org.javers.common.collections.Lists; import org.javers.core.Javers; import org.javers.core.JaversBuilder; @@ -10,12 +16,6 @@ import org.javers.core.diff.changetype.container.ListChange; import org.junit.Test; -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import static org.assertj.core.api.Assertions.assertThat; - public class JaversUnitTest { @Test diff --git a/libraries-2/src/test/java/com/baeldung/jnats/NatsClientLiveTest.java b/libraries-3/src/test/java/com/baeldung/jnats/NatsClientLiveTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/jnats/NatsClientLiveTest.java rename to libraries-3/src/test/java/com/baeldung/jnats/NatsClientLiveTest.java diff --git a/libraries/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java b/libraries-3/src/test/java/com/baeldung/sbe/test/EncodeDecodeMarketDataUnitTest.java similarity index 98% rename from libraries/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java rename to libraries-3/src/test/java/com/baeldung/sbe/test/EncodeDecodeMarketDataUnitTest.java index 5c6c5118a9fc..2c6836c39957 100644 --- a/libraries/src/test/java/com/baeldung/test/EncodeDecodeMarketDataUnitTest.java +++ b/libraries-3/src/test/java/com/baeldung/sbe/test/EncodeDecodeMarketDataUnitTest.java @@ -1,4 +1,4 @@ -package com.baeldung.test; +package com.baeldung.sbe.test; import java.math.BigDecimal; import java.nio.ByteBuffer; diff --git a/libraries-5/src/test/java/com/baeldung/yauaa/HomePageControllerIntegrationTest.java b/libraries-3/src/test/java/com/baeldung/yauaa/HomePageControllerIntegrationTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/yauaa/HomePageControllerIntegrationTest.java rename to libraries-3/src/test/java/com/baeldung/yauaa/HomePageControllerIntegrationTest.java diff --git a/libraries-4/pom.xml b/libraries-4/pom.xml index ee8ddbc09986..af690b085438 100644 --- a/libraries-4/pom.xml +++ b/libraries-4/pom.xml @@ -12,26 +12,11 @@ - - org.jdeferred - jdeferred-core - ${jdeferred.version} - org.olap4j olap4j ${olap4j.version} - - net.engio - mbassador - ${mbassador.version} - - - com.machinezoo.noexception - noexception - ${noexception.version} - org.springframework spring-web @@ -58,16 +43,6 @@ streamex ${streamex.version} - - javax.el - javax.el-api - ${javax.el.version} - - - org.glassfish.web - javax.el - ${glassfish.web.version} - com.fasterxml.jackson.core jackson-core @@ -83,21 +58,6 @@ commons-lang3 ${commons-lang3.version} - - org.jfree - jfreechart - ${jfreechart.version} - - - com.github.javaparser - javaparser-core - ${javaparser.version} - - - dev.failsafe - failsafe - ${dev.failsafe.version} - io.aeron aeron-all @@ -108,28 +68,55 @@ oshi-core ${oshi.version} - + + io.github.classgraph + classgraph + ${classgraph.version} + + + org.mapdb + mapdb + ${mapdb.version} + + + edu.uci.ics + crawler4j + ${crawler4j.version} + + + com.sleepycat + je + + + + + com.googlecode.lanterna + lanterna + ${lanterna.version} + + + org.kohsuke + github-api + ${github-api.version} + 2.14.2 2.14.2 - 1.2.6 - 1.1.0 - 1.3.1 4.3.8.RELEASE 2.5 3.2.0-m7 3.0.0 0.6.5 - 3.0.0 - 2.2.4 1.2.0 - 1.5.4 - 3.25.10 - 3.3.2 1.44.1 6.7.1 + 3.0.8 + 4.8.153 + 4.4.0 + 3.1.2 + 1.327 diff --git a/libraries-2/src/main/java/com/baeldung/crawler4j/CrawlerStatistics.java b/libraries-4/src/main/java/com/baeldung/crawler4j/CrawlerStatistics.java similarity index 100% rename from libraries-2/src/main/java/com/baeldung/crawler4j/CrawlerStatistics.java rename to libraries-4/src/main/java/com/baeldung/crawler4j/CrawlerStatistics.java diff --git a/libraries-2/src/main/java/com/baeldung/crawler4j/HtmlCrawler.java b/libraries-4/src/main/java/com/baeldung/crawler4j/HtmlCrawler.java similarity index 100% rename from libraries-2/src/main/java/com/baeldung/crawler4j/HtmlCrawler.java rename to libraries-4/src/main/java/com/baeldung/crawler4j/HtmlCrawler.java diff --git a/libraries-2/src/main/java/com/baeldung/crawler4j/HtmlCrawlerController.java b/libraries-4/src/main/java/com/baeldung/crawler4j/HtmlCrawlerController.java similarity index 100% rename from libraries-2/src/main/java/com/baeldung/crawler4j/HtmlCrawlerController.java rename to libraries-4/src/main/java/com/baeldung/crawler4j/HtmlCrawlerController.java diff --git a/libraries-2/src/main/java/com/baeldung/crawler4j/ImageCrawler.java b/libraries-4/src/main/java/com/baeldung/crawler4j/ImageCrawler.java similarity index 100% rename from libraries-2/src/main/java/com/baeldung/crawler4j/ImageCrawler.java rename to libraries-4/src/main/java/com/baeldung/crawler4j/ImageCrawler.java diff --git a/libraries-2/src/main/java/com/baeldung/crawler4j/ImageCrawlerController.java b/libraries-4/src/main/java/com/baeldung/crawler4j/ImageCrawlerController.java similarity index 100% rename from libraries-2/src/main/java/com/baeldung/crawler4j/ImageCrawlerController.java rename to libraries-4/src/main/java/com/baeldung/crawler4j/ImageCrawlerController.java diff --git a/libraries-2/src/main/java/com/baeldung/crawler4j/MultipleCrawlerController.java b/libraries-4/src/main/java/com/baeldung/crawler4j/MultipleCrawlerController.java similarity index 100% rename from libraries-2/src/main/java/com/baeldung/crawler4j/MultipleCrawlerController.java rename to libraries-4/src/main/java/com/baeldung/crawler4j/MultipleCrawlerController.java diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/ClassGraphUnitTest.java b/libraries-4/src/test/java/com/baeldung/classgraph/ClassGraphUnitTest.java similarity index 91% rename from libraries-2/src/test/java/com/baeldung/classgraph/ClassGraphUnitTest.java rename to libraries-4/src/test/java/com/baeldung/classgraph/ClassGraphUnitTest.java index 3dc99e6a3288..a05abe39683c 100644 --- a/libraries-2/src/test/java/com/baeldung/classgraph/ClassGraphUnitTest.java +++ b/libraries-4/src/test/java/com/baeldung/classgraph/ClassGraphUnitTest.java @@ -1,12 +1,19 @@ package com.baeldung.classgraph; -import io.github.classgraph.*; -import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.util.function.Consumer; -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; + +import io.github.classgraph.AnnotationInfo; +import io.github.classgraph.ClassGraph; +import io.github.classgraph.ClassInfo; +import io.github.classgraph.ClassInfoList; +import io.github.classgraph.Resource; +import io.github.classgraph.ResourceList; +import io.github.classgraph.ScanResult; public class ClassGraphUnitTest { diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/ClassWithAnnotation.java b/libraries-4/src/test/java/com/baeldung/classgraph/ClassWithAnnotation.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/classgraph/ClassWithAnnotation.java rename to libraries-4/src/test/java/com/baeldung/classgraph/ClassWithAnnotation.java diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/FieldWithAnnotation.java b/libraries-4/src/test/java/com/baeldung/classgraph/FieldWithAnnotation.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/classgraph/FieldWithAnnotation.java rename to libraries-4/src/test/java/com/baeldung/classgraph/FieldWithAnnotation.java diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/MethodWithAnnotation.java b/libraries-4/src/test/java/com/baeldung/classgraph/MethodWithAnnotation.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/classgraph/MethodWithAnnotation.java rename to libraries-4/src/test/java/com/baeldung/classgraph/MethodWithAnnotation.java diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterDao.java b/libraries-4/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterDao.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterDao.java rename to libraries-4/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterDao.java diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterWeb.java b/libraries-4/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterWeb.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterWeb.java rename to libraries-4/src/test/java/com/baeldung/classgraph/MethodWithAnnotationParameterWeb.java diff --git a/libraries-2/src/test/java/com/baeldung/classgraph/TestAnnotation.java b/libraries-4/src/test/java/com/baeldung/classgraph/TestAnnotation.java similarity index 64% rename from libraries-2/src/test/java/com/baeldung/classgraph/TestAnnotation.java rename to libraries-4/src/test/java/com/baeldung/classgraph/TestAnnotation.java index e3f5df92ed5c..d4b10e479c70 100644 --- a/libraries-2/src/test/java/com/baeldung/classgraph/TestAnnotation.java +++ b/libraries-4/src/test/java/com/baeldung/classgraph/TestAnnotation.java @@ -1,11 +1,13 @@ package com.baeldung.classgraph; +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.TYPE; + import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import static java.lang.annotation.ElementType.*; - @Target({TYPE, METHOD, FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface TestAnnotation { diff --git a/libraries-5/src/test/java/com/baeldung/githubapi/ClientLiveTest.java b/libraries-4/src/test/java/com/baeldung/githubapi/ClientLiveTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/githubapi/ClientLiveTest.java rename to libraries-4/src/test/java/com/baeldung/githubapi/ClientLiveTest.java index 296ba5bbe67a..ff782596afae 100644 --- a/libraries-5/src/test/java/com/baeldung/githubapi/ClientLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/githubapi/ClientLiveTest.java @@ -1,12 +1,12 @@ package com.baeldung.githubapi; -import org.junit.jupiter.api.Test; -import org.kohsuke.github.GitHub; -import org.kohsuke.github.GitHubBuilder; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; +import org.kohsuke.github.GitHub; +import org.kohsuke.github.GitHubBuilder; public class ClientLiveTest { diff --git a/libraries-5/src/test/java/com/baeldung/githubapi/RepositoryLiveTest.java b/libraries-4/src/test/java/com/baeldung/githubapi/RepositoryLiveTest.java similarity index 94% rename from libraries-5/src/test/java/com/baeldung/githubapi/RepositoryLiveTest.java rename to libraries-4/src/test/java/com/baeldung/githubapi/RepositoryLiveTest.java index ae9e343bf0e0..774eaadf6dc5 100644 --- a/libraries-5/src/test/java/com/baeldung/githubapi/RepositoryLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/githubapi/RepositoryLiveTest.java @@ -1,19 +1,25 @@ package com.baeldung.githubapi; -import com.google.common.base.Charsets; -import org.apache.commons.io.IOUtils; -import org.junit.jupiter.api.Test; -import org.kohsuke.github.*; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.IOException; import java.util.HashSet; import java.util.List; import java.util.Set; -import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.apache.commons.io.IOUtils; +import org.junit.jupiter.api.Test; +import org.kohsuke.github.GHBranch; +import org.kohsuke.github.GHCommit; +import org.kohsuke.github.GHContent; +import org.kohsuke.github.GHRepository; +import org.kohsuke.github.GHUser; +import org.kohsuke.github.GitHub; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.base.Charsets; public class RepositoryLiveTest { private static final Logger LOG = LoggerFactory.getLogger(RepositoryLiveTest.class); diff --git a/libraries-5/src/test/java/com/baeldung/githubapi/UsersLiveTest.java b/libraries-4/src/test/java/com/baeldung/githubapi/UsersLiveTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/githubapi/UsersLiveTest.java rename to libraries-4/src/test/java/com/baeldung/githubapi/UsersLiveTest.java index 6be1275343cf..845e76890ac7 100644 --- a/libraries-5/src/test/java/com/baeldung/githubapi/UsersLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/githubapi/UsersLiveTest.java @@ -1,5 +1,9 @@ package com.baeldung.githubapi; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.io.IOException; + import org.junit.jupiter.api.Test; import org.kohsuke.github.GHMyself; import org.kohsuke.github.GHUser; @@ -7,10 +11,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.io.IOException; - -import static org.junit.jupiter.api.Assertions.assertEquals; - public class UsersLiveTest { private static final Logger LOG = LoggerFactory.getLogger(UsersLiveTest.class); diff --git a/libraries-5/src/test/java/com/baeldung/lanterna/GuiLiveTest.java b/libraries-4/src/test/java/com/baeldung/lanterna/GuiLiveTest.java similarity index 92% rename from libraries-5/src/test/java/com/baeldung/lanterna/GuiLiveTest.java rename to libraries-4/src/test/java/com/baeldung/lanterna/GuiLiveTest.java index be3db5f90599..1794119eb8a4 100644 --- a/libraries-5/src/test/java/com/baeldung/lanterna/GuiLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/lanterna/GuiLiveTest.java @@ -1,13 +1,22 @@ package com.baeldung.lanterna; -import com.googlecode.lanterna.gui2.*; +import java.util.Set; + +import org.junit.jupiter.api.Test; + +import com.googlecode.lanterna.gui2.BasicWindow; +import com.googlecode.lanterna.gui2.Button; +import com.googlecode.lanterna.gui2.Direction; +import com.googlecode.lanterna.gui2.Label; +import com.googlecode.lanterna.gui2.LinearLayout; +import com.googlecode.lanterna.gui2.MultiWindowTextGUI; +import com.googlecode.lanterna.gui2.Panel; +import com.googlecode.lanterna.gui2.TextBox; +import com.googlecode.lanterna.gui2.Window; import com.googlecode.lanterna.gui2.dialogs.MessageDialogBuilder; import com.googlecode.lanterna.screen.TerminalScreen; import com.googlecode.lanterna.terminal.DefaultTerminalFactory; import com.googlecode.lanterna.terminal.Terminal; -import org.junit.jupiter.api.Test; - -import java.util.Set; public class GuiLiveTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/lanterna/LowLevelLiveTest.java b/libraries-4/src/test/java/com/baeldung/lanterna/LowLevelLiveTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/lanterna/LowLevelLiveTest.java rename to libraries-4/src/test/java/com/baeldung/lanterna/LowLevelLiveTest.java index 805642c4753e..f0199bd688a6 100644 --- a/libraries-5/src/test/java/com/baeldung/lanterna/LowLevelLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/lanterna/LowLevelLiveTest.java @@ -1,11 +1,12 @@ package com.baeldung.lanterna; +import org.junit.jupiter.api.Test; + import com.googlecode.lanterna.SGR; import com.googlecode.lanterna.TextColor; import com.googlecode.lanterna.input.KeyType; import com.googlecode.lanterna.terminal.DefaultTerminalFactory; import com.googlecode.lanterna.terminal.Terminal; -import org.junit.jupiter.api.Test; public class LowLevelLiveTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/lanterna/ScreenLiveTest.java b/libraries-4/src/test/java/com/baeldung/lanterna/ScreenLiveTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/lanterna/ScreenLiveTest.java rename to libraries-4/src/test/java/com/baeldung/lanterna/ScreenLiveTest.java index 04326b52d1f2..5512af73bd73 100644 --- a/libraries-5/src/test/java/com/baeldung/lanterna/ScreenLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/lanterna/ScreenLiveTest.java @@ -1,5 +1,7 @@ package com.baeldung.lanterna; +import org.junit.jupiter.api.Test; + import com.googlecode.lanterna.SGR; import com.googlecode.lanterna.TextCharacter; import com.googlecode.lanterna.TextColor; @@ -7,7 +9,6 @@ import com.googlecode.lanterna.screen.TerminalScreen; import com.googlecode.lanterna.terminal.DefaultTerminalFactory; import com.googlecode.lanterna.terminal.Terminal; -import org.junit.jupiter.api.Test; public class ScreenLiveTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/lanterna/TerminalLiveTest.java b/libraries-4/src/test/java/com/baeldung/lanterna/TerminalLiveTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/lanterna/TerminalLiveTest.java rename to libraries-4/src/test/java/com/baeldung/lanterna/TerminalLiveTest.java index ff04ac16ea0b..6a41e35efbb9 100644 --- a/libraries-5/src/test/java/com/baeldung/lanterna/TerminalLiveTest.java +++ b/libraries-4/src/test/java/com/baeldung/lanterna/TerminalLiveTest.java @@ -1,8 +1,9 @@ package com.baeldung.lanterna; +import org.junit.jupiter.api.Test; + import com.googlecode.lanterna.terminal.DefaultTerminalFactory; import com.googlecode.lanterna.terminal.Terminal; -import org.junit.jupiter.api.Test; public class TerminalLiveTest { @Test diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java b/libraries-4/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java rename to libraries-4/src/test/java/com/baeldung/mapdb/CollectionsUnitTest.java diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java b/libraries-4/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java rename to libraries-4/src/test/java/com/baeldung/mapdb/HTreeMapUnitTest.java diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java b/libraries-4/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java rename to libraries-4/src/test/java/com/baeldung/mapdb/HelloBaeldungUnitTest.java diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java b/libraries-4/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java rename to libraries-4/src/test/java/com/baeldung/mapdb/InMemoryModesUnitTest.java diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java b/libraries-4/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java rename to libraries-4/src/test/java/com/baeldung/mapdb/SortedTableMapUnitTest.java diff --git a/libraries-2/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java b/libraries-4/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java similarity index 100% rename from libraries-2/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java rename to libraries-4/src/test/java/com/baeldung/mapdb/TransactionsUnitTest.java diff --git a/libraries-2/src/test/resources/classgraph/my.config b/libraries-4/src/test/resources/classgraph/my.config similarity index 100% rename from libraries-2/src/test/resources/classgraph/my.config rename to libraries-4/src/test/resources/classgraph/my.config diff --git a/libraries-5/pom.xml b/libraries-5/pom.xml index 7ef64648eaf2..648b24f19336 100644 --- a/libraries-5/pom.xml +++ b/libraries-5/pom.xml @@ -11,61 +11,7 @@ 1.0.0-SNAPSHOT - - - - org.apache.maven.plugins - maven-compiler-plugin - - 17 - 17 - - -Xplugin:Manifold - - - - systems.manifold - manifold-json - ${manifold.version} - - - am.ik.yavi - yavi - ${yavi.version} - - - - - - - - - io.activej - activej-http - ${activej.version} - - - com.fasterxml.jackson.core - jackson-databind - ${jackson-databind.version} - - - io.activej - activej-inject - ${activej.version} - - - io.activej - activej-promise - ${activej.version} - - - io.activej - activej-test - ${activej.version} - test - com.alicp.jetcache jetcache-core @@ -81,7 +27,6 @@ jetcache-autoconfigure ${jetcache.version} - org.springframework.boot spring-boot-starter @@ -102,62 +47,6 @@ spring-boot-starter-thymeleaf ${spring-boot.version} - - - systems.manifold - manifold-json-rt - ${manifold.version} - - - systems.manifold - manifold-csv-rt - ${manifold.version} - - - systems.manifold - manifold-xml-rt - ${manifold.version} - - - systems.manifold - manifold-yaml-rt - ${manifold.version} - - - nl.basjes.parse.useragent - yauaa - ${yauaa.version} - - - am.ik.yavi - yavi - ${yavi.version} - - - com.googlecode.lanterna - lanterna - ${lanterna.version} - - - org.soot-oss - sootup.core - ${sootup.version} - - - org.soot-oss - sootup.java.core - ${sootup.version} - - - org.soot-oss - sootup.java.sourcecode - ${sootup.version} - - - org.soot-oss - sootup.java.bytecode - ${sootup.version} - org.jline jline @@ -168,11 +57,6 @@ jline-terminal-jansi ${jline.version} - - org.kohsuke - github-api - ${github-api.version} - org.springframework.boot spring-boot-starter-test @@ -185,27 +69,88 @@ ${com.restfb.version} - io.github.java-diff-utils - java-diff-utils - ${java-diff-utils.version} + org.jooq + jool + ${jool.version} + + + net.engio + mbassador + ${mbassador.version} + + + javax.el + javax.el-api + ${javax.el.version} + + + org.glassfish.web + javax.el + ${glassfish.web.version} + + + org.rosuda.REngine + Rserve + ${rserve.version} + + + com.github.jbytecode + RCaller + ${rcaller.version} + + + org.renjin + renjin-script-engine + ${renjin.version} + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + com/baeldung/r/FastRMean.java + + + com/baeldung/r/FastRMeanUnitTest.java + + + + + + + + + nm-repo + Numerical Method's Maven Repository + http://repo.numericalmethod.com/maven/ + default + + + + bedatadriven + BeDataDriven repository + https://nexus.bedatadriven.com/content/groups/public/ + + + 2.7.6 3.3.0 6.1.8 - 3.1.2 - 2024.1.20 - 7.28.1 - 0.14.1 - 6.0-rc2 - 2.17.0 - 1.3.0 3.28.0 - 1.327 2025.6.0 - 4.12 + 0.9.12 + 1.3.1 + 3.0.0 + 2.2.4 + 3.5-beta72 + 3.0 + 1.8.1 diff --git a/libraries-4/src/main/java/com/baeldung/mbassador/AckMessage.java b/libraries-5/src/main/java/com/baeldung/mbassador/AckMessage.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/mbassador/AckMessage.java rename to libraries-5/src/main/java/com/baeldung/mbassador/AckMessage.java diff --git a/libraries-4/src/main/java/com/baeldung/mbassador/Message.java b/libraries-5/src/main/java/com/baeldung/mbassador/Message.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/mbassador/Message.java rename to libraries-5/src/main/java/com/baeldung/mbassador/Message.java diff --git a/libraries-4/src/main/java/com/baeldung/mbassador/RejectMessage.java b/libraries-5/src/main/java/com/baeldung/mbassador/RejectMessage.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/mbassador/RejectMessage.java rename to libraries-5/src/main/java/com/baeldung/mbassador/RejectMessage.java diff --git a/libraries/src/main/java/com/baeldung/r/FastRMean.java b/libraries-5/src/main/java/com/baeldung/r/FastRMean.java similarity index 100% rename from libraries/src/main/java/com/baeldung/r/FastRMean.java rename to libraries-5/src/main/java/com/baeldung/r/FastRMean.java diff --git a/libraries/src/main/java/com/baeldung/r/RCallerMean.java b/libraries-5/src/main/java/com/baeldung/r/RCallerMean.java similarity index 100% rename from libraries/src/main/java/com/baeldung/r/RCallerMean.java rename to libraries-5/src/main/java/com/baeldung/r/RCallerMean.java diff --git a/libraries/src/main/java/com/baeldung/r/RUtils.java b/libraries-5/src/main/java/com/baeldung/r/RUtils.java similarity index 100% rename from libraries/src/main/java/com/baeldung/r/RUtils.java rename to libraries-5/src/main/java/com/baeldung/r/RUtils.java diff --git a/libraries/src/main/java/com/baeldung/r/RenjinMean.java b/libraries-5/src/main/java/com/baeldung/r/RenjinMean.java similarity index 100% rename from libraries/src/main/java/com/baeldung/r/RenjinMean.java rename to libraries-5/src/main/java/com/baeldung/r/RenjinMean.java diff --git a/libraries/src/main/java/com/baeldung/r/RserveMean.java b/libraries-5/src/main/java/com/baeldung/r/RserveMean.java similarity index 100% rename from libraries/src/main/java/com/baeldung/r/RserveMean.java rename to libraries-5/src/main/java/com/baeldung/r/RserveMean.java diff --git a/libraries-5/src/main/resources/logback.xml b/libraries-5/src/main/resources/logback.xml new file mode 100644 index 000000000000..7d900d8ea884 --- /dev/null +++ b/libraries-5/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/libraries-3/src/test/java/com/baeldung/jool/JOOLUnitTest.java b/libraries-5/src/test/java/com/baeldung/jool/JOOLUnitTest.java similarity index 100% rename from libraries-3/src/test/java/com/baeldung/jool/JOOLUnitTest.java rename to libraries-5/src/test/java/com/baeldung/jool/JOOLUnitTest.java diff --git a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchUnitTest.java b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchUnitTest.java rename to libraries-5/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchUnitTest.java index 903da009956e..d5d2a6201b5f 100644 --- a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorAsyncDispatchUnitTest.java @@ -1,16 +1,17 @@ package com.baeldung.mbassador; -import net.engio.mbassy.bus.MBassador; -import net.engio.mbassy.listener.Handler; -import org.junit.Before; -import org.junit.Test; - -import java.util.concurrent.atomic.AtomicBoolean; - import static org.awaitility.Awaitility.await; import static org.hamcrest.Matchers.equalTo; import static org.junit.Assert.assertNotNull; +import java.util.concurrent.atomic.AtomicBoolean; + +import org.junit.Before; +import org.junit.Test; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.listener.Handler; + public class MBassadorAsyncDispatchUnitTest { private MBassador dispatcher = new MBassador(); diff --git a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationUnitTest.java b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationUnitTest.java rename to libraries-5/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationUnitTest.java index bf20645e2d1b..6f88a2a05e1a 100644 --- a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorAsyncInvocationUnitTest.java @@ -1,17 +1,18 @@ package com.baeldung.mbassador; -import net.engio.mbassy.bus.MBassador; -import net.engio.mbassy.listener.Handler; -import net.engio.mbassy.listener.Invoke; -import org.junit.Before; -import org.junit.Test; - -import java.util.concurrent.atomic.AtomicBoolean; - import static org.awaitility.Awaitility.await; import static org.hamcrest.Matchers.equalTo; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; + +import java.util.concurrent.atomic.AtomicBoolean; + +import org.junit.Before; +import org.junit.Test; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.listener.Handler; +import net.engio.mbassy.listener.Invoke; public class MBassadorAsyncInvocationUnitTest { diff --git a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorBasicUnitTest.java b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorBasicUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/mbassador/MBassadorBasicUnitTest.java rename to libraries-5/src/test/java/com/baeldung/mbassador/MBassadorBasicUnitTest.java index bd05d2888e20..b28186354f6a 100644 --- a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorBasicUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorBasicUnitTest.java @@ -1,16 +1,17 @@ package com.baeldung.mbassador; -import net.engio.mbassy.bus.MBassador; -import net.engio.mbassy.bus.common.DeadMessage; -import net.engio.mbassy.listener.Handler; -import org.junit.Before; -import org.junit.Test; - import static junit.framework.TestCase.assertTrue; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import org.junit.Before; +import org.junit.Test; + +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.bus.common.DeadMessage; +import net.engio.mbassy.listener.Handler; + public class MBassadorBasicUnitTest { private MBassador dispatcher = new MBassador(); diff --git a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorConfigurationUnitTest.java b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorConfigurationUnitTest.java similarity index 94% rename from libraries-4/src/test/java/com/baeldung/mbassador/MBassadorConfigurationUnitTest.java rename to libraries-5/src/test/java/com/baeldung/mbassador/MBassadorConfigurationUnitTest.java index 68cfff001457..41716a8ecfbb 100644 --- a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorConfigurationUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorConfigurationUnitTest.java @@ -1,16 +1,18 @@ package com.baeldung.mbassador; +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import java.util.LinkedList; + +import org.junit.Before; +import org.junit.Test; + import net.engio.mbassy.bus.MBassador; import net.engio.mbassy.bus.error.IPublicationErrorHandler; import net.engio.mbassy.bus.error.PublicationError; import net.engio.mbassy.listener.Handler; -import org.junit.Before; -import org.junit.Test; - -import java.util.*; - -import static junit.framework.TestCase.assertTrue; -import static org.junit.Assert.*; public class MBassadorConfigurationUnitTest implements IPublicationErrorHandler { diff --git a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorFilterUnitTest.java b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorFilterUnitTest.java similarity index 99% rename from libraries-4/src/test/java/com/baeldung/mbassador/MBassadorFilterUnitTest.java rename to libraries-5/src/test/java/com/baeldung/mbassador/MBassadorFilterUnitTest.java index 0094140feed1..e9199fda32b7 100644 --- a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorFilterUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorFilterUnitTest.java @@ -1,18 +1,19 @@ package com.baeldung.mbassador; +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + import net.engio.mbassy.bus.MBassador; import net.engio.mbassy.bus.common.DeadMessage; import net.engio.mbassy.bus.common.FilteredMessage; import net.engio.mbassy.listener.Filter; import net.engio.mbassy.listener.Filters; import net.engio.mbassy.listener.Handler; -import org.junit.Before; -import org.junit.Test; - -import static junit.framework.TestCase.assertTrue; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; public class MBassadorFilterUnitTest { diff --git a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorHierarchyUnitTest.java b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorHierarchyUnitTest.java similarity index 94% rename from libraries-4/src/test/java/com/baeldung/mbassador/MBassadorHierarchyUnitTest.java rename to libraries-5/src/test/java/com/baeldung/mbassador/MBassadorHierarchyUnitTest.java index 6f1ca83f0a14..2709c66f2a5c 100644 --- a/libraries-4/src/test/java/com/baeldung/mbassador/MBassadorHierarchyUnitTest.java +++ b/libraries-5/src/test/java/com/baeldung/mbassador/MBassadorHierarchyUnitTest.java @@ -1,11 +1,13 @@ package com.baeldung.mbassador; -import net.engio.mbassy.bus.MBassador; -import net.engio.mbassy.listener.Handler; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + import org.junit.Before; import org.junit.Test; -import static org.junit.Assert.*; +import net.engio.mbassy.bus.MBassador; +import net.engio.mbassy.listener.Handler; public class MBassadorHierarchyUnitTest { diff --git a/libraries/src/test/java/com/baeldung/r/FastRMeanUnitTest.java b/libraries-5/src/test/java/com/baeldung/r/FastRMeanUnitTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/r/FastRMeanUnitTest.java rename to libraries-5/src/test/java/com/baeldung/r/FastRMeanUnitTest.java diff --git a/libraries/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java b/libraries-5/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java rename to libraries-5/src/test/java/com/baeldung/r/RCallerMeanIntegrationTest.java diff --git a/libraries/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java b/libraries-5/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java rename to libraries-5/src/test/java/com/baeldung/r/RenjinMeanUnitTest.java diff --git a/libraries/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java b/libraries-5/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java rename to libraries-5/src/test/java/com/baeldung/r/RserveMeanIntegrationTest.java diff --git a/libraries-5/src/test/resources/logback-test.xml b/libraries-5/src/test/resources/logback-test.xml new file mode 100644 index 000000000000..8d4771e308ba --- /dev/null +++ b/libraries-5/src/test/resources/logback-test.xml @@ -0,0 +1,12 @@ + + + + + [%d{ISO8601}]-[%thread] %-5level %logger - %msg%n + + + + + + + \ No newline at end of file diff --git a/libraries/src/test/resources/script.R b/libraries-5/src/test/resources/script.R similarity index 100% rename from libraries/src/test/resources/script.R rename to libraries-5/src/test/resources/script.R diff --git a/libraries-6/pom.xml b/libraries-6/pom.xml new file mode 100644 index 000000000000..b3ae0eef9235 --- /dev/null +++ b/libraries-6/pom.xml @@ -0,0 +1,95 @@ + + + 4.0.0 + libraries-6 + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + + org.jdeferred + jdeferred-core + ${jdeferred.version} + + + com.machinezoo.noexception + noexception + ${noexception.version} + + + io.atlassian.fugue + fugue + ${fugue.version} + + + com.jcabi + jcabi-aspects + ${jcabi-aspects.version} + + + org.aspectj + aspectjrt + ${aspectjrt.version} + runtime + + + info.debatty + java-lsh + ${java-lsh.version} + + + org.functionaljava + functionaljava-java8 + ${functionaljava.version} + + + + + + + com.jcabi + jcabi-maven-plugin + ${jcabi-maven-plugin.version} + + + + ajc + + + + + + org.aspectj + aspectjtools + ${aspectjtools.version} + + + org.aspectj + aspectjweaver + ${aspectjweaver.version} + + + + + + + + 1.2.6 + 1.1.0 + 4.5.1 + 0.26.0 + 1.9.20.1 + 0.14.1 + 1.9.20.1 + 1.9.20.1 + 0.10 + 4.8.1 + + + diff --git a/libraries-3/src/main/java/com/baeldung/arthas/FibonacciGenerator.java b/libraries-6/src/main/java/com/baeldung/arthas/FibonacciGenerator.java similarity index 100% rename from libraries-3/src/main/java/com/baeldung/arthas/FibonacciGenerator.java rename to libraries-6/src/main/java/com/baeldung/arthas/FibonacciGenerator.java index 27cf0dacf66a..5af068ce3d26 100644 --- a/libraries-3/src/main/java/com/baeldung/arthas/FibonacciGenerator.java +++ b/libraries-6/src/main/java/com/baeldung/arthas/FibonacciGenerator.java @@ -1,9 +1,9 @@ package com.baeldung.arthas; -import java.io.IOException; - import static java.lang.String.format; +import java.io.IOException; + public class FibonacciGenerator { public static void main(String[] args) throws IOException { diff --git a/libraries/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java b/libraries-6/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java similarity index 100% rename from libraries/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java rename to libraries-6/src/main/java/com/baeldung/fj/FunctionalJavaIOMain.java diff --git a/libraries/src/main/java/com/baeldung/fj/FunctionalJavaMain.java b/libraries-6/src/main/java/com/baeldung/fj/FunctionalJavaMain.java similarity index 100% rename from libraries/src/main/java/com/baeldung/fj/FunctionalJavaMain.java rename to libraries-6/src/main/java/com/baeldung/fj/FunctionalJavaMain.java diff --git a/libraries-3/src/main/java/com/baeldung/jcabi/JcabiAspectJ.java b/libraries-6/src/main/java/com/baeldung/jcabi/JcabiAspectJ.java similarity index 93% rename from libraries-3/src/main/java/com/baeldung/jcabi/JcabiAspectJ.java rename to libraries-6/src/main/java/com/baeldung/jcabi/JcabiAspectJ.java index 20a2ed65b36e..127bf3248550 100644 --- a/libraries-3/src/main/java/com/baeldung/jcabi/JcabiAspectJ.java +++ b/libraries-6/src/main/java/com/baeldung/jcabi/JcabiAspectJ.java @@ -1,12 +1,13 @@ package com.baeldung.jcabi; - import java.io.BufferedReader; -import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; -import java.net.*; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.net.URLConnection; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; @@ -92,7 +93,7 @@ public static void divideByZero() { int x = 1/0; } - @RetryOnFailure(attempts = 2, types = {java.lang.NumberFormatException.class}) + @RetryOnFailure(attempts = 2, types = { NumberFormatException.class}) @Quietly public static void divideByZeroQuietly() { int x = 1/0; diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/FilterDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/FilterDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/FilterDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/FilterDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/PipeDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/PipeDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/PipeDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/PipeDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/PromiseDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/PromiseDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/PromiseDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/PromiseDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/ThreadSafeDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/manager/DeferredManagerWithExecutorDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java b/libraries-6/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java rename to libraries-6/src/main/java/com/baeldung/jdeffered/manager/SimpleDeferredManagerDemo.java diff --git a/libraries-4/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java b/libraries-6/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java similarity index 100% rename from libraries-4/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java rename to libraries-6/src/main/java/com/baeldung/noexception/CustomExceptionHandler.java diff --git a/libraries-6/src/main/resources/logback.xml b/libraries-6/src/main/resources/logback.xml new file mode 100644 index 000000000000..7d900d8ea884 --- /dev/null +++ b/libraries-6/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/fj/FunctionalJavaUnitTest.java b/libraries-6/src/test/java/com/baeldung/fj/FunctionalJavaUnitTest.java similarity index 100% rename from libraries/src/test/java/com/baeldung/fj/FunctionalJavaUnitTest.java rename to libraries-6/src/test/java/com/baeldung/fj/FunctionalJavaUnitTest.java diff --git a/libraries-3/src/test/java/com/baeldung/fugue/FugueUnitTest.java b/libraries-6/src/test/java/com/baeldung/fugue/FugueUnitTest.java similarity index 96% rename from libraries-3/src/test/java/com/baeldung/fugue/FugueUnitTest.java rename to libraries-6/src/test/java/com/baeldung/fugue/FugueUnitTest.java index 1f54bdf6cf21..e05a4deda8a2 100644 --- a/libraries-3/src/test/java/com/baeldung/fugue/FugueUnitTest.java +++ b/libraries-6/src/test/java/com/baeldung/fugue/FugueUnitTest.java @@ -17,7 +17,14 @@ import org.junit.Assert; import org.junit.Test; -import io.atlassian.fugue.*; +import io.atlassian.fugue.Checked; +import io.atlassian.fugue.Either; +import io.atlassian.fugue.Iterables; +import io.atlassian.fugue.Option; +import io.atlassian.fugue.Options; +import io.atlassian.fugue.Pair; +import io.atlassian.fugue.Try; +import io.atlassian.fugue.Unit; public class FugueUnitTest { diff --git a/libraries-4/src/test/java/com/baeldung/jdeffered/JDeferredUnitTest.java b/libraries-6/src/test/java/com/baeldung/jdeffered/JDeferredUnitTest.java similarity index 100% rename from libraries-4/src/test/java/com/baeldung/jdeffered/JDeferredUnitTest.java rename to libraries-6/src/test/java/com/baeldung/jdeffered/JDeferredUnitTest.java diff --git a/libraries/src/test/java/com/baeldung/lsh/LocalSensitiveHashingUnitTest.java b/libraries-6/src/test/java/com/baeldung/lsh/LocalSensitiveHashingUnitTest.java similarity index 99% rename from libraries/src/test/java/com/baeldung/lsh/LocalSensitiveHashingUnitTest.java rename to libraries-6/src/test/java/com/baeldung/lsh/LocalSensitiveHashingUnitTest.java index 5928765aaa78..f597cff74431 100644 --- a/libraries/src/test/java/com/baeldung/lsh/LocalSensitiveHashingUnitTest.java +++ b/libraries-6/src/test/java/com/baeldung/lsh/LocalSensitiveHashingUnitTest.java @@ -1,12 +1,13 @@ package com.baeldung.lsh; -import info.debatty.java.lsh.LSHMinHash; -import org.junit.Ignore; -import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; import java.util.Arrays; -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Ignore; +import org.junit.Test; + +import info.debatty.java.lsh.LSHMinHash; public class LocalSensitiveHashingUnitTest { diff --git a/libraries-4/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java b/libraries-6/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java similarity index 100% rename from libraries-4/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java rename to libraries-6/src/test/java/com/baeldung/noexception/NoExceptionUnitTest.java diff --git a/libraries-7/pom.xml b/libraries-7/pom.xml new file mode 100644 index 000000000000..a6c1cd92a320 --- /dev/null +++ b/libraries-7/pom.xml @@ -0,0 +1,81 @@ + + + 4.0.0 + libraries-7 + + + parent-modules + com.baeldung + 1.0.0-SNAPSHOT + + + + + io.github.java-diff-utils + java-diff-utils + ${java-diff-utils.version} + + + am.ik.yavi + yavi + ${yavi.version} + + + systems.manifold + manifold-json-rt + ${manifold.version} + + + systems.manifold + manifold-csv-rt + ${manifold.version} + + + systems.manifold + manifold-xml-rt + ${manifold.version} + + + systems.manifold + manifold-yaml-rt + ${manifold.version} + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 17 + 17 + + -Xplugin:Manifold + + + + systems.manifold + manifold-json + ${manifold.version} + + + am.ik.yavi + yavi + ${yavi.version} + + + + + + + + + 4.12 + 0.14.1 + 2024.1.20 + + + diff --git a/libraries-5/src/main/java/com/baeldung/javadiffutils/PatchUtil.java b/libraries-7/src/main/java/com/baeldung/javadiffutils/PatchUtil.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/javadiffutils/PatchUtil.java rename to libraries-7/src/main/java/com/baeldung/javadiffutils/PatchUtil.java diff --git a/libraries-5/src/main/java/com/baeldung/javadiffutils/SideBySideViewUtil.java b/libraries-7/src/main/java/com/baeldung/javadiffutils/SideBySideViewUtil.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/javadiffutils/SideBySideViewUtil.java rename to libraries-7/src/main/java/com/baeldung/javadiffutils/SideBySideViewUtil.java diff --git a/libraries-5/src/main/java/com/baeldung/javadiffutils/TextComparatorUtil.java b/libraries-7/src/main/java/com/baeldung/javadiffutils/TextComparatorUtil.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/javadiffutils/TextComparatorUtil.java rename to libraries-7/src/main/java/com/baeldung/javadiffutils/TextComparatorUtil.java diff --git a/libraries-5/src/main/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtil.java b/libraries-7/src/main/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtil.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtil.java rename to libraries-7/src/main/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtil.java diff --git a/libraries-5/src/test/java/com/baeldung/javadiffutils/PatchUtilTest.java b/libraries-7/src/test/java/com/baeldung/javadiffutils/PatchUtilTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/javadiffutils/PatchUtilTest.java rename to libraries-7/src/test/java/com/baeldung/javadiffutils/PatchUtilTest.java diff --git a/libraries-5/src/test/java/com/baeldung/javadiffutils/SideBySideViewUtilTest.java b/libraries-7/src/test/java/com/baeldung/javadiffutils/SideBySideViewUtilTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/javadiffutils/SideBySideViewUtilTest.java rename to libraries-7/src/test/java/com/baeldung/javadiffutils/SideBySideViewUtilTest.java diff --git a/libraries-5/src/test/java/com/baeldung/javadiffutils/TextComparatorUtilTest.java b/libraries-7/src/test/java/com/baeldung/javadiffutils/TextComparatorUtilTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/javadiffutils/TextComparatorUtilTest.java rename to libraries-7/src/test/java/com/baeldung/javadiffutils/TextComparatorUtilTest.java diff --git a/libraries-5/src/test/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtilTest.java b/libraries-7/src/test/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtilTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtilTest.java rename to libraries-7/src/test/java/com/baeldung/javadiffutils/UnifiedDiffGeneratorUtilTest.java diff --git a/libraries-5/src/test/java/com/baeldung/manifold/ComplexUnitTest.java b/libraries-7/src/test/java/com/baeldung/manifold/ComplexUnitTest.java similarity index 91% rename from libraries-5/src/test/java/com/baeldung/manifold/ComplexUnitTest.java rename to libraries-7/src/test/java/com/baeldung/manifold/ComplexUnitTest.java index 30425df3c66d..d53893ca9919 100644 --- a/libraries-5/src/test/java/com/baeldung/manifold/ComplexUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/manifold/ComplexUnitTest.java @@ -1,10 +1,10 @@ package com.baeldung.manifold; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.time.LocalDateTime; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class ComplexUnitTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/manifold/ComplexUserUnitTest.java b/libraries-7/src/test/java/com/baeldung/manifold/ComplexUserUnitTest.java similarity index 91% rename from libraries-5/src/test/java/com/baeldung/manifold/ComplexUserUnitTest.java rename to libraries-7/src/test/java/com/baeldung/manifold/ComplexUserUnitTest.java index 59720373fc9f..560e619b3dc9 100644 --- a/libraries-5/src/test/java/com/baeldung/manifold/ComplexUserUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/manifold/ComplexUserUnitTest.java @@ -1,8 +1,8 @@ package com.baeldung.manifold; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class ComplexUserUnitTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/manifold/ComposedUnitTest.java b/libraries-7/src/test/java/com/baeldung/manifold/ComposedUnitTest.java similarity index 93% rename from libraries-5/src/test/java/com/baeldung/manifold/ComposedUnitTest.java rename to libraries-7/src/test/java/com/baeldung/manifold/ComposedUnitTest.java index 48852a386a0c..a3b7a5458795 100644 --- a/libraries-5/src/test/java/com/baeldung/manifold/ComposedUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/manifold/ComposedUnitTest.java @@ -1,10 +1,10 @@ package com.baeldung.manifold; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class ComposedUnitTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/manifold/SimpleUserUnitTest.java b/libraries-7/src/test/java/com/baeldung/manifold/SimpleUserUnitTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/manifold/SimpleUserUnitTest.java rename to libraries-7/src/test/java/com/baeldung/manifold/SimpleUserUnitTest.java index 0a8123fc2b5b..7b7e79022bec 100644 --- a/libraries-5/src/test/java/com/baeldung/manifold/SimpleUserUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/manifold/SimpleUserUnitTest.java @@ -1,12 +1,12 @@ package com.baeldung.manifold; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.InputStream; import java.io.InputStreamReader; import java.io.StringWriter; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class SimpleUserUnitTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/yavi/ArgumentsAnnotationUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/ArgumentsAnnotationUnitTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/yavi/ArgumentsAnnotationUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/ArgumentsAnnotationUnitTest.java index 5df11c879a03..11cb11014284 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/ArgumentsAnnotationUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/ArgumentsAnnotationUnitTest.java @@ -1,14 +1,15 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import java.util.NoSuchElementException; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.arguments.Arguments2Validator; import am.ik.yavi.builder.ArgumentsValidatorBuilder; import am.ik.yavi.core.Validated; import am.ik.yavi.meta.ConstraintArguments; -import org.junit.jupiter.api.Test; - -import java.util.NoSuchElementException; - -import static org.junit.jupiter.api.Assertions.*; public class ArgumentsAnnotationUnitTest { record Person(String name, int age) { diff --git a/libraries-5/src/test/java/com/baeldung/yavi/ArgumentsValidatorUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/ArgumentsValidatorUnitTest.java similarity index 100% rename from libraries-5/src/test/java/com/baeldung/yavi/ArgumentsValidatorUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/ArgumentsValidatorUnitTest.java index 899448215bf4..12cfaa67a251 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/ArgumentsValidatorUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/ArgumentsValidatorUnitTest.java @@ -1,15 +1,15 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; +import java.util.NoSuchElementException; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.arguments.Arguments1; import am.ik.yavi.arguments.Arguments2; import am.ik.yavi.arguments.Arguments2Validator; import am.ik.yavi.builder.ArgumentsValidatorBuilder; import am.ik.yavi.core.Validated; -import org.junit.jupiter.api.Test; - -import java.util.NoSuchElementException; - -import static org.junit.jupiter.api.Assertions.*; public class ArgumentsValidatorUnitTest { record Person(String name, int age) { diff --git a/libraries-5/src/test/java/com/baeldung/yavi/ConditionalConstraintUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/ConditionalConstraintUnitTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/yavi/ConditionalConstraintUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/ConditionalConstraintUnitTest.java index 5369b3f695e1..0f43c34363f3 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/ConditionalConstraintUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/ConditionalConstraintUnitTest.java @@ -1,12 +1,13 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.builder.ValidatorBuilder; import am.ik.yavi.core.ConstraintGroup; import am.ik.yavi.core.ConstraintViolations; import am.ik.yavi.core.Validator; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; public class ConditionalConstraintUnitTest { record Person(String id, String name) {} diff --git a/libraries-5/src/test/java/com/baeldung/yavi/CrossFieldUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/CrossFieldUnitTest.java similarity index 89% rename from libraries-5/src/test/java/com/baeldung/yavi/CrossFieldUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/CrossFieldUnitTest.java index cebc2cef885b..2482aa0eacc9 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/CrossFieldUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/CrossFieldUnitTest.java @@ -1,12 +1,12 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.builder.ValidatorBuilder; import am.ik.yavi.core.ConstraintViolations; import am.ik.yavi.core.Validator; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; public class CrossFieldUnitTest { record Range(int start, int end) {} diff --git a/libraries-5/src/test/java/com/baeldung/yavi/CustomConstraintUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/CustomConstraintUnitTest.java similarity index 97% rename from libraries-5/src/test/java/com/baeldung/yavi/CustomConstraintUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/CustomConstraintUnitTest.java index f849272e814a..501685ed2d0b 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/CustomConstraintUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/CustomConstraintUnitTest.java @@ -1,15 +1,13 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.builder.ValidatorBuilder; import am.ik.yavi.core.ConstraintViolations; import am.ik.yavi.core.CustomConstraint; import am.ik.yavi.core.Validator; -import org.junit.jupiter.api.Test; - -import java.net.Inet4Address; - -import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertEquals; public class CustomConstraintUnitTest { record Data(String palindrome) {} diff --git a/libraries-5/src/test/java/com/baeldung/yavi/NestedRecordUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/NestedRecordUnitTest.java similarity index 91% rename from libraries-5/src/test/java/com/baeldung/yavi/NestedRecordUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/NestedRecordUnitTest.java index 429d7c42ed89..ac614c262007 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/NestedRecordUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/NestedRecordUnitTest.java @@ -1,12 +1,12 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.builder.ValidatorBuilder; import am.ik.yavi.core.ConstraintViolations; import am.ik.yavi.core.Validator; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; public class NestedRecordUnitTest { private Validator nameValidator = ValidatorBuilder.of(Name.class) diff --git a/libraries-5/src/test/java/com/baeldung/yavi/PrimitiveUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/PrimitiveUnitTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/yavi/PrimitiveUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/PrimitiveUnitTest.java index dffb7fac1925..3ffd718b0129 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/PrimitiveUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/PrimitiveUnitTest.java @@ -1,13 +1,14 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.arguments.IntegerValidator; import am.ik.yavi.arguments.StringValidator; import am.ik.yavi.builder.IntegerValidatorBuilder; import am.ik.yavi.builder.StringValidatorBuilder; import am.ik.yavi.core.Validated; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; public class PrimitiveUnitTest { @Test diff --git a/libraries-5/src/test/java/com/baeldung/yavi/RecordUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/RecordUnitTest.java similarity index 99% rename from libraries-5/src/test/java/com/baeldung/yavi/RecordUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/RecordUnitTest.java index f19f5901e6f6..86746b4f3b4a 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/RecordUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/RecordUnitTest.java @@ -1,11 +1,12 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.builder.ValidatorBuilder; import am.ik.yavi.core.ConstraintViolations; import am.ik.yavi.core.Validator; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; public class RecordUnitTest { private Validator validator = ValidatorBuilder.of(Person.class) diff --git a/libraries-5/src/test/java/com/baeldung/yavi/TargetAnnotationUnitTest.java b/libraries-7/src/test/java/com/baeldung/yavi/TargetAnnotationUnitTest.java similarity index 97% rename from libraries-5/src/test/java/com/baeldung/yavi/TargetAnnotationUnitTest.java rename to libraries-7/src/test/java/com/baeldung/yavi/TargetAnnotationUnitTest.java index f41e86c792c0..cf8abb887212 100644 --- a/libraries-5/src/test/java/com/baeldung/yavi/TargetAnnotationUnitTest.java +++ b/libraries-7/src/test/java/com/baeldung/yavi/TargetAnnotationUnitTest.java @@ -1,13 +1,13 @@ package com.baeldung.yavi; +import static org.junit.jupiter.api.Assertions.*; + +import org.junit.jupiter.api.Test; + import am.ik.yavi.builder.ValidatorBuilder; import am.ik.yavi.core.ConstraintViolations; import am.ik.yavi.core.Validator; import am.ik.yavi.meta.ConstraintTarget; -import org.junit.jupiter.api.Test; - -import static org.junit.jupiter.api.Assertions.*; -import static org.junit.jupiter.api.Assertions.assertEquals; public class TargetAnnotationUnitTest { record Person(@ConstraintTarget String name, @ConstraintTarget int age) {} diff --git a/libraries-5/src/test/resources/com/baeldung/manifold/Complex.json b/libraries-7/src/test/resources/com/baeldung/manifold/Complex.json similarity index 100% rename from libraries-5/src/test/resources/com/baeldung/manifold/Complex.json rename to libraries-7/src/test/resources/com/baeldung/manifold/Complex.json diff --git a/libraries-5/src/test/resources/com/baeldung/manifold/ComplexUser.json b/libraries-7/src/test/resources/com/baeldung/manifold/ComplexUser.json similarity index 100% rename from libraries-5/src/test/resources/com/baeldung/manifold/ComplexUser.json rename to libraries-7/src/test/resources/com/baeldung/manifold/ComplexUser.json diff --git a/libraries-5/src/test/resources/com/baeldung/manifold/Composed.json b/libraries-7/src/test/resources/com/baeldung/manifold/Composed.json similarity index 100% rename from libraries-5/src/test/resources/com/baeldung/manifold/Composed.json rename to libraries-7/src/test/resources/com/baeldung/manifold/Composed.json diff --git a/libraries-5/src/test/resources/com/baeldung/manifold/SimpleUser.json b/libraries-7/src/test/resources/com/baeldung/manifold/SimpleUser.json similarity index 100% rename from libraries-5/src/test/resources/com/baeldung/manifold/SimpleUser.json rename to libraries-7/src/test/resources/com/baeldung/manifold/SimpleUser.json diff --git a/libraries-5/src/test/resources/com/baeldung/manifold/simpleUserData.json b/libraries-7/src/test/resources/com/baeldung/manifold/simpleUserData.json similarity index 100% rename from libraries-5/src/test/resources/com/baeldung/manifold/simpleUserData.json rename to libraries-7/src/test/resources/com/baeldung/manifold/simpleUserData.json diff --git a/libraries/pom.xml b/libraries/pom.xml index eac9156458ad..e99754f4e6ae 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -29,11 +29,6 @@ commons-net ${commons-net.version} - - org.javers - javers-core - ${javers.version} - org.datanucleus @@ -70,7 +65,6 @@ datanucleus-jdo-query ${datanucleus-jdo-query.version} - org.springframework spring-web @@ -99,11 +93,6 @@ quartz ${quartz.version} - - info.debatty - java-lsh - ${java-lsh.version} - commons-io commons-io @@ -126,21 +115,6 @@ google-oauth-client-jetty ${google-api.version} - - com.squareup - javapoet - ${javapoet.version} - - - com.googlecode.libphonenumber - libphonenumber - ${libphonenumber.version} - - - org.functionaljava - functionaljava-java8 - ${functionaljava.version} - io.github.resilience4j resilience4j-circuitbreaker @@ -162,42 +136,33 @@ ${resilience4j.version} - org.rosuda.REngine - Rserve - ${rserve.version} + io.activej + activej-inject + ${activej.version} - com.github.jbytecode - RCaller - ${rcaller.version} + io.activej + activej-promise + ${activej.version} - org.renjin - renjin-script-engine - ${renjin.version} + io.activej + activej-test + ${activej.version} + test + + + io.activej + activej-http + ${activej.version} - org.agrona - agrona - ${agrona.version} + com.fasterxml.jackson.core + jackson-databind + ${jackson-databind.version} - - - nm-repo - Numerical Method's Maven Repository - http://repo.numericalmethod.com/maven/ - default - - - - bedatadriven - BeDataDriven repository - https://nexus.bedatadriven.com/content/groups/public/ - - - @@ -282,86 +247,17 @@ - - org.codehaus.mojo - exec-maven-plugin - ${exec-maven-plugin.version} - - - generate-sources - - java - - - - - false - true - uk.co.real_logic.sbe.SbeTool - - - sbe.output.dir - ${project.build.directory}/generated-sources/java - - - - ${project.basedir}/src/main/resources/schema.xml - - ${project.build.directory}/generated-sources/java - - - - uk.co.real-logic - sbe-tool - ${sbe-tool.version} - - - - - org.codehaus.mojo - build-helper-maven-plugin - ${build-helper-maven-plugin.version} - - - add-source - generate-sources - - add-source - - - - ${project.build.directory}/generated-sources/java/ - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - - com/baeldung/r/FastRMean.java - - - com/baeldung/r/FastRMeanUnitTest.java - - - 2.2 3.2.7 - 3.1.0 1.9.26 1.41.0 1.9.0 1.9.27 1.1.0 - 0.10 3.5.0 2.0.0.0 1.15 @@ -377,16 +273,9 @@ 3.0.3 2.3.0 3.6 - 1.10.0 - 8.12.9 - 4.8.1 2.1.0 - 3.5-beta72 - 3.0 - 1.8.1 - 1.17.1 - 1.27.0 - 3.0.0 + 6.0-rc2 + 2.17.0 \ No newline at end of file diff --git a/libraries-5/src/main/java/com/baeldung/activej/config/PersonModule.java b/libraries/src/main/java/com/baeldung/activej/config/PersonModule.java similarity index 99% rename from libraries-5/src/main/java/com/baeldung/activej/config/PersonModule.java rename to libraries/src/main/java/com/baeldung/activej/config/PersonModule.java index 22ba15d471e1..39eaa40fa753 100644 --- a/libraries-5/src/main/java/com/baeldung/activej/config/PersonModule.java +++ b/libraries/src/main/java/com/baeldung/activej/config/PersonModule.java @@ -1,18 +1,20 @@ package com.baeldung.activej.config; -import com.baeldung.activej.controller.PersonController; -import com.baeldung.activej.repository.PersonRepository; -import com.baeldung.activej.service.PersonService; -import io.activej.inject.annotation.Provides; -import io.activej.inject.module.AbstractModule; - -import javax.sql.DataSource; import java.io.PrintWriter; import java.sql.Connection; import java.sql.SQLException; import java.sql.SQLFeatureNotSupportedException; import java.util.logging.Logger; +import javax.sql.DataSource; + +import com.baeldung.activej.controller.PersonController; +import com.baeldung.activej.repository.PersonRepository; +import com.baeldung.activej.service.PersonService; + +import io.activej.inject.annotation.Provides; +import io.activej.inject.module.AbstractModule; + public class PersonModule extends AbstractModule { @Provides diff --git a/libraries-5/src/main/java/com/baeldung/activej/controller/PersonController.java b/libraries/src/main/java/com/baeldung/activej/controller/PersonController.java similarity index 99% rename from libraries-5/src/main/java/com/baeldung/activej/controller/PersonController.java rename to libraries/src/main/java/com/baeldung/activej/controller/PersonController.java index 55354765ccc6..99251701e370 100644 --- a/libraries-5/src/main/java/com/baeldung/activej/controller/PersonController.java +++ b/libraries/src/main/java/com/baeldung/activej/controller/PersonController.java @@ -2,6 +2,7 @@ import com.baeldung.activej.service.PersonService; import com.fasterxml.jackson.databind.ObjectMapper; + import io.activej.http.AsyncServlet; import io.activej.http.HttpRequest; import io.activej.http.HttpResponse; diff --git a/libraries-5/src/main/java/com/baeldung/activej/model/Person.java b/libraries/src/main/java/com/baeldung/activej/model/Person.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/activej/model/Person.java rename to libraries/src/main/java/com/baeldung/activej/model/Person.java diff --git a/libraries-5/src/main/java/com/baeldung/activej/model/VerifiedPerson.java b/libraries/src/main/java/com/baeldung/activej/model/VerifiedPerson.java similarity index 100% rename from libraries-5/src/main/java/com/baeldung/activej/model/VerifiedPerson.java rename to libraries/src/main/java/com/baeldung/activej/model/VerifiedPerson.java diff --git a/libraries-5/src/main/java/com/baeldung/activej/repository/PersonRepository.java b/libraries/src/main/java/com/baeldung/activej/repository/PersonRepository.java similarity index 99% rename from libraries-5/src/main/java/com/baeldung/activej/repository/PersonRepository.java rename to libraries/src/main/java/com/baeldung/activej/repository/PersonRepository.java index f97608e5f371..2dee50a22d82 100644 --- a/libraries-5/src/main/java/com/baeldung/activej/repository/PersonRepository.java +++ b/libraries/src/main/java/com/baeldung/activej/repository/PersonRepository.java @@ -1,12 +1,14 @@ package com.baeldung.activej.repository; +import java.time.Duration; + +import javax.sql.DataSource; + import com.baeldung.activej.model.Person; + import io.activej.promise.Promise; import io.activej.promise.Promises; -import javax.sql.DataSource; -import java.time.Duration; - public class PersonRepository { private final DataSource dataSource; diff --git a/libraries-5/src/main/java/com/baeldung/activej/service/PersonService.java b/libraries/src/main/java/com/baeldung/activej/service/PersonService.java similarity index 99% rename from libraries-5/src/main/java/com/baeldung/activej/service/PersonService.java rename to libraries/src/main/java/com/baeldung/activej/service/PersonService.java index 6a03e9e148ad..60a55869a422 100644 --- a/libraries-5/src/main/java/com/baeldung/activej/service/PersonService.java +++ b/libraries/src/main/java/com/baeldung/activej/service/PersonService.java @@ -2,6 +2,7 @@ import com.baeldung.activej.model.VerifiedPerson; import com.baeldung.activej.repository.PersonRepository; + import io.activej.promise.Promise; public class PersonService { diff --git a/libraries-5/src/test/java/com/baeldung/activej/ActiveJIntegrationTest.java b/libraries/src/test/java/com/baeldung/activej/ActiveJIntegrationTest.java similarity index 98% rename from libraries-5/src/test/java/com/baeldung/activej/ActiveJIntegrationTest.java rename to libraries/src/test/java/com/baeldung/activej/ActiveJIntegrationTest.java index 30633a98b04c..ac6ab29622f8 100644 --- a/libraries-5/src/test/java/com/baeldung/activej/ActiveJIntegrationTest.java +++ b/libraries/src/test/java/com/baeldung/activej/ActiveJIntegrationTest.java @@ -14,11 +14,9 @@ import java.io.IOException; import java.net.InetAddress; -import java.net.InetSocketAddress; import java.net.ServerSocket; import static org.junit.jupiter.api.Assertions.assertEquals; - public class ActiveJIntegrationTest { private static final ObjectMapper objectMapper = new ObjectMapper(); diff --git a/libraries-5/src/test/java/com/baeldung/activej/ActiveJTest.java b/libraries/src/test/java/com/baeldung/activej/ActiveJTest.java similarity index 79% rename from libraries-5/src/test/java/com/baeldung/activej/ActiveJTest.java rename to libraries/src/test/java/com/baeldung/activej/ActiveJTest.java index f5c8e5ff58c6..23c300349b6c 100644 --- a/libraries-5/src/test/java/com/baeldung/activej/ActiveJTest.java +++ b/libraries/src/test/java/com/baeldung/activej/ActiveJTest.java @@ -3,8 +3,10 @@ import com.baeldung.activej.config.PersonModule; import com.baeldung.activej.repository.PersonRepository; import com.baeldung.activej.service.PersonService; + import io.activej.eventloop.Eventloop; import io.activej.inject.Injector; + import org.junit.jupiter.api.Test; import javax.sql.DataSource; @@ -18,7 +20,8 @@ public class ActiveJTest { void givenPersonModule_whenGetTheServiceBean_thenAllTheDependenciesShouldBePresent() { PersonModule personModule = new PersonModule(); - PersonService personService = Injector.of(personModule).getInstance(PersonService.class); + PersonService personService = Injector.of(personModule) + .getInstance(PersonService.class); assertNotNull(personService); PersonRepository personRepository = personService.getPersonRepository(); assertNotNull(personRepository); @@ -30,11 +33,12 @@ void givenPersonModule_whenGetTheServiceBean_thenAllTheDependenciesShouldBePrese void givenEventloop_whenCallFindAndVerifyPerson_thenExpectedVerificationResultShouldBePresent() { PersonModule personModule = new PersonModule(); - PersonService personService = Injector.of(personModule).getInstance(PersonService.class); + PersonService personService = Injector.of(personModule) + .getInstance(PersonService.class); Eventloop eventloop = Eventloop.create(); eventloop.run(); personService.findAndVerifyPerson("Good person") - .whenResult(verifiedPerson -> assertEquals("SUCCESS", verifiedPerson.result())); + .whenResult(verifiedPerson -> assertEquals("SUCCESS", verifiedPerson.result())); } } diff --git a/logging-modules/logback/pom.xml b/logging-modules/logback/pom.xml index 0c2e2128ef55..e18414b7d560 100644 --- a/logging-modules/logback/pom.xml +++ b/logging-modules/logback/pom.xml @@ -24,6 +24,12 @@ logback-classic ${logback.version} + + + ch.qos.logback + logback-core + ${logback.version} + ch.qos.logback.contrib logback-json-classic @@ -109,10 +115,10 @@ 3.3.5 2.0.1 2.0.0 - 1.5.6 + 1.5.18 2.1.0-alpha1 3.1.12 8.0 - \ No newline at end of file + diff --git a/logging-modules/logback/src/test/java/com/baeldung/logback/ConditionalLoggingUnitTest.java b/logging-modules/logback/src/test/java/com/baeldung/logback/ConditionalLoggingUnitTest.java index bcfad4d7d256..4ff8413ac430 100644 --- a/logging-modules/logback/src/test/java/com/baeldung/logback/ConditionalLoggingUnitTest.java +++ b/logging-modules/logback/src/test/java/com/baeldung/logback/ConditionalLoggingUnitTest.java @@ -47,20 +47,4 @@ public void whenSystemPropertyIsPresent_thenReturnFileLogger() throws IOExceptio String logOutput = FileUtils.readFileToString(new File("conditional.log")); assertTrue(logOutput.contains("test prod log")); } - - @Test - public void whenMatchedWithEvaluatorFilter_thenReturnFilteredLogs() throws IOException { - logger = (Logger) LoggerFactory.getLogger(ConditionalLoggingUnitTest.class); - - logger.info("normal log"); - logger.info("billing details: XXXX"); - String normalLog = FileUtils.readFileToString(new File("conditional.log")); - assertTrue(normalLog.contains("normal log")); - assertTrue(normalLog.contains("billing details: XXXX")); - - String filteredLog = FileUtils.readFileToString(new File("filtered.log")); - assertTrue(filteredLog.contains("test prod log")); - assertFalse(filteredLog.contains("billing details: XXXX")); - } - } diff --git a/mapstruct-2/pom.xml b/mapstruct-2/pom.xml index ed2cb8f39f48..72c6aeae386e 100644 --- a/mapstruct-2/pom.xml +++ b/mapstruct-2/pom.xml @@ -25,6 +25,18 @@ ${lombok.version} provided + + org.springframework + spring-context + ${springframework.version} + test + + + org.springframework + spring-test + ${springframework.version} + test + mapstruct-2 @@ -60,6 +72,7 @@ 1.6.3 0.2.0 + 6.2.1 diff --git a/mapstruct-2/src/main/java/com/baeldung/dto/MediaDto.java b/mapstruct-2/src/main/java/com/baeldung/dto/MediaDto.java new file mode 100644 index 000000000000..cbe9510145be --- /dev/null +++ b/mapstruct-2/src/main/java/com/baeldung/dto/MediaDto.java @@ -0,0 +1,37 @@ +package com.baeldung.dto; + +public class MediaDto { + + private Long id; + + private String title; + + public MediaDto(Long id, String title) { + this.id = id; + this.title = title; + } + + public MediaDto() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @Override + public String toString() { + return "MediaDto{" + "id=" + id + ", title='" + title + '\'' + '}'; + } +} diff --git a/mapstruct-2/src/main/java/com/baeldung/entity/Media.java b/mapstruct-2/src/main/java/com/baeldung/entity/Media.java new file mode 100644 index 000000000000..4b11472a46e1 --- /dev/null +++ b/mapstruct-2/src/main/java/com/baeldung/entity/Media.java @@ -0,0 +1,37 @@ +package com.baeldung.entity; + +public class Media { + + private Long id; + + private String title; + + public Media(Long id, String title) { + this.id = id; + this.title = title; + } + + public Media() { + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + @Override + public String toString() { + return "Media{" + "id=" + id + ", title='" + title + '\'' + '}'; + } +} diff --git a/mapstruct-2/src/main/java/com/baeldung/mapper/MediaMapper.java b/mapstruct-2/src/main/java/com/baeldung/mapper/MediaMapper.java new file mode 100644 index 000000000000..2629a1820a3e --- /dev/null +++ b/mapstruct-2/src/main/java/com/baeldung/mapper/MediaMapper.java @@ -0,0 +1,15 @@ +package com.baeldung.mapper; + +import org.mapstruct.Mapper; + +import com.baeldung.dto.MediaDto; +import com.baeldung.entity.Media; + +@Mapper +public interface MediaMapper { + + MediaDto toDto(Media media); + + Media toEntity(MediaDto mediaDto); + +} diff --git a/mapstruct-2/src/main/java/com/baeldung/service/MediaService.java b/mapstruct-2/src/main/java/com/baeldung/service/MediaService.java new file mode 100644 index 000000000000..2e0fcf064ab1 --- /dev/null +++ b/mapstruct-2/src/main/java/com/baeldung/service/MediaService.java @@ -0,0 +1,26 @@ +package com.baeldung.service; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.baeldung.dto.MediaDto; +import com.baeldung.entity.Media; +import com.baeldung.mapper.MediaMapper; + +public class MediaService { + + final Logger logger = LoggerFactory.getLogger(MediaService.class); + + private final MediaMapper mediaMapper; + + public MediaService(MediaMapper mediaMapper) { + this.mediaMapper = mediaMapper; + } + + public Media persistMedia(MediaDto mediaDto) { + Media media = mediaMapper.toEntity(mediaDto); + logger.info("Persist media: {}", media); + return media; + } + +} diff --git a/mapstruct-2/src/test/java/com/baeldung/service/MediaServiceGeneratedMapperUnitTest.java b/mapstruct-2/src/test/java/com/baeldung/service/MediaServiceGeneratedMapperUnitTest.java new file mode 100644 index 000000000000..32a8873403a3 --- /dev/null +++ b/mapstruct-2/src/test/java/com/baeldung/service/MediaServiceGeneratedMapperUnitTest.java @@ -0,0 +1,23 @@ +package com.baeldung.service; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.mapstruct.factory.Mappers; + +import com.baeldung.dto.MediaDto; +import com.baeldung.entity.Media; +import com.baeldung.mapper.MediaMapper; + +public class MediaServiceGeneratedMapperUnitTest { + + @Test + public void whenGeneratedMapperIsUsed_thenActualValuesAreMapped() { + MediaService mediaService = new MediaService(Mappers.getMapper(MediaMapper.class)); + MediaDto mediaDto = new MediaDto(1L, "title 1"); + Media persisted = mediaService.persistMedia(mediaDto); + assertEquals(mediaDto.getId(), persisted.getId()); + assertEquals(mediaDto.getTitle(), persisted.getTitle()); + } + +} diff --git a/mapstruct-2/src/test/java/com/baeldung/service/MediaServiceMockedMapperUnitTest.java b/mapstruct-2/src/test/java/com/baeldung/service/MediaServiceMockedMapperUnitTest.java new file mode 100644 index 000000000000..a956b29fd586 --- /dev/null +++ b/mapstruct-2/src/test/java/com/baeldung/service/MediaServiceMockedMapperUnitTest.java @@ -0,0 +1,32 @@ +package com.baeldung.service; + +import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import org.junit.Test; + +import com.baeldung.dto.MediaDto; +import com.baeldung.entity.Media; +import com.baeldung.mapper.MediaMapper; + +public class MediaServiceMockedMapperUnitTest { + + @Test + public void whenMockedMapperIsUsed_thenMockedValuesAreMapped() { + MediaMapper mockMediaMapper = mock(MediaMapper.class); + Media mockedMedia = new Media(5L, "Title 5"); + when(mockMediaMapper.toEntity(any())).thenReturn(mockedMedia); + + MediaService mediaService = new MediaService(mockMediaMapper); + MediaDto mediaDto = new MediaDto(1L, "title 1"); + Media persisted = mediaService.persistMedia(mediaDto); + + verify(mockMediaMapper).toEntity(mediaDto); + assertEquals(mockedMedia.getId(), persisted.getId()); + assertEquals(mockedMedia.getTitle(), persisted.getTitle()); + } + +} diff --git a/mapstruct-2/src/test/java/com/baeldung/spring/Config.java b/mapstruct-2/src/test/java/com/baeldung/spring/Config.java new file mode 100644 index 000000000000..e3f952b5d838 --- /dev/null +++ b/mapstruct-2/src/test/java/com/baeldung/spring/Config.java @@ -0,0 +1,17 @@ +package com.baeldung.spring; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.baeldung.mapper.MediaMapper; +import com.baeldung.service.MediaService; + +@Configuration +public class Config { + + @Bean + public MediaService mediaService(MediaMapper mediaMapper) { + return new MediaService(mediaMapper); + } + +} diff --git a/mapstruct-2/src/test/java/com/baeldung/spring/MediaServiceSpringGeneratedMapperUnitTest.java b/mapstruct-2/src/test/java/com/baeldung/spring/MediaServiceSpringGeneratedMapperUnitTest.java new file mode 100644 index 000000000000..e061dbb628fd --- /dev/null +++ b/mapstruct-2/src/test/java/com/baeldung/spring/MediaServiceSpringGeneratedMapperUnitTest.java @@ -0,0 +1,30 @@ +package com.baeldung.spring; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dto.MediaDto; +import com.baeldung.entity.Media; +import com.baeldung.service.MediaService; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { Config.class, MediaSpringMapperImpl.class }) +public class MediaServiceSpringGeneratedMapperUnitTest { + + @Autowired + MediaService mediaService; + + @Test + public void whenGeneratedSpringMapperIsUsed_thenActualValuesAreMapped() { + MediaDto mediaDto = new MediaDto(1L, "title 1"); + Media persisted = mediaService.persistMedia(mediaDto); + assertEquals(mediaDto.getId(), persisted.getId()); + assertEquals(mediaDto.getTitle(), persisted.getTitle()); + } + +} diff --git a/mapstruct-2/src/test/java/com/baeldung/spring/MediaServiceSpringMockedMapperUnitTest.java b/mapstruct-2/src/test/java/com/baeldung/spring/MediaServiceSpringMockedMapperUnitTest.java new file mode 100644 index 000000000000..a7799e6ebc94 --- /dev/null +++ b/mapstruct-2/src/test/java/com/baeldung/spring/MediaServiceSpringMockedMapperUnitTest.java @@ -0,0 +1,42 @@ +package com.baeldung.spring; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.ArgumentMatchers; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.bean.override.mockito.MockitoBean; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; + +import com.baeldung.dto.MediaDto; +import com.baeldung.entity.Media; +import com.baeldung.service.MediaService; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = Config.class) +public class MediaServiceSpringMockedMapperUnitTest { + + @Autowired + MediaService mediaService; + + @MockitoBean + MediaSpringMapper mockMediaMapper; + + @Test + public void whenMockedSpringMapperIsUsed_thenMockedValuesAreMapped() { + Media mockedMedia = new Media(12L, "title 12"); + when(mockMediaMapper.toEntity(ArgumentMatchers.any())).thenReturn(mockedMedia); + + MediaDto mediaDto = new MediaDto(1L, "title 1"); + Media persisted = mediaService.persistMedia(mediaDto); + + verify(mockMediaMapper).toEntity(mediaDto); + assertEquals(mockedMedia.getId(), persisted.getId()); + assertEquals(mockedMedia.getTitle(), persisted.getTitle()); + } + +} diff --git a/mapstruct-2/src/test/java/com/baeldung/spring/MediaSpringMapper.java b/mapstruct-2/src/test/java/com/baeldung/spring/MediaSpringMapper.java new file mode 100644 index 000000000000..d752fee2291f --- /dev/null +++ b/mapstruct-2/src/test/java/com/baeldung/spring/MediaSpringMapper.java @@ -0,0 +1,10 @@ +package com.baeldung.spring; + +import org.mapstruct.Mapper; +import org.mapstruct.MappingConstants; + +import com.baeldung.mapper.MediaMapper; + +@Mapper(componentModel = MappingConstants.ComponentModel.SPRING) +public interface MediaSpringMapper extends MediaMapper { +} diff --git a/messaging-modules/spring-apache-camel/pom.xml b/messaging-modules/spring-apache-camel/pom.xml index 2eeeabf5e3d2..f3fe240e178e 100644 --- a/messaging-modules/spring-apache-camel/pom.xml +++ b/messaging-modules/spring-apache-camel/pom.xml @@ -8,6 +8,18 @@ jar spring-apache-camel http://maven.apache.org + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + com.baeldung diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/CamelRoute.java b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/CamelRoute.java new file mode 100644 index 000000000000..9fcd94e06b64 --- /dev/null +++ b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/CamelRoute.java @@ -0,0 +1,24 @@ +package com.baeldung.camel.producertemplate; + +import org.apache.camel.builder.RouteBuilder; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +@Component +public class CamelRoute extends RouteBuilder { + + @Override + public void configure() { + from("direct:start").log("Received: ${body}") + .transform(simple("Hello ${body}")); + from("direct:fileRoute").to("file://output?fileName=output.txt&fileExist=Append"); + from("direct:beanRoute").bean(ProcessingBean.class, "process"); + + } + + @Bean + public ProcessingBean processingBean() { + return new ProcessingBean(); + } + +} diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProcessingBean.java b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProcessingBean.java new file mode 100644 index 000000000000..dcb8ae011919 --- /dev/null +++ b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProcessingBean.java @@ -0,0 +1,9 @@ +package com.baeldung.camel.producertemplate; + +public class ProcessingBean { + + public String process(String input) { + return "Bean processed " + input.toUpperCase(); + } + +} diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProducerTemplateApplication.java b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProducerTemplateApplication.java new file mode 100644 index 000000000000..6e7a90ce9e9c --- /dev/null +++ b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProducerTemplateApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.camel.producertemplate; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ProducerTemplateApplication { + + public static void main(String[] args) { + SpringApplication.run(ProducerTemplateApplication.class, args); + } + +} diff --git a/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProducerTemplateController.java b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProducerTemplateController.java new file mode 100644 index 000000000000..84a964df7d79 --- /dev/null +++ b/messaging-modules/spring-apache-camel/src/main/java/com/baeldung/camel/producertemplate/ProducerTemplateController.java @@ -0,0 +1,33 @@ +package com.baeldung.camel.producertemplate; + +import org.apache.camel.ProducerTemplate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class ProducerTemplateController { + + @Autowired + private ProducerTemplate producerTemplate; + + @GetMapping("/send/simple/{message}") + public String sendSimpleMessage(@PathVariable String message) { + String response = producerTemplate.requestBody("direct:start", message, String.class); + return response; + } + + @GetMapping("/send/file/{message}") + public String sendToFile(@PathVariable String message) { + producerTemplate.sendBody("direct:fileRoute", message + "\n"); + return "Message appended to output.txt"; + } + + @GetMapping("/send/bean/{message}") + public String sendToBean(@PathVariable String message) { + String response = producerTemplate.requestBody("direct:beanRoute", message, String.class); + return response; + } + +} diff --git a/messaging-modules/spring-apache-camel/src/test/java/com/baeldung/producertemplate/ProducerTemplateIntegrationTest.java b/messaging-modules/spring-apache-camel/src/test/java/com/baeldung/producertemplate/ProducerTemplateIntegrationTest.java new file mode 100644 index 000000000000..a3d0e4e579f0 --- /dev/null +++ b/messaging-modules/spring-apache-camel/src/test/java/com/baeldung/producertemplate/ProducerTemplateIntegrationTest.java @@ -0,0 +1,66 @@ +package com.baeldung.producertemplate; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; + +import com.baeldung.camel.producertemplate.ProducerTemplateApplication; +import com.baeldung.camel.producertemplate.ProducerTemplateController; + +@SpringBootTest(classes = ProducerTemplateApplication.class) +@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_EACH_TEST_METHOD) +public class ProducerTemplateIntegrationTest { + + @Autowired + private ProducerTemplateController producerTemplateController; + + private static final String TEST_MESSAGE = "TestMessage"; + private static final Path OUTPUT_FILE = Paths.get("output/output.txt"); + + @BeforeEach + void setUp() throws IOException { + + if (Files.exists(OUTPUT_FILE)) { + Files.delete(OUTPUT_FILE); + } + } + + @Test + void givenMessage_whenSendingSimpleMessage_thenReturnsProcessedMessage() { + String inputMessage = TEST_MESSAGE; + String response = producerTemplateController.sendSimpleMessage(inputMessage); + assertNotNull(response, "Response should not be null"); + assertEquals("Hello " + inputMessage, response); + } + + @Test + void givenMessage_whenSendingToFile_thenFileContainsMessage() throws IOException { + String inputMessage = TEST_MESSAGE; + String response = producerTemplateController.sendToFile(inputMessage); + + assertEquals("Message appended to output.txt", response); + assertTrue(Files.exists(OUTPUT_FILE)); + String fileContent = Files.readString(OUTPUT_FILE); + assertTrue(fileContent.contains(inputMessage)); + } + + @Test + void givenMessage_whenSendingToBean_thenReturnsUppercaseMessage() { + String inputMessage = TEST_MESSAGE; + String response = producerTemplateController.sendToBean(inputMessage); + assertNotNull(response); + assertEquals("Bean processed " + inputMessage.toUpperCase(), response); + } + +} diff --git a/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/DoubleCheckedSingleton.java b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/DoubleCheckedSingleton.java new file mode 100644 index 000000000000..a0041fb68be6 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/DoubleCheckedSingleton.java @@ -0,0 +1,18 @@ +package com.baeldung.threadsafe; + +public class DoubleCheckedSingleton { + private static volatile DoubleCheckedSingleton instance; + + private DoubleCheckedSingleton() {} + + public static DoubleCheckedSingleton getInstance() { + if (instance == null) { + synchronized (DoubleCheckedSingleton.class) { + if (instance == null) { + instance = new DoubleCheckedSingleton(); + } + } + } + return instance; + } +} diff --git a/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/EagerSingleton.java b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/EagerSingleton.java new file mode 100644 index 000000000000..57841dc016e4 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/EagerSingleton.java @@ -0,0 +1,11 @@ +package com.baeldung.threadsafe; + +public class EagerSingleton { + private static final EagerSingleton INSTANCE = new EagerSingleton(); + + private EagerSingleton() {} + + public static EagerSingleton getInstance() { + return INSTANCE; + } +} diff --git a/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/EnumSingleton.java b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/EnumSingleton.java new file mode 100644 index 000000000000..60f8463be23e --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/EnumSingleton.java @@ -0,0 +1,9 @@ +package com.baeldung.threadsafe; + +public enum EnumSingleton { + INSTANCE; + + public void performOperation() { + // Singleton operations here + } +} \ No newline at end of file diff --git a/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/SimpleSingleton.java b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/SimpleSingleton.java new file mode 100644 index 000000000000..f0d853061c95 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/SimpleSingleton.java @@ -0,0 +1,15 @@ +package com.baeldung.threadsafe; + +public class SimpleSingleton { + private static SimpleSingleton instance; + + private SimpleSingleton() { + } + + public static SimpleSingleton getInstance() { + if (instance == null) { + instance = new SimpleSingleton(); + } + return instance; + } +} diff --git a/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/SynchronizedSingleton.java b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/SynchronizedSingleton.java new file mode 100644 index 000000000000..c44dc78f8029 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/main/java/com/baeldung/threadsafe/SynchronizedSingleton.java @@ -0,0 +1,14 @@ +package com.baeldung.threadsafe; + +public class SynchronizedSingleton { + private static SynchronizedSingleton instance; + + private SynchronizedSingleton() {} + + public static synchronized SynchronizedSingleton getInstance() { + if (instance == null) { + instance = new SynchronizedSingleton(); + } + return instance; + } +} diff --git a/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/BillPughSingletonUnitTest.java b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/BillPughSingletonUnitTest.java new file mode 100644 index 000000000000..54cc2d7eefc8 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/BillPughSingletonUnitTest.java @@ -0,0 +1,28 @@ +package com.baeldung.threadsafe; + +import com.baledung.billpugh.BillPughSingleton; +import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.*; +import java.util.concurrent.*; +import java.util.Set; +import java.util.HashSet; + +public class BillPughSingletonUnitTest { + @Test + void testThreadSafety() throws InterruptedException { + int numberOfThreads = 10; + CountDownLatch latch = new CountDownLatch(numberOfThreads); + Set instances = ConcurrentHashMap.newKeySet(); + + for (int i = 0; i < numberOfThreads; i++) { + new Thread(() -> { + instances.add(BillPughSingleton.getInstance()); + latch.countDown(); + }).start(); + } + + latch.await(5, TimeUnit.SECONDS); + + assertEquals(1, instances.size(), "All threads should get the same instance"); + } +} \ No newline at end of file diff --git a/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/DoubleCheckedSingletonUnitTest.java b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/DoubleCheckedSingletonUnitTest.java new file mode 100644 index 000000000000..69c9a4457e85 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/DoubleCheckedSingletonUnitTest.java @@ -0,0 +1,20 @@ +package com.baeldung.threadsafe; + +import org.junit.jupiter.api.Test; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.stream.IntStream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class DoubleCheckedSingletonUnitTest { + @Test + void givenDCLSingleton_whenAccessedFromThreads_thenOneInstanceCreated() { + List instances = Collections.synchronizedList(new ArrayList<>()); + IntStream.range(0, 100).parallel().forEach(i -> instances.add(DoubleCheckedSingleton.getInstance())); + assertEquals(1, new HashSet<>(instances).size()); + } +} diff --git a/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/EagerSingletonUnitTest.java b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/EagerSingletonUnitTest.java new file mode 100644 index 000000000000..abbd5e21ac9e --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/EagerSingletonUnitTest.java @@ -0,0 +1,31 @@ +package com.baeldung.threadsafe; + +import org.junit.jupiter.api.Test; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EagerSingletonUnitTest { + @Test + void givenEagerSingleton_whenAccessedConcurrently_thenSingleInstanceCreated() + throws InterruptedException { + + int threadCount = 1000; + Set instances = ConcurrentHashMap.newKeySet(); + CountDownLatch latch = new CountDownLatch(threadCount); + + for (int i = 0; i < threadCount; i++) { + new Thread(() -> { + instances.add(EagerSingleton.getInstance()); + latch.countDown(); + }).start(); + } + + latch.await(); + + assertEquals(1, instances.size(), "Only one instance should be created"); + } +} diff --git a/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/EnumSingletonUnitTest.java b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/EnumSingletonUnitTest.java new file mode 100644 index 000000000000..6ec6335d61d2 --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/EnumSingletonUnitTest.java @@ -0,0 +1,29 @@ +package com.baeldung.threadsafe; + +import org.junit.jupiter.api.Test; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EnumSingletonUnitTest { + @Test + void givenEnumSingleton_whenAccessedConcurrently_thenSingleInstanceCreated() + throws InterruptedException { + + Set instances = ConcurrentHashMap.newKeySet(); + CountDownLatch latch = new CountDownLatch(100); + + for (int i = 0; i < 100; i++) { + new Thread(() -> { + instances.add(EnumSingleton.INSTANCE); + latch.countDown(); + }).start(); + } + + latch.await(); + assertEquals(1, instances.size()); + } +} diff --git a/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/SimpleSingletonUnitTest.java b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/SimpleSingletonUnitTest.java new file mode 100644 index 000000000000..50aedb8d427f --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/SimpleSingletonUnitTest.java @@ -0,0 +1,26 @@ +package com.baeldung.threadsafe; + +import org.junit.jupiter.api.Test; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.CountDownLatch; + +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class SimpleSingletonUnitTest { + @Test + void givenUnsafeSingleton_whenAccessedConcurrently_thenMultipleInstancesCreated() throws InterruptedException { + int threadCount = 1000; + Set instances = ConcurrentHashMap.newKeySet(); + CountDownLatch latch = new CountDownLatch(threadCount); + for (int i = 0; i < threadCount; i++) { + new Thread(() -> { + instances.add(SimpleSingleton.getInstance()); + latch.countDown(); + }).start(); + } + latch.await(); + assertTrue(instances.size() > 1, "Multiple instances were created"); + } +} diff --git a/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/SynchronizedSingletonUnitTest.java b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/SynchronizedSingletonUnitTest.java new file mode 100644 index 000000000000..73d381f67fab --- /dev/null +++ b/patterns-modules/design-patterns-singleton/src/test/java/com/baeldung/threadsafe/SynchronizedSingletonUnitTest.java @@ -0,0 +1,18 @@ +package com.baeldung.threadsafe; + +import org.junit.jupiter.api.Test; + +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.IntStream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class SynchronizedSingletonUnitTest { + @Test + void givenMultipleThreads_whenUsingSynchronizedSingleton_thenOnlyOneInstanceCreated() { + Set instances = ConcurrentHashMap.newKeySet(); + IntStream.range(0, 100).parallel().forEach(i -> instances.add(SynchronizedSingleton.getInstance())); + assertEquals(1, instances.size()); + } +} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java new file mode 100644 index 000000000000..5bfc732a27f8 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/Application.java @@ -0,0 +1,15 @@ +package com.baeldung.transactional; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@SpringBootApplication +@EnableJpaRepositories +public class Application { + + public static void main(String[] args) { + SpringApplication.run(Application.class, args); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java new file mode 100644 index 000000000000..442c153fee49 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrder.java @@ -0,0 +1,21 @@ +package com.baeldung.transactional; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +@Entity +@Table(name = "test_order") +public class TestOrder { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE) + private Long id; +} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java new file mode 100644 index 000000000000..32dbe4b31b76 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderRepository.java @@ -0,0 +1,8 @@ +package com.baeldung.transactional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface TestOrderRepository extends JpaRepository { +} diff --git a/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java new file mode 100644 index 000000000000..00532c754533 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/main/java/com/baeldung/transactional/TestOrderService.java @@ -0,0 +1,45 @@ +package com.baeldung.transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +class TestOrderService { + + @Autowired + private TestOrderRepository testOrderRepository; + + @Autowired + @Lazy + private TestOrderService self; + + @Transactional + public void createOrderPublic(TestOrder order) { + testOrderRepository.save(order); + throw new RuntimeException("Rollback test"); + } + + @Transactional + private void createOrderPrivate(TestOrder order) { + testOrderRepository.save(order); + //throw new RuntimeException("Rollback test"); + } + + @Transactional + void createOrderPackagePrivate(TestOrder order) { + testOrderRepository.save(order); + throw new RuntimeException("Rollback test"); + } + + @Transactional + protected void createOrderProtected(TestOrder order) { + testOrderRepository.save(order); + throw new RuntimeException("Rollback test"); + } + + public void callPrivateMethod(TestOrder order) { + self.createOrderPrivate(order); + } +} diff --git a/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java new file mode 100644 index 000000000000..acc98f5f0bd1 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-5/src/test/java/com/baeldung/transactional/TestOrderServiceTest.java @@ -0,0 +1,92 @@ +package com.baeldung.transactional; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@SpringBootTest(classes = { Application.class, TestOrderServiceTest.TestOrderService2.class, TestOrderRepository.class }) +class TestOrderServiceTest { + + @Autowired + private TestOrderService2 underTest; + + @Autowired + private TestOrderRepository testOrderRepository; + + + @Service + static class TestOrderService2 { + + @Autowired + private TestOrderRepository repository; + + @Transactional + public void createOrderPublic(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPublic"); + } + + @Transactional + void createOrderPackagePrivate(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPackagePrivate"); + } + + @Transactional + protected void createOrderProtected(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderProtected"); + } + + @Transactional + private void createOrderPrivate(TestOrder order) { + repository.save(order); + throw new RuntimeException("Rollback createOrderPrivate"); + } + + public void callPrivate(TestOrder order) { + createOrderPrivate(order); + } + } + + @Test + void givenPublicTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderPublic(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).isEmpty(); + } + + @Test + void givenPackagePrivateTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderPackagePrivate(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).isEmpty(); + } + + @Test + void givenProtectedTransactionalMethod_whenCallingIt_thenShouldRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderProtected(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).isEmpty(); + } + + @Test + void givenPrivateTransactionalMethod_whenCallingIt_thenShouldNotRollbackOnException() { + assertThat(testOrderRepository.findAll()).isEmpty(); + + assertThatThrownBy(() -> underTest.createOrderPrivate(new TestOrder())).isNotNull(); + + assertThat(testOrderRepository.findAll()).hasSize(1); + } +} diff --git a/persistence-modules/spring-boot-persistence-h2-2/src/main/java/com/baeldung/h2seq/Book.java b/persistence-modules/spring-boot-persistence-h2-2/src/main/java/com/baeldung/h2seq/Book.java new file mode 100644 index 000000000000..71974b209ac9 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2-2/src/main/java/com/baeldung/h2seq/Book.java @@ -0,0 +1,42 @@ +package com.baeldung.h2seq; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.SequenceGenerator; +import jakarta.persistence.Table; + +@Entity +@Table(name = "book") +class Book { + + @Id + @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "book_seq_gen") + @SequenceGenerator(name = "book_seq_gen", sequenceName = "book_seq", allocationSize = 1) + private Long id; + private String title; + + public Book() { + } + + public Book(String title) { + this.title = title; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-h2-2/src/main/java/com/baeldung/h2seq/H2SeqDemoApplication.java b/persistence-modules/spring-boot-persistence-h2-2/src/main/java/com/baeldung/h2seq/H2SeqDemoApplication.java new file mode 100644 index 000000000000..a0fc0d03bac0 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2-2/src/main/java/com/baeldung/h2seq/H2SeqDemoApplication.java @@ -0,0 +1,14 @@ +package com.baeldung.h2seq; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.domain.EntityScan; + +@SpringBootApplication +public class H2SeqDemoApplication { + + public static void main(String... args) { + SpringApplication.run(H2SeqDemoApplication.class, args); + } + +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-h2-2/src/test/java/com/baeldung/h2seq/H2SeqAsOracleDemoIntegrationTest.java b/persistence-modules/spring-boot-persistence-h2-2/src/test/java/com/baeldung/h2seq/H2SeqAsOracleDemoIntegrationTest.java new file mode 100644 index 000000000000..37d090bb8ed9 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2-2/src/test/java/com/baeldung/h2seq/H2SeqAsOracleDemoIntegrationTest.java @@ -0,0 +1,51 @@ +package com.baeldung.h2seq; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.math.BigDecimal; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.transaction.annotation.Transactional; + +import jakarta.persistence.EntityManager; + +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = H2SeqDemoApplication.class) +@ActiveProfiles("h2-seq-oracle") +@Transactional +public class H2SeqAsOracleDemoIntegrationTest { + + @Autowired + private EntityManager entityManager; + + @Test + void whenCreateH2SequenceWithDefaultOptions_thenGetExpectedNextValueFromSequence() { + entityManager.createNativeQuery("CREATE SEQUENCE my_seq") + .executeUpdate(); + + String sqlNextValueFor = "SELECT NEXT VALUE FOR my_seq"; + BigDecimal nextValueH2 = (BigDecimal) entityManager.createNativeQuery(sqlNextValueFor) + .getSingleResult(); + assertEquals(0, BigDecimal.ONE.compareTo(nextValueH2)); + + String sqlNextValueOralceStyle = "SELECT my_seq.nextval FROM dual"; + BigDecimal nextValueOracle = (BigDecimal) entityManager.createNativeQuery(sqlNextValueOralceStyle) + .getSingleResult(); + assertEquals(0, BigDecimal.TWO.compareTo(nextValueOracle)); + + String sqlNextValueFunction = "SELECT nextval('my_seq')"; + nextValueOracle = (BigDecimal) entityManager.createNativeQuery(sqlNextValueFunction) + .getSingleResult(); + assertEquals(0, BigDecimal.valueOf(3) + .compareTo(nextValueOracle)); + + entityManager.createNativeQuery("DROP SEQUENCE my_seq") + .executeUpdate(); + } +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-h2-2/src/test/java/com/baeldung/h2seq/H2SeqDemoIntegrationTest.java b/persistence-modules/spring-boot-persistence-h2-2/src/test/java/com/baeldung/h2seq/H2SeqDemoIntegrationTest.java new file mode 100644 index 000000000000..072484520fad --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2-2/src/test/java/com/baeldung/h2seq/H2SeqDemoIntegrationTest.java @@ -0,0 +1,83 @@ +package com.baeldung.h2seq; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.junit.jupiter.SpringExtension; +import org.springframework.transaction.annotation.Transactional; + +import jakarta.persistence.EntityManager; + +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = H2SeqDemoApplication.class) +@ActiveProfiles("h2-seq") +@Transactional +public class H2SeqDemoIntegrationTest { + + @Autowired + private EntityManager entityManager; + + private final String sqlNextValueFor = "SELECT NEXT VALUE FOR my_seq"; + private final String sqlNextValueFunction = "SELECT nextval('my_seq')"; + + @Test + void whenCreateH2SequenceWithDefaultOptions_thenGetExpectedNextValueFromSequence() { + entityManager.createNativeQuery("CREATE SEQUENCE my_seq") + .executeUpdate(); + + Long nextValue = (Long) entityManager.createNativeQuery(sqlNextValueFunction) + .getSingleResult(); + assertEquals(1, nextValue); + + nextValue = (Long) entityManager.createNativeQuery(sqlNextValueFor) + .getSingleResult(); + assertEquals(2, nextValue); + + nextValue = (Long) entityManager.createNativeQuery(sqlNextValueFunction) + .getSingleResult(); + assertEquals(3, nextValue); + + entityManager.createNativeQuery("DROP SEQUENCE my_seq") + .executeUpdate(); + } + + @Test + void whenCustomizeH2Sequence_thenGetExpectedNextValueFromSequence() { + entityManager.createNativeQuery("CREATE SEQUENCE my_seq START WITH 1000 INCREMENT BY 10") + .executeUpdate(); + + Long nextValue = (Long) entityManager.createNativeQuery(sqlNextValueFor) + .getSingleResult(); + assertEquals(1000, nextValue); + + nextValue = (Long) entityManager.createNativeQuery(sqlNextValueFunction) + .getSingleResult(); + assertEquals(1010, nextValue); + + nextValue = (Long) entityManager.createNativeQuery(sqlNextValueFor) + .getSingleResult(); + assertEquals(1020, nextValue); + + entityManager.createNativeQuery("DROP SEQUENCE my_seq") + .executeUpdate(); + } + + @Test + void whenSaveEntityUsingSequence_thenCorrect() { + entityManager.createNativeQuery("CREATE SEQUENCE book_seq") + .executeUpdate(); + Book book1 = new Book("book1"); + assertNull(book1.getId()); + entityManager.persist(book1); + assertEquals(1, book1.getId()); + + Book book2 = new Book("book2"); + entityManager.persist(book2); + assertEquals(2, book2.getId()); + } +} \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-h2-2/src/test/resources/application-h2-seq-oracle.yml b/persistence-modules/spring-boot-persistence-h2-2/src/test/resources/application-h2-seq-oracle.yml new file mode 100644 index 000000000000..d24c49831c4e --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2-2/src/test/resources/application-h2-seq-oracle.yml @@ -0,0 +1,6 @@ +spring: + datasource: + driverClassName: org.h2.Driver + url: jdbc:h2:mem:seqdb;MODE=Oracle + username: sa + password: \ No newline at end of file diff --git a/persistence-modules/spring-boot-persistence-h2-2/src/test/resources/application-h2-seq.yml b/persistence-modules/spring-boot-persistence-h2-2/src/test/resources/application-h2-seq.yml new file mode 100644 index 000000000000..c3d22c4717d4 --- /dev/null +++ b/persistence-modules/spring-boot-persistence-h2-2/src/test/resources/application-h2-seq.yml @@ -0,0 +1,10 @@ +spring: + datasource: + driverClassName: org.h2.Driver + url: jdbc:h2:mem:seqdb + username: sa + password: + jpa: + hibernate: + ddl-auto: none + show-sql: true \ No newline at end of file diff --git a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/OrderService.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/OrderService.java new file mode 100644 index 000000000000..accc88b762ea --- /dev/null +++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/OrderService.java @@ -0,0 +1,20 @@ +package com.baeldung.aspect.transactional; + +import javax.transaction.Transactional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.aspect.transactional.model.Order; +import com.baeldung.aspect.transactional.repository.OrderRepository; + +@Service +public class OrderService { + @Autowired + private OrderRepository orderRepository; + + @Transactional //<-- marks this method + public void createOrder(Order order) { + orderRepository.save(order); + } +} diff --git a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/model/Order.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/model/Order.java new file mode 100644 index 000000000000..3d9e3cc14c8c --- /dev/null +++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/model/Order.java @@ -0,0 +1,15 @@ +package com.baeldung.aspect.transactional.model; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +@Entity +public class Order { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String name; +} diff --git a/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/repository/OrderRepository.java b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/repository/OrderRepository.java new file mode 100644 index 000000000000..05bf882c5fcb --- /dev/null +++ b/persistence-modules/spring-persistence-simple/src/main/java/com/baeldung/aspect/transactional/repository/OrderRepository.java @@ -0,0 +1,11 @@ +package com.baeldung.aspect.transactional.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.baeldung.aspect.transactional.model.Order; + +@Repository +public interface OrderRepository extends JpaRepository { + +} diff --git a/pom.xml b/pom.xml index d3db76e746de..f3ec488d4933 100644 --- a/pom.xml +++ b/pom.xml @@ -688,6 +688,8 @@ libraries-3 libraries-4 libraries-5 + libraries-6 + libraries-7 libraries-ai libraries-apache-commons libraries-apache-commons-2 @@ -764,6 +766,7 @@ spring-ai spring-ai-2 spring-ai-3 + spring-ai-4 spring-ai-modules spring-aop spring-aop-2 @@ -794,6 +797,7 @@ spring-drools spring-ejb-modules spring-exceptions + spring-grpc spring-jersey spring-kafka spring-kafka-2 @@ -1120,6 +1124,8 @@ libraries-3 libraries-4 libraries-5 + libraries-6 + libraries-7 libraries-ai libraries-apache-commons libraries-apache-commons-2 @@ -1196,6 +1202,7 @@ spring-ai spring-ai-2 spring-ai-3 + spring-ai-4 spring-ai-modules spring-aop spring-aop-2 @@ -1226,6 +1233,7 @@ spring-drools spring-ejb-modules spring-exceptions + spring-grpc spring-jersey spring-kafka spring-kafka-2 diff --git a/reactive-systems/inventory-service/Dockerfile b/reactive-systems/inventory-service/Dockerfile index d0900decfa71..e4a659a336d8 100644 --- a/reactive-systems/inventory-service/Dockerfile +++ b/reactive-systems/inventory-service/Dockerfile @@ -1,3 +1,3 @@ -FROM openjdk:8-jdk-alpine +FROM openjdk:17-jdk-alpine COPY target/inventory-service-0.0.1-SNAPSHOT.jar app.jar -ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker","/app.jar"] \ No newline at end of file +ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker","/app.jar"] diff --git a/reactive-systems/inventory-service/pom.xml b/reactive-systems/inventory-service/pom.xml index 0d9556850c1f..f82e0631abc8 100644 --- a/reactive-systems/inventory-service/pom.xml +++ b/reactive-systems/inventory-service/pom.xml @@ -26,7 +26,6 @@ org.springframework.kafka spring-kafka - ${spring-kafka.version} org.projectlombok @@ -66,4 +65,4 @@ - \ No newline at end of file + diff --git a/reactive-systems/order-service/Dockerfile b/reactive-systems/order-service/Dockerfile index e48c19c2b1f8..606ce210e77b 100644 --- a/reactive-systems/order-service/Dockerfile +++ b/reactive-systems/order-service/Dockerfile @@ -1,3 +1,3 @@ -FROM openjdk:8-jdk-alpine +FROM openjdk:17-jdk-alpine COPY target/order-service-0.0.1-SNAPSHOT.jar app.jar -ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker","/app.jar"] \ No newline at end of file +ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker","/app.jar"] diff --git a/reactive-systems/order-service/pom.xml b/reactive-systems/order-service/pom.xml index 6ef4a9dd8f98..207855ec5fc8 100644 --- a/reactive-systems/order-service/pom.xml +++ b/reactive-systems/order-service/pom.xml @@ -26,7 +26,6 @@ org.springframework.kafka spring-kafka - ${spring-kafka.version} org.projectlombok @@ -66,4 +65,4 @@ - \ No newline at end of file + diff --git a/reactive-systems/pom.xml b/reactive-systems/pom.xml index d84e07696d8e..0c669666c3ff 100644 --- a/reactive-systems/pom.xml +++ b/reactive-systems/pom.xml @@ -21,8 +21,4 @@ order-service - - 3.1.2 - - - \ No newline at end of file + diff --git a/reactive-systems/shipping-service/Dockerfile b/reactive-systems/shipping-service/Dockerfile index ff57bb953d9e..5650c854c341 100644 --- a/reactive-systems/shipping-service/Dockerfile +++ b/reactive-systems/shipping-service/Dockerfile @@ -1,3 +1,3 @@ -FROM openjdk:8-jdk-alpine +FROM openjdk:17-jdk-alpine COPY target/shipping-service-0.0.1-SNAPSHOT.jar app.jar -ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker","/app.jar"] \ No newline at end of file +ENTRYPOINT ["java","-jar","-Dspring.profiles.active=docker","/app.jar"] diff --git a/reactive-systems/shipping-service/pom.xml b/reactive-systems/shipping-service/pom.xml index 888cd08c0c33..a10b5ab06703 100644 --- a/reactive-systems/shipping-service/pom.xml +++ b/reactive-systems/shipping-service/pom.xml @@ -22,7 +22,6 @@ org.springframework.kafka spring-kafka - ${spring-kafka.version} com.fasterxml.jackson.core @@ -66,4 +65,4 @@ - \ No newline at end of file + diff --git a/spring-ai-3/pom.xml b/spring-ai-3/pom.xml index 860ecc62148d..fdadf6cac0bc 100644 --- a/spring-ai-3/pom.xml +++ b/spring-ai-3/pom.xml @@ -73,6 +73,11 @@ spring-ai-spring-boot-testcontainers test + + org.testcontainers + junit-jupiter + test + org.testcontainers chromadb @@ -143,7 +148,7 @@ 1.0.0-M7 5.9.0 3.1.1 - 3.4.5 + 3.5.0 1.0.0-M6 1.0.0-M7 diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java b/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java new file mode 100644 index 000000000000..b4b95faa0ced --- /dev/null +++ b/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplication.java @@ -0,0 +1,29 @@ +package com.baeldung.springai.docker.modelrunner; + +import org.springframework.ai.autoconfigure.chat.client.ChatClientAutoConfiguration; +import org.springframework.ai.autoconfigure.mistralai.MistralAiAutoConfiguration; +import org.springframework.ai.model.openai.autoconfigure.OpenAiAudioSpeechAutoConfiguration; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration; +import org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; + + +@SpringBootApplication(exclude = { + ChatClientAutoConfiguration.class, + MongoAutoConfiguration.class, + MongoDataAutoConfiguration.class, + org.springframework.ai.autoconfigure.vectorstore.mongo.MongoDBAtlasVectorStoreAutoConfiguration.class, + org.springframework.ai.vectorstore.mongodb.autoconfigure.MongoDBAtlasVectorStoreAutoConfiguration.class, + OpenAiAudioSpeechAutoConfiguration.class, + MistralAiAutoConfiguration.class +}) +class ModelRunnerApplication { + + public static void main(String[] args) { + SpringApplication app = new SpringApplication(ModelRunnerApplication.class); + app.setAdditionalProfiles("dockermodelrunner"); + app.run(args); + } + +} \ No newline at end of file diff --git a/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java b/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java new file mode 100644 index 000000000000..5b8a1c9732fe --- /dev/null +++ b/spring-ai-3/src/main/java/com/baeldung/springai/docker/modelrunner/ModelRunnerController.java @@ -0,0 +1,25 @@ +package com.baeldung.springai.docker.modelrunner; + +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +class ModelRunnerController { + + private final ChatClient chatClient; + + public ModelRunnerController(ChatClient.Builder chatClientBuilder) { + this.chatClient = chatClientBuilder.build(); + } + + @GetMapping("/chat") + public String chat(@RequestParam("message") String message) { + return this.chatClient.prompt() + .user(message) + .call() + .content(); + } + +} \ No newline at end of file diff --git a/spring-ai-3/src/main/resources/application-dockermodelrunner.properties b/spring-ai-3/src/main/resources/application-dockermodelrunner.properties new file mode 100644 index 000000000000..d407a3b85a90 --- /dev/null +++ b/spring-ai-3/src/main/resources/application-dockermodelrunner.properties @@ -0,0 +1,5 @@ +spring.ai.openai.api-key=${OPENAI_API_KEY} +spring.ai.openai.base-url=http://localhost:12434/engines +spring.ai.openai.chat.options.model=ai/gemma3 + +spring.docker.compose.enabled=false \ No newline at end of file diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java b/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java new file mode 100644 index 000000000000..a107ae9869d8 --- /dev/null +++ b/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/ModelRunnerApplicationManualTest.java @@ -0,0 +1,46 @@ +package com.baeldung.springai.docker.modelrunner; + +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.boot.test.web.server.LocalServerPort; +import org.springframework.context.annotation.Import; +import org.springframework.http.ResponseEntity; + + +@Import(TestcontainersConfiguration.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +class ModelRunnerApplicationManualTest { + + @LocalServerPort + private int port; + + @Autowired + private TestRestTemplate restTemplate; + + private String baseUrl; + + @BeforeEach + void setUp() { + baseUrl = "http://localhost:" + port; + } + + @Test + void givenMessage_whenCallChatController_thenSuccess() { + // given + String userMessage = "Hello, how are you?"; + + // when + ResponseEntity response = restTemplate.getForEntity( + baseUrl + "/chat?message=" + userMessage, String.class); + + // then + assertThat(response.getStatusCode().is2xxSuccessful()).isTrue(); + assertThat(response.getBody()).isNotEmpty(); + } + +} diff --git a/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java b/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java new file mode 100644 index 000000000000..b72f27518914 --- /dev/null +++ b/spring-ai-3/src/test/java/com/baeldung/springai/docker/modelrunner/TestcontainersConfiguration.java @@ -0,0 +1,24 @@ +package com.baeldung.springai.docker.modelrunner; + +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.test.context.DynamicPropertyRegistrar; +import org.testcontainers.containers.DockerModelRunnerContainer; + +@TestConfiguration(proxyBeanMethods = false) +class TestcontainersConfiguration { + + @Bean + DockerModelRunnerContainer socat() { + return new DockerModelRunnerContainer("alpine/socat:1.8.0.1"); + } + + @Bean + DynamicPropertyRegistrar properties(DockerModelRunnerContainer dmr) { + return (registrar) -> { + registrar.add("spring.ai.openai.base-url", dmr::getOpenAIEndpoint); + registrar.add("spring.ai.openai.api-key", () -> "test-api-key"); + registrar.add("spring.ai.openai.chat.options.model", () -> "ai/gemma3"); + }; + } +} diff --git a/spring-ai-4/pom.xml b/spring-ai-4/pom.xml new file mode 100644 index 000000000000..ac2466af39f8 --- /dev/null +++ b/spring-ai-4/pom.xml @@ -0,0 +1,119 @@ + + + 4.0.0 + spring-ai-4 + 0.0.1 + jar + spring-ai-4 + + + com.baeldung + parent-boot-3 + 0.0.1-SNAPSHOT + ../parent-boot-3 + + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + true + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + false + + + + + + + + org.springframework.ai + spring-ai-bom + ${spring-ai.version} + pom + import + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.ai + spring-ai-starter-model-openai + + + org.springframework.ai + spring-ai-model-chat-memory-repository-jdbc + + + org.hsqldb + hsqldb + runtime + + + + + org.springframework.boot + spring-boot-starter-test + test + + + + + + chat-memory + + true + + + com.baeldung.springai.memory.Application + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + ${spring.boot.mainclass} + + + + org.apache.maven.plugins + maven-compiler-plugin + + 21 + + + + + + + 5.9.0 + 3.5.0 + 1.0.0 + + + diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/Application.java b/spring-ai-4/src/main/java/com/baeldung/springai/memory/Application.java new file mode 100644 index 000000000000..5cdaa360c6bc --- /dev/null +++ b/spring-ai-4/src/main/java/com/baeldung/springai/memory/Application.java @@ -0,0 +1,15 @@ +package com.baeldung.springai.memory; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class Application { + + public static void main(String[] args) { + SpringApplication app = new SpringApplication(Application.class); + app.setAdditionalProfiles("memory"); + app.run(args); + } + +} diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatConfig.java b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatConfig.java new file mode 100644 index 000000000000..a44f8f7d0739 --- /dev/null +++ b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatConfig.java @@ -0,0 +1,21 @@ +package com.baeldung.springai.memory; + +import org.springframework.ai.chat.memory.ChatMemoryRepository; +import org.springframework.ai.chat.memory.repository.jdbc.HsqldbChatMemoryRepositoryDialect; +import org.springframework.ai.chat.memory.repository.jdbc.JdbcChatMemoryRepository; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; + +@Configuration +public class ChatConfig { + + @Bean + public ChatMemoryRepository getChatMemoryRepository(JdbcTemplate jdbcTemplate) { + return JdbcChatMemoryRepository.builder() + .jdbcTemplate(jdbcTemplate) + .dialect(new HsqldbChatMemoryRepositoryDialect()) + .build(); + } + +} diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatController.java b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatController.java new file mode 100644 index 000000000000..f860eea77ca0 --- /dev/null +++ b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatController.java @@ -0,0 +1,25 @@ +package com.baeldung.springai.memory; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +@RestController +public class ChatController { + + private final ChatService chatService; + + public ChatController(ChatService chatService) { + this.chatService = chatService; + } + + @PostMapping("/chat") + public ResponseEntity chat(@RequestBody @Valid ChatRequest request) { + String response = chatService.chat(request.getPrompt()); + return ResponseEntity.ok(response); + } + +} diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatRequest.java b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatRequest.java new file mode 100644 index 000000000000..cedefe07fa35 --- /dev/null +++ b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatRequest.java @@ -0,0 +1,18 @@ +package com.baeldung.springai.memory; + +import javax.validation.constraints.NotNull; + +public class ChatRequest { + + @NotNull + private String prompt; + + public String getPrompt() { + return prompt; + } + + public void setPrompt(String prompt) { + this.prompt = prompt; + } + +} diff --git a/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatService.java b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatService.java new file mode 100644 index 000000000000..64fc63acca79 --- /dev/null +++ b/spring-ai-4/src/main/java/com/baeldung/springai/memory/ChatService.java @@ -0,0 +1,38 @@ +package com.baeldung.springai.memory; + +import org.springframework.ai.chat.client.ChatClient; +import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor; +import org.springframework.ai.chat.memory.ChatMemory; +import org.springframework.ai.chat.model.ChatModel; +import org.springframework.stereotype.Component; +import org.springframework.web.context.annotation.SessionScope; + +import java.util.UUID; + +@Component +@SessionScope +public class ChatService { + + private final ChatClient chatClient; + private final String conversationId; + + public ChatService(ChatModel chatModel, ChatMemory chatMemory) { + this.chatClient = ChatClient.builder(chatModel) + .defaultAdvisors(MessageChatMemoryAdvisor.builder(chatMemory).build()) + .build(); + this.conversationId = UUID.randomUUID().toString(); + } + + public String getConversationId() { + return conversationId; + } + + public String chat(String prompt) { + return chatClient.prompt() + .user(userMessage -> userMessage.text(prompt)) + .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, conversationId)) + .call() + .content(); + } + +} diff --git a/spring-ai-4/src/main/resources/application-memory.yml b/spring-ai-4/src/main/resources/application-memory.yml new file mode 100644 index 000000000000..a0531b4eab58 --- /dev/null +++ b/spring-ai-4/src/main/resources/application-memory.yml @@ -0,0 +1,15 @@ +spring: + ai: + openai: + api-key: "" + + datasource: + url: jdbc:hsqldb:mem:chatdb + driver-class-name: org.hsqldb.jdbc.JDBCDriver + username: sa + password: + + sql: + init: + mode: always + schema-locations: classpath:org/springframework/ai/chat/memory/repository/jdbc/schema-hsqldb.sql diff --git a/spring-ai-4/src/main/resources/logback.xml b/spring-ai-4/src/main/resources/logback.xml new file mode 100644 index 000000000000..449efbdaebb0 --- /dev/null +++ b/spring-ai-4/src/main/resources/logback.xml @@ -0,0 +1,15 @@ + + + + [%d{yyyy-MM-dd HH:mm:ss}] [%p] [%c{1}] - %m%n + + + + + + + + + + + \ No newline at end of file diff --git a/spring-ai-4/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java b/spring-ai-4/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java new file mode 100644 index 000000000000..c96024846a92 --- /dev/null +++ b/spring-ai-4/src/test/java/com/baeldung/springai/memory/ChatServiceLiveTest.java @@ -0,0 +1,39 @@ +package com.baeldung.springai.memory; + +import org.junit.jupiter.api.Test; +import org.springframework.ai.chat.memory.ChatMemory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@ActiveProfiles("memory") +class ChatServiceLiveTest { + + private static final String PROMPT_1ST = "Tell me a joke"; + private static final String PROMPT_2ND = "Tell me another one"; + + @Autowired + private ChatMemory chatMemory; + + @Autowired + private ChatService chatService; + + @Test + void whenChatServiceIsCalledTwice_thenChatMemoryHasCorrectNumberOfEntries() { + String conversationId = chatService.getConversationId(); + + // 1st request + String response1 = chatService.chat(PROMPT_1ST); + assertThat(response1).isNotEmpty(); + assertThat(chatMemory.get(conversationId)).hasSize(2); + + // 2nd request + String response2 = chatService.chat(PROMPT_2ND); + assertThat(response2).isNotEmpty(); + assertThat(chatMemory.get(conversationId)).hasSize(4); + } + +} \ No newline at end of file diff --git a/spring-batch-2/src/test/java/com/baeldung/multiprocessorandwriter/BatchJobIntegrationTest.java b/spring-batch-2/src/test/java/com/baeldung/multiprocessorandwriter/BatchJobIntegrationTest.java index 223f4d14f645..8afac6c7db74 100644 --- a/spring-batch-2/src/test/java/com/baeldung/multiprocessorandwriter/BatchJobIntegrationTest.java +++ b/spring-batch-2/src/test/java/com/baeldung/multiprocessorandwriter/BatchJobIntegrationTest.java @@ -10,6 +10,8 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; @@ -83,7 +85,14 @@ public JobLauncherTestUtils jobLauncherTestUtils() { @BeforeEach public void setup() throws IOException { try (Connection connection = dataSource.getConnection()) { - ScriptUtils.executeSqlScript(connection, new ClassPathResource("org/springframework/batch/core/schema-h2.sql")); + DatabaseMetaData metaData = connection.getMetaData(); + try (ResultSet rs = metaData.getTables(null, null, "BATCH_JOB_INSTANCE", null)) { + if (!rs.next()) { + ScriptUtils.executeSqlScript(connection, new ClassPathResource("org/springframework/batch/core/schema-h2.sql")); + } else { + System.out.println("Spring Batch tables already exist. Skipping schema creation."); + } + } } catch (SQLException e) { throw new RuntimeException(e); } diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/GraphqlPagination.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/GraphqlPagination.java new file mode 100644 index 000000000000..2e78dd51c25e --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/GraphqlPagination.java @@ -0,0 +1,12 @@ +package com.baeldung.pagination; + + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class GraphqlPagination { + public static void main(String[] args) { + SpringApplication.run(GraphqlPagination.class, args); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookConnection.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookConnection.java new file mode 100644 index 000000000000..c0db70b69fcb --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookConnection.java @@ -0,0 +1,16 @@ +package com.baeldung.pagination.dto; + +import lombok.Getter; + +import java.util.List; + +@Getter +public class BookConnection { + private final List edges; + private final PageInfo pageInfo; + + public BookConnection(List edges, PageInfo pageInfo) { + this.edges = edges; + this.pageInfo = pageInfo; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookEdge.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookEdge.java new file mode 100644 index 000000000000..d688aad172c6 --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookEdge.java @@ -0,0 +1,16 @@ +package com.baeldung.pagination.dto; + +import com.baeldung.pagination.entity.Book; + +import lombok.Getter; + +@Getter +public class BookEdge { + private final Book node; + private final String cursor; + + public BookEdge(Book node, String cursor) { + this.node = node; + this.cursor = cursor; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookPage.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookPage.java new file mode 100644 index 000000000000..34d704342f93 --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/BookPage.java @@ -0,0 +1,25 @@ +package com.baeldung.pagination.dto; + +import lombok.Getter; +import org.springframework.data.domain.Page; + +import java.util.List; + +import com.baeldung.pagination.entity.Book; + +@Getter +public class BookPage { + private final List content; + private final int totalPages; + private final long totalElements; + private final int number; + private final int size; + + public BookPage(Page page) { + this.content = page.getContent(); + this.totalPages = page.getTotalPages(); + this.totalElements = page.getTotalElements(); + this.number = page.getNumber(); + this.size = page.getSize(); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/PageInfo.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/PageInfo.java new file mode 100644 index 000000000000..850b05de5b62 --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/dto/PageInfo.java @@ -0,0 +1,14 @@ +package com.baeldung.pagination.dto; + +import lombok.Getter; + +@Getter +public class PageInfo { + private final boolean hasNextPage; + private final String endCursor; + + public PageInfo(boolean hasNextPage, String endCursor) { + this.hasNextPage = hasNextPage; + this.endCursor = endCursor; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/entity/Book.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/entity/Book.java new file mode 100644 index 000000000000..465bf1db2816 --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/entity/Book.java @@ -0,0 +1,42 @@ +package com.baeldung.pagination.entity; + +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import lombok.Getter; +import lombok.Setter; + +@Entity +public class Book { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String title; + private String author; + + public Long getId() { + return this.id; + } + + public String getTitle() { + return this.title; + } + + public String getAuthor() { + return this.author; + } + + public void setId(Long id) { + this.id = id; + } + + public void setTitle(String title) { + this.title = title; + } + + public void setAuthor(String author) { + this.author = author; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/repository/BookRepository.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/repository/BookRepository.java new file mode 100644 index 000000000000..e506fd2104e1 --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/repository/BookRepository.java @@ -0,0 +1,16 @@ +package com.baeldung.pagination.repository; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.PagingAndSortingRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +import com.baeldung.pagination.entity.Book; + +@Repository +public interface BookRepository extends PagingAndSortingRepository, CrudRepository { + List findByIdGreaterThanOrderByIdAsc(Long cursor, org.springframework.data.domain.Pageable pageable); + List findAllByOrderByIdAsc(org.springframework.data.domain.Pageable pageable); + boolean existsByIdGreaterThan(Long id); +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/resolver/BookQueryResolver.java b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/resolver/BookQueryResolver.java new file mode 100644 index 000000000000..fee56ae90974 --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/java/com/baeldung/pagination/resolver/BookQueryResolver.java @@ -0,0 +1,56 @@ +package com.baeldung.pagination.resolver; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.graphql.data.method.annotation.Argument; +import org.springframework.graphql.data.method.annotation.QueryMapping; +import org.springframework.stereotype.Controller; + +import java.util.List; +import java.util.Optional; +import java.util.stream.Collectors; + +import com.baeldung.pagination.dto.BookConnection; +import com.baeldung.pagination.dto.BookEdge; +import com.baeldung.pagination.dto.BookPage; +import com.baeldung.pagination.dto.PageInfo; +import com.baeldung.pagination.entity.Book; +import com.baeldung.pagination.repository.BookRepository; + +@Controller +public class BookQueryResolver { + private final BookRepository bookRepository; + + public BookQueryResolver(BookRepository bookRepository) { + this.bookRepository = bookRepository; + } + + @QueryMapping + public BookPage books(@Argument int page, @Argument int size) { + Pageable pageable = PageRequest.of(page, size); + Page bookPage = bookRepository.findAll(pageable); + return new BookPage(bookPage); + } + + @QueryMapping + public BookConnection booksByCursor(@Argument Optional cursor, @Argument int limit) { + List books; + + if (cursor.isPresent()) { + books = bookRepository.findByIdGreaterThanOrderByIdAsc(cursor.get(), PageRequest.of(0, limit)); + } else { + books = bookRepository.findAllByOrderByIdAsc(PageRequest.of(0, limit)); + } + + List edges = books.stream() + .map(book -> new BookEdge(book, book.getId().toString())) + .collect(Collectors.toList()); + String endCursor = books.isEmpty() ? null : books.get(books.size() - 1).getId().toString(); + boolean hasNextPage = !books.isEmpty() && bookRepository.existsByIdGreaterThan(books.get(books.size() - 1).getId()); + + PageInfo pageInfo = new PageInfo(hasNextPage, endCursor); + + return new BookConnection(edges, pageInfo); + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/resources/application-pagination.yml b/spring-boot-modules/spring-boot-graphql-2/src/main/resources/application-pagination.yml new file mode 100644 index 000000000000..93ea6bd559aa --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/resources/application-pagination.yml @@ -0,0 +1,23 @@ +spring: + datasource: + url: jdbc:h2:mem:testdb # H2 in-memory DB + username: sa + password: password + driver-class-name: org.h2.Driver + h2: + console: + enabled: true + path: /h2-console + jpa: + hibernate: + ddl-auto: update + show-sql: false + properties: + hibernate.format_sql: true + + graphql: + servlet: + enabled: true + path: /graphql + schema: + locations: classpath:pagination/ \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/main/resources/pagination/schema.graphqls b/spring-boot-modules/spring-boot-graphql-2/src/main/resources/pagination/schema.graphqls new file mode 100644 index 000000000000..2e19b385f61e --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/main/resources/pagination/schema.graphqls @@ -0,0 +1,33 @@ +type Book { + id: ID! + title: String + author: String +} + +type BookPage { + content: [Book] + totalPages: Int + totalElements: Int + number: Int + size: Int +} + +type BookEdge { + node: Book + cursor: String +} + +type PageInfo { + hasNextPage: Boolean + endCursor: String +} + +type BookConnection { + edges: [BookEdge] + pageInfo: PageInfo +} + +type Query { + books(page: Int, size: Int): BookPage + booksByCursor(cursor: ID, limit: Int!): BookConnection +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-graphql-2/src/test/java/com/baeldung/pagination/GraphqlPaginationIntegrationTest.java b/spring-boot-modules/spring-boot-graphql-2/src/test/java/com/baeldung/pagination/GraphqlPaginationIntegrationTest.java new file mode 100644 index 000000000000..0c61292b55ad --- /dev/null +++ b/spring-boot-modules/spring-boot-graphql-2/src/test/java/com/baeldung/pagination/GraphqlPaginationIntegrationTest.java @@ -0,0 +1,202 @@ +package com.baeldung.pagination; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.graphql.tester.AutoConfigureGraphQlTester; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.graphql.test.tester.GraphQlTester; +import org.springframework.http.MediaType; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.web.reactive.server.WebTestClient; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.List; +import java.util.Map; + +import com.baeldung.pagination.entity.Book; +import com.baeldung.pagination.repository.BookRepository; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@AutoConfigureMockMvc +@AutoConfigureGraphQlTester +@ActiveProfiles("pagination") +class GraphqlPaginationIntegrationTest { + + @Autowired + private GraphQlTester graphQlTester; + + @Autowired + private WebTestClient webTestClient; + + @Autowired + private BookRepository bookRepository; + + @BeforeEach + void setup() { + bookRepository.deleteAll(); + + for (int i = 1; i <= 50; i++) { + Book book = new Book(); + book.setTitle("Test Book " + i); + book.setAuthor("Test Author " + i); + bookRepository.save(book); + } + } + + @Test + void givenPageAndSize_whenQueryBooks_thenShouldReturnCorrectPage() { + String query = """ + query { + books(page: 0, size: 5) { + content { + id + title + author + } + totalPages + totalElements + number + size + } + } + """; + + graphQlTester.document(query) + .execute() + .path("data.books") + .entity(BookPageResponse.class) + .satisfies(bookPage -> { + assertEquals(5, bookPage.getContent().size()); + assertEquals(0, bookPage.getNumber()); + assertEquals(5, bookPage.getSize()); + assertEquals(50, bookPage.getTotalElements()); + assertEquals(10, bookPage.getTotalPages()); + }); + } + + @Test + void givenCursorAndLimit_whenQueryBooksByCursor_thenShouldReturnNextBatch() { + // First page + String firstPageQuery = """ + query { + booksByCursor(limit: 5) { + edges { + node { + id + } + cursor + } + pageInfo { + endCursor + hasNextPage + } + } + } + """; + + BookConnectionResponse firstPage = graphQlTester.document(firstPageQuery) + .execute() + .path("data.booksByCursor") + .entity(BookConnectionResponse.class) + .get(); + + assertEquals(5, firstPage.getEdges().size()); + assertTrue(firstPage.getPageInfo().isHasNextPage()); + assertNotNull(firstPage.getPageInfo().getEndCursor()); + + // Second page + String secondPageQuery = String.format(""" + query { + booksByCursor(cursor: "%s", limit: 5) { + edges { + node { + id + } + } + pageInfo { + hasNextPage + } + } + } + """, firstPage.getPageInfo().getEndCursor()); + + graphQlTester.document(secondPageQuery) + .execute() + .path("data.booksByCursor") + .entity(BookConnectionResponse.class) + .satisfies(secondPage -> { + assertEquals(5, secondPage.getEdges().size()); + assertTrue(secondPage.getPageInfo().isHasNextPage()); + }); + } + + private static class BookPageResponse { + private List content; + private int totalPages; + private long totalElements; + private int number; + private int size; + + public List getContent() { + return content; + } + + public int getTotalPages() { + return totalPages; + } + + public long getTotalElements() { + return totalElements; + } + + public int getNumber() { + return number; + } + + public int getSize() { + return size; + } + } + + private static class BookConnectionResponse { + private List edges; + private PageInfoResponse pageInfo; + + public List getEdges() { + return edges; + } + + public PageInfoResponse getPageInfo() { + return pageInfo; + } + } + + private static class BookEdgeResponse { + private Book node; + private String cursor; + + public Book getNode() { + return node; + } + + public String getCursor() { + return cursor; + } + } + + private static class PageInfoResponse { + private boolean hasNextPage; + private String endCursor; + + public boolean isHasNextPage() { + return hasNextPage; + } + + public String getEndCursor() { + return endCursor; + } + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-libraries-2/pom.xml b/spring-boot-modules/spring-boot-libraries-2/pom.xml index ffd535983cbe..945f86eba7cc 100644 --- a/spring-boot-modules/spring-boot-libraries-2/pom.xml +++ b/spring-boot-modules/spring-boot-libraries-2/pom.xml @@ -11,18 +11,6 @@ 1.0.0-SNAPSHOT - - - - org.springframework.modulith - spring-modulith-bom - ${spring-modulith-bom.version} - import - pom - - - - org.springframework.boot @@ -36,10 +24,6 @@ org.springframework.boot spring-boot-starter-actuator - - ch.qos.logback - logback-classic - org.springframework.data spring-data-jpa @@ -54,22 +38,6 @@ jobrunr-spring-boot-starter ${jobrunr-spring-boot-starter.version} - - - org.openapitools - openapi-generator - ${openapi-generator.version} - - - org.openapitools - jackson-databind-nullable - ${jackson-databind-nullable.version} - - - org.springdoc - springdoc-openapi-ui - ${springdoc.version} - org.springframework.boot spring-boot-starter-test @@ -91,62 +59,49 @@ jandex ${jandex.version} + - io.github.resilience4j - resilience4j-spring-boot2 - ${resilience4j-spring-boot2.version} + org.zalando + problem-spring-web + ${problem-spring-web.version} - - com.github.tomakehurst - wiremock-jre8 - ${wiremock-jre8.version} - test + org.zalando + jackson-datatype-problem + ${jackson-datatype-problem.version} - org.springframework.modulith - spring-modulith-api + org.springframework.boot + spring-boot-starter-security + - org.springframework.modulith - spring-modulith-starter-test - test + org.togglz + togglz-spring-boot-starter + ${togglz.version} + + + org.togglz + togglz-spring-security + ${togglz.version} + + + jakarta.persistence + jakarta.persistence-api + ${jakarta.persistence-api.version} + + + com.h2database + h2 + + + org.springframework.boot + spring-boot-starter-data-jpa - - org.openapitools - openapi-generator-maven-plugin - ${openapi-generator.version} - - - - generate - - - - ${project.basedir}/src/main/resources/petstore.yml - - spring - com.baeldung.openapi.api - com.baeldung.openapi.model - true - true - true - - ApiUtil.java - - - false - true - - - - - - org.jboss.jandex jandex-maven-plugin @@ -172,20 +127,16 @@ - 1.2.2 5.1.7 4.0.3 - 7.8.0 - 2.4.5 - 0.2.1 0.10.2 2.4.3.Final - 2.0.2 - 2.34.0 1.2.3 - 1.7.0 - com.baeldung.openapi.OpenApiApplication - 3.2.2 + com.baeldung.kong.StockApp + 0.29.1 + 0.27.1 + 4.4.0 + 3.1.0 \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/SpringProblemApplication.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/SpringProblemApplication.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/SpringProblemApplication.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/SpringProblemApplication.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/advice/ExceptionHandler.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/advice/ExceptionHandler.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/advice/ExceptionHandler.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/advice/ExceptionHandler.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/advice/SecurityExceptionHandler.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/advice/SecurityExceptionHandler.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/advice/SecurityExceptionHandler.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/advice/SecurityExceptionHandler.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/configuration/ProblemDemoConfiguration.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/configuration/ProblemDemoConfiguration.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/configuration/ProblemDemoConfiguration.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/configuration/ProblemDemoConfiguration.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/configuration/SecurityConfiguration.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/configuration/SecurityConfiguration.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/configuration/SecurityConfiguration.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/configuration/SecurityConfiguration.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/controller/ProblemDemoController.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/controller/ProblemDemoController.java similarity index 96% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/controller/ProblemDemoController.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/controller/ProblemDemoController.java index 50f1ad5137c1..d04cd237d363 100644 --- a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/controller/ProblemDemoController.java +++ b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/controller/ProblemDemoController.java @@ -6,6 +6,7 @@ import java.util.Map; import org.springframework.http.MediaType; +//import org.springframework.security.access.AccessDeniedException; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/dto/Task.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/dto/Task.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/dto/Task.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/dto/Task.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/problems/TaskNotFoundProblem.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/problems/TaskNotFoundProblem.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/boot/problem/problems/TaskNotFoundProblem.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/boot/problem/problems/TaskNotFoundProblem.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/Employee.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/Employee.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/Employee.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/Employee.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/EmployeeRepository.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/EmployeeRepository.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/EmployeeRepository.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/EmployeeRepository.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/FeatureAssociation.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/FeatureAssociation.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/FeatureAssociation.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/FeatureAssociation.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/FeaturesAspect.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/FeaturesAspect.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/FeaturesAspect.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/FeaturesAspect.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/MyFeatures.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/MyFeatures.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/MyFeatures.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/MyFeatures.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/SalaryController.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/SalaryController.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/SalaryController.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/SalaryController.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/SalaryService.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/SalaryService.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/SalaryService.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/SalaryService.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/ToggleApplication.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/ToggleApplication.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/ToggleApplication.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/ToggleApplication.java index 9a237261af1e..223425bfbc2e 100644 --- a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/ToggleApplication.java +++ b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/ToggleApplication.java @@ -1,10 +1,10 @@ package com.baeldung.toggle; -import jakarta.annotation.security.RolesAllowed; - import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import jakarta.annotation.security.RolesAllowed; + @SpringBootApplication public class ToggleApplication { @RolesAllowed("*") diff --git a/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/ToggleConfiguration.java b/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/ToggleConfiguration.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/toggle/ToggleConfiguration.java rename to spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/toggle/ToggleConfiguration.java diff --git a/spring-boot-modules/spring-boot-libraries/src/main/resources/application-problem.properties b/spring-boot-modules/spring-boot-libraries-2/src/main/resources/application-problem.properties similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/main/resources/application-problem.properties rename to spring-boot-modules/spring-boot-libraries-2/src/main/resources/application-problem.properties diff --git a/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/boot/problem/controller/ProblemDemoControllerIntegrationTest.java b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/boot/problem/controller/ProblemDemoControllerIntegrationTest.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/boot/problem/controller/ProblemDemoControllerIntegrationTest.java rename to spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/boot/problem/controller/ProblemDemoControllerIntegrationTest.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/toggle/TestTogglzConfig.java b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/toggle/TestTogglzConfig.java new file mode 100644 index 000000000000..d6aca0281e0c --- /dev/null +++ b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/toggle/TestTogglzConfig.java @@ -0,0 +1,24 @@ +package com.baeldung.toggle; + +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; +import org.togglz.core.manager.FeatureManager; +import org.togglz.core.manager.FeatureManagerBuilder; +import org.togglz.core.repository.mem.InMemoryStateRepository; +import org.togglz.core.user.NoOpUserProvider; +import org.togglz.core.context.StaticFeatureManagerProvider; + + +@TestConfiguration +public class TestTogglzConfig { + @Bean + public FeatureManager featureManager() { + FeatureManager manager = new FeatureManagerBuilder() + .featureEnum(MyFeatures.class) + .stateRepository(new InMemoryStateRepository()) + .userProvider(new NoOpUserProvider()) + .build(); + StaticFeatureManagerProvider.setFeatureManager(manager); + return manager; + } +} \ No newline at end of file diff --git a/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java similarity index 97% rename from spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java rename to spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java index 3213a10df961..decf980a9ac0 100644 --- a/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java +++ b/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/toggle/ToggleIntegrationTest.java @@ -16,7 +16,7 @@ import org.springframework.web.context.WebApplicationContext; @RunWith(SpringJUnit4ClassRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = ToggleApplication.class) +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK, classes = {ToggleApplication.class, TestTogglzConfig.class}) @AutoConfigureMockMvc public class ToggleIntegrationTest { diff --git a/spring-boot-modules/spring-boot-libraries/pom.xml b/spring-boot-modules/spring-boot-libraries/pom.xml index 5f4e997051ab..cc856f47c2aa 100644 --- a/spring-boot-modules/spring-boot-libraries/pom.xml +++ b/spring-boot-modules/spring-boot-libraries/pom.xml @@ -13,7 +13,29 @@ 1.0.0-SNAPSHOT + + + + org.springframework.modulith + spring-modulith-bom + ${spring-modulith-bom.version} + import + pom + + + + + + + org.springframework.modulith + spring-modulith-api + + + org.springframework.modulith + spring-modulith-starter-test + test + org.springframework.boot spring-boot-starter-web @@ -39,28 +61,6 @@ spring-boot-starter-test test - - - org.togglz - togglz-spring-boot-starter - ${togglz.version} - - - org.togglz - togglz-spring-security - ${togglz.version} - - - - org.zalando - problem-spring-web - ${problem-spring-web.version} - - - org.zalando - jackson-datatype-problem - ${jackson-datatype-problem.version} - net.javacrumbs.shedlock @@ -142,6 +142,44 @@ qrcodegen ${qrcodegen.version} + + io.github.resilience4j + resilience4j-spring-boot2 + ${resilience4j-spring-boot2.version} + + + + com.github.tomakehurst + wiremock-jre8 + ${wiremock-jre8.version} + test + + + + org.openapitools + openapi-generator + ${openapi-generator.version} + + + org.slf4j + slf4j-simple + + + + + org.openapitools + jackson-databind-nullable + ${jackson-databind-nullable.version} + + + org.springdoc + springdoc-openapi-ui + ${springdoc.version} + + + ch.qos.logback + logback-classic + @@ -189,6 +227,37 @@ ${project.build.outputDirectory}/git.properties + + org.openapitools + openapi-generator-maven-plugin + ${openapi-generator.version} + + + + generate + + + + ${project.basedir}/src/main/resources/petstore.yml + + spring + com.baeldung.openapi.api + com.baeldung.openapi.model + true + true + true + + ApiUtil.java + + + false + true + true + + + + + @@ -231,15 +300,12 @@ - - com.baeldung.graphql.DemoApplication - 4.4.0 + com.baeldung.openapi.OpenApiApplication + 1.2.2 1.9.0 5.2.4 2.2.4 3.2.0 - 0.29.1 - 0.27.1 6.3.1 1.5-beta1 2.1 @@ -250,6 +316,11 @@ 3.1.8 0.4.6 1.8.0 + 2.0.2 + 2.34.0 + 7.8.0 + 1.7.0 + 0.2.1 diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/Application.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/Application.java similarity index 99% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/Application.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/Application.java index c2d26ab955df..32b8bf7316be 100644 --- a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/Application.java +++ b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/Application.java @@ -1,12 +1,13 @@ package com.baeldung.modulith; -import com.baeldung.modulith.product.ProductDto; -import com.baeldung.modulith.product.ProductService; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.scheduling.annotation.EnableAsync; +import com.baeldung.modulith.product.ProductDto; +import com.baeldung.modulith.product.ProductService; + @EnableAsync @SpringBootApplication @EnableAutoConfiguration diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/NotificationDTO.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/NotificationDTO.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/NotificationDTO.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/NotificationDTO.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/NotificationService.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/NotificationService.java similarity index 99% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/NotificationService.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/NotificationService.java index f356b9eaa6ab..0d60f9a203b3 100644 --- a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/NotificationService.java +++ b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/NotificationService.java @@ -1,12 +1,13 @@ package com.baeldung.modulith.notification; -import com.baeldung.modulith.notification.internal.Notification; -import com.baeldung.modulith.notification.internal.NotificationType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.modulith.ApplicationModuleListener; import org.springframework.stereotype.Service; +import com.baeldung.modulith.notification.internal.Notification; +import com.baeldung.modulith.notification.internal.NotificationType; + @Service public class NotificationService { diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/internal/Notification.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/internal/Notification.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/internal/Notification.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/internal/Notification.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/internal/NotificationType.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/internal/NotificationType.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/notification/internal/NotificationType.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/notification/internal/NotificationType.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/ProductDto.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/ProductDto.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/ProductDto.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/ProductDto.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/ProductService.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/ProductService.java similarity index 99% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/ProductService.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/ProductService.java index 39bb09de6473..9c9a0797cd8e 100644 --- a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/ProductService.java +++ b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/ProductService.java @@ -1,12 +1,13 @@ package com.baeldung.modulith.product; -import com.baeldung.modulith.notification.NotificationDTO; -import com.baeldung.modulith.notification.NotificationService; -import com.baeldung.modulith.product.internal.Product; +import java.util.Date; + import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Service; -import java.util.Date; +import com.baeldung.modulith.notification.NotificationDTO; +import com.baeldung.modulith.notification.NotificationService; +import com.baeldung.modulith.product.internal.Product; @Service public class ProductService { diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/internal/Product.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/internal/Product.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/modulith/product/internal/Product.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/modulith/product/internal/Product.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/openapi/OpenApiApplication.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/openapi/OpenApiApplication.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/openapi/OpenApiApplication.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/openapi/OpenApiApplication.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ApiExceptionHandler.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ApiExceptionHandler.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ApiExceptionHandler.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ApiExceptionHandler.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ExternalAPICaller.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ExternalAPICaller.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ExternalAPICaller.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ExternalAPICaller.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ExternalApiCallerConfig.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ExternalApiCallerConfig.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ExternalApiCallerConfig.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ExternalApiCallerConfig.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ResilientApp.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ResilientApp.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ResilientApp.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ResilientApp.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ResilientAppController.java b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ResilientAppController.java similarity index 99% rename from spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ResilientAppController.java rename to spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ResilientAppController.java index 0b99f7cec0c1..bb80b4f298ad 100644 --- a/spring-boot-modules/spring-boot-libraries-2/src/main/java/com/baeldung/resilientapp/ResilientAppController.java +++ b/spring-boot-modules/spring-boot-libraries/src/main/java/com/baeldung/resilientapp/ResilientAppController.java @@ -3,7 +3,6 @@ import java.util.concurrent.CompletableFuture; import org.springframework.beans.factory.annotation.Autowired; - import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; diff --git a/spring-boot-modules/spring-boot-libraries-2/src/main/resources/petstore.yml b/spring-boot-modules/spring-boot-libraries/src/main/resources/petstore.yml similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/main/resources/petstore.yml rename to spring-boot-modules/spring-boot-libraries/src/main/resources/petstore.yml diff --git a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/modulith/ApplicationModularityUnitTest.java b/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/modulith/ApplicationModularityUnitTest.java similarity index 100% rename from spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/modulith/ApplicationModularityUnitTest.java rename to spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/modulith/ApplicationModularityUnitTest.java diff --git a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/openapi/OpenApiPetsIntegrationTest.java b/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/openapi/OpenApiPetsIntegrationTest.java similarity index 70% rename from spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/openapi/OpenApiPetsIntegrationTest.java rename to spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/openapi/OpenApiPetsIntegrationTest.java index 2ef034bada5d..2e5a30e548e3 100644 --- a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/openapi/OpenApiPetsIntegrationTest.java +++ b/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/openapi/OpenApiPetsIntegrationTest.java @@ -8,10 +8,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.web.SecurityFilterChain; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.web.servlet.MockMvc; + @RunWith(SpringRunner.class) @SpringBootTest(classes = OpenApiApplication.class) @ComponentScan("com.baeldung.openapi") @@ -23,6 +28,15 @@ public class OpenApiPetsIntegrationTest { @Autowired private MockMvc mockMvc; + @TestConfiguration + static class NoSecurityConfig { + @Bean + public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { + http.csrf().disable().authorizeHttpRequests().anyRequest().permitAll(); + return http.build(); + } + } + @Test public void whenReadAll_thenStatusIsNotImplemented() throws Exception { this.mockMvc.perform(get(PETS_PATH)) diff --git a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/resilientapp/ResilientAppControllerManualTest.java b/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/resilientapp/ResilientAppControllerManualTest.java similarity index 97% rename from spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/resilientapp/ResilientAppControllerManualTest.java rename to spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/resilientapp/ResilientAppControllerManualTest.java index 26c50ee39dc8..fc9761b9cb40 100644 --- a/spring-boot-modules/spring-boot-libraries-2/src/test/java/com/baeldung/resilientapp/ResilientAppControllerManualTest.java +++ b/spring-boot-modules/spring-boot-libraries/src/test/java/com/baeldung/resilientapp/ResilientAppControllerManualTest.java @@ -3,25 +3,21 @@ import static com.github.tomakehurst.wiremock.client.WireMock.getRequestedFor; import static com.github.tomakehurst.wiremock.client.WireMock.ok; import static com.github.tomakehurst.wiremock.client.WireMock.serverError; - import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.junit.jupiter.api.Assertions.*; - +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.springframework.http.HttpStatus.BANDWIDTH_LIMIT_EXCEEDED; import static org.springframework.http.HttpStatus.OK; import static org.springframework.http.HttpStatus.TOO_MANY_REQUESTS; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - import java.util.stream.IntStream; import org.junit.Assert; - import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.web.client.TestRestTemplate; diff --git a/spring-grpc/README.md b/spring-grpc/README.md new file mode 100644 index 000000000000..7c9e7b0db64d --- /dev/null +++ b/spring-grpc/README.md @@ -0,0 +1,3 @@ +## Spring Protocol Buffers + +This module contains articles about Spring with gRPC diff --git a/spring-grpc/pom.xml b/spring-grpc/pom.xml new file mode 100644 index 000000000000..1085c90d3813 --- /dev/null +++ b/spring-grpc/pom.xml @@ -0,0 +1,113 @@ + + + 4.0.0 + spring-grpc + 0.1-SNAPSHOT + spring-grpc + + + com.baeldung + parent-boot-3 + 0.0.1-SNAPSHOT + ../parent-boot-3 + + + + + io.grpc + grpc-services + ${grpc-services.version} + + + org.springframework.grpc + spring-grpc-spring-boot-starter + ${spring-grpc.version} + + + + org.springframework.boot + spring-boot-starter-test + ${spring-boot.version} + test + + + org.springframework.grpc + spring-grpc-test + ${spring-grpc.version} + test + + + ch.qos.logback + logback-core + + + ch.qos.logback + logback-classic + + + + + + org.springframework.grpc + spring-grpc-dependencies + ${spring-grpc.version} + pom + import + + + + + + + + kr.motd.maven + os-maven-plugin + 1.7.1 + + + initialize + initialize + + detect + + + + + + org.xolstice.maven.plugins + protobuf-maven-plugin + 0.6.1 + + com.google.protobuf:protoc:${protobuf-java.version}:exe:${os.detected.classifier} + grpc-java + io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier} + + + + compile + + compile + compile-custom + + + jakarta_omit,@generated=omit + + + + + + + + + 17 + 1.72.0 + 4.30.2 + 0.8.0 + 1.72.0 + 0.8.0 + 3.4.5 + + + \ No newline at end of file diff --git a/spring-grpc/src/main/java/com/baeldung/grpc/GrpcCalculatorService.java b/spring-grpc/src/main/java/com/baeldung/grpc/GrpcCalculatorService.java new file mode 100644 index 000000000000..25890b5e1c9c --- /dev/null +++ b/spring-grpc/src/main/java/com/baeldung/grpc/GrpcCalculatorService.java @@ -0,0 +1,20 @@ +package com.baeldung.grpc; + +import org.springframework.stereotype.Service; +import org.springframework.grpc.calculator.proto.CalculatorGrpc; +import org.springframework.grpc.calculator.proto.Response; +import org.springframework.grpc.calculator.proto.Request; + +import io.grpc.stub.StreamObserver; + +@Service +public class GrpcCalculatorService extends CalculatorGrpc.CalculatorImplBase { + + @Override + public void multiply(Request req, StreamObserver responseObserver) { + Response reply = Response.newBuilder().setResult(req.getFirstValue() * req.getSecondValue()).build(); + responseObserver.onNext(reply); + responseObserver.onCompleted(); + } + +} diff --git a/spring-grpc/src/main/java/com/baeldung/grpc/SpringgRPCApplication.java b/spring-grpc/src/main/java/com/baeldung/grpc/SpringgRPCApplication.java new file mode 100644 index 000000000000..30e284d14e79 --- /dev/null +++ b/spring-grpc/src/main/java/com/baeldung/grpc/SpringgRPCApplication.java @@ -0,0 +1,13 @@ +package com.baeldung.grpc; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringgRPCApplication { + + public static void main(String[] args) { + SpringApplication.run(SpringgRPCApplication.class, args); + } + +} diff --git a/spring-grpc/src/main/proto/calculator.proto b/spring-grpc/src/main/proto/calculator.proto new file mode 100644 index 000000000000..fecd033cfd74 --- /dev/null +++ b/spring-grpc/src/main/proto/calculator.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +option java_multiple_files = true; +option java_package = "org.springframework.grpc.calculator.proto"; +option java_outer_classname = "CalculatorProto"; + +service Calculator { + rpc Multiply(Request) returns (Response) {} +} + +message Request { + int32 firstValue = 1; + int32 secondValue = 2; +} + +message Response { + int32 result = 1; +} \ No newline at end of file diff --git a/spring-grpc/src/main/resources/application.properties b/spring-grpc/src/main/resources/application.properties new file mode 100644 index 000000000000..8addb2e8a215 --- /dev/null +++ b/spring-grpc/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=Calculator \ No newline at end of file diff --git a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/CustomPartitioner.java b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/CustomPartitioner.java similarity index 93% rename from spring-kafka/src/main/java/com/baeldung/partitioningstrategy/CustomPartitioner.java rename to spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/CustomPartitioner.java index f4899cf9a364..b63bc248cd3f 100644 --- a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/CustomPartitioner.java +++ b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/CustomPartitioner.java @@ -1,10 +1,10 @@ -package com.baeldung.partitioningstrategy; +package com.baeldung.spring.kafka.partitioningstrategy; + +import java.util.Map; import org.apache.kafka.clients.producer.Partitioner; import org.apache.kafka.common.Cluster; -import java.util.Map; - public class CustomPartitioner implements Partitioner { private static final int PREMIUM_PARTITION = 0; private static final int NORMAL_PARTITION = 1; diff --git a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/KafkaApplication.java b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaApplication.java similarity index 95% rename from spring-kafka/src/main/java/com/baeldung/partitioningstrategy/KafkaApplication.java rename to spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaApplication.java index c2ca1d3a4713..204364ea9387 100644 --- a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/KafkaApplication.java +++ b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaApplication.java @@ -1,4 +1,7 @@ -package com.baeldung.partitioningstrategy; +package com.baeldung.spring.kafka.partitioningstrategy; + +import java.util.HashMap; +import java.util.Map; import org.apache.kafka.clients.consumer.ConsumerConfig; import org.apache.kafka.clients.consumer.KafkaConsumer; @@ -12,9 +15,6 @@ import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.core.ProducerFactory; -import java.util.HashMap; -import java.util.Map; - @SpringBootApplication public class KafkaApplication { @@ -26,7 +26,7 @@ public KafkaTemplate kafkaTemplate() { @Bean public ProducerFactory producerFactory() { Map configProps = new HashMap<>(); - configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); + configProps.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9095"); configProps.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class); configProps.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class); return new DefaultKafkaProducerFactory<>(configProps); @@ -35,7 +35,7 @@ public ProducerFactory producerFactory() { @Bean public KafkaConsumer kafkaConsumer() { Map configProps = new HashMap<>(); - configProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); + configProps.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9095"); configProps.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); configProps.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class); configProps.put(ConsumerConfig.GROUP_ID_CONFIG, "test-group"); // Set a unique group ID diff --git a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/KafkaMessageConsumer.java b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaMessageConsumer.java similarity index 95% rename from spring-kafka/src/main/java/com/baeldung/partitioningstrategy/KafkaMessageConsumer.java rename to spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaMessageConsumer.java index 8290b0ab0fa1..58ad40e4ceb1 100644 --- a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/KafkaMessageConsumer.java +++ b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaMessageConsumer.java @@ -1,14 +1,16 @@ -package com.baeldung.partitioningstrategy; +package com.baeldung.spring.kafka.partitioningstrategy; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; -import jakarta.annotation.Nullable; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.kafka.support.KafkaHeaders; import org.springframework.messaging.handler.annotation.Header; import org.springframework.messaging.handler.annotation.Payload; import org.springframework.stereotype.Service; -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; + +import jakarta.annotation.Nullable; @Service public class KafkaMessageConsumer { diff --git a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/ReceivedMessage.java b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/ReceivedMessage.java similarity index 91% rename from spring-kafka/src/main/java/com/baeldung/partitioningstrategy/ReceivedMessage.java rename to spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/ReceivedMessage.java index a262f62e3930..f3582a2e4b0f 100644 --- a/spring-kafka/src/main/java/com/baeldung/partitioningstrategy/ReceivedMessage.java +++ b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/partitioningstrategy/ReceivedMessage.java @@ -1,4 +1,4 @@ -package com.baeldung.partitioningstrategy; +package com.baeldung.spring.kafka.partitioningstrategy; public class ReceivedMessage { private final String key; diff --git a/spring-kafka/src/main/java/com/baeldung/sasl/KafkaConsumer.java b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/sasl/KafkaConsumer.java similarity index 94% rename from spring-kafka/src/main/java/com/baeldung/sasl/KafkaConsumer.java rename to spring-kafka-2/src/main/java/com/baeldung/spring/kafka/sasl/KafkaConsumer.java index 15f830d51a2f..4cd74105775a 100644 --- a/spring-kafka/src/main/java/com/baeldung/sasl/KafkaConsumer.java +++ b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/sasl/KafkaConsumer.java @@ -1,12 +1,13 @@ -package com.baeldung.sasl; +package com.baeldung.spring.kafka.sasl; + +import java.util.ArrayList; +import java.util.List; -import lombok.extern.slf4j.Slf4j; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.springframework.kafka.annotation.KafkaListener; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.List; +import lombok.extern.slf4j.Slf4j; @Component @Slf4j diff --git a/spring-kafka/src/main/java/com/baeldung/sasl/KafkaSaslApplication.java b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/sasl/KafkaSaslApplication.java similarity index 90% rename from spring-kafka/src/main/java/com/baeldung/sasl/KafkaSaslApplication.java rename to spring-kafka-2/src/main/java/com/baeldung/spring/kafka/sasl/KafkaSaslApplication.java index 57e2ac605bb7..be2c6c0d2392 100644 --- a/spring-kafka/src/main/java/com/baeldung/sasl/KafkaSaslApplication.java +++ b/spring-kafka-2/src/main/java/com/baeldung/spring/kafka/sasl/KafkaSaslApplication.java @@ -1,4 +1,4 @@ -package com.baeldung.sasl; +package com.baeldung.spring.kafka.sasl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/spring-kafka/src/main/resources/application-sasl.yml b/spring-kafka-2/src/main/resources/application-sasl.yml similarity index 100% rename from spring-kafka/src/main/resources/application-sasl.yml rename to spring-kafka-2/src/main/resources/application-sasl.yml diff --git a/spring-kafka-2/src/main/resources/application.properties b/spring-kafka-2/src/main/resources/application.properties index 76397644400f..fd4cc7a5bf5a 100644 --- a/spring-kafka-2/src/main/resources/application.properties +++ b/spring-kafka-2/src/main/resources/application.properties @@ -1,4 +1,4 @@ -spring.kafka.bootstrap-servers=localhost:9092,localhost:9093,localhost:9094 +spring.kafka.bootstrap-servers=localhost:9092,localhost:9093,localhost:9094, localhost:9095 message.topic.name=baeldung long.message.topic.name=longMessage greeting.topic.name=greeting diff --git a/spring-kafka/src/test/java/com/baeldung/partitioningstrategy/KafkaApplicationIntegrationTest.java b/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaApplicationIntegrationTest.java similarity index 98% rename from spring-kafka/src/test/java/com/baeldung/partitioningstrategy/KafkaApplicationIntegrationTest.java rename to spring-kafka-2/src/test/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaApplicationIntegrationTest.java index 34e466b4b965..a3ed7993b390 100644 --- a/spring-kafka/src/test/java/com/baeldung/partitioningstrategy/KafkaApplicationIntegrationTest.java +++ b/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/partitioningstrategy/KafkaApplicationIntegrationTest.java @@ -1,4 +1,15 @@ -package com.baeldung.partitioningstrategy; +package com.baeldung.spring.kafka.partitioningstrategy; + +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.awaitility.Awaitility.await; +import static org.junit.Assert.assertEquals; + +import java.time.Duration; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import org.apache.kafka.clients.consumer.Consumer; import org.apache.kafka.clients.consumer.ConsumerRecord; @@ -16,19 +27,8 @@ import org.springframework.kafka.test.context.EmbeddedKafka; import org.springframework.kafka.test.utils.KafkaTestUtils; -import java.time.Duration; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - -import static java.util.concurrent.TimeUnit.SECONDS; -import static org.awaitility.Awaitility.await; -import static org.junit.Assert.assertEquals; - @SpringBootTest -@EmbeddedKafka(partitions = 3, brokerProperties = { "listeners=PLAINTEXT://localhost:9092" }, kraft = false) +@EmbeddedKafka(partitions = 3, brokerProperties = { "listeners=PLAINTEXT://localhost:9095" }, kraft = false) public class KafkaApplicationIntegrationTest { @Autowired diff --git a/spring-kafka/src/test/java/com/baeldung/sasl/SprintContextTest.java b/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/sasl/SprintContextTest.java similarity index 85% rename from spring-kafka/src/test/java/com/baeldung/sasl/SprintContextTest.java rename to spring-kafka-2/src/test/java/com/baeldung/spring/kafka/sasl/SprintContextTest.java index 1739ce983b69..77402285b6b2 100644 --- a/spring-kafka/src/test/java/com/baeldung/sasl/SprintContextTest.java +++ b/spring-kafka-2/src/test/java/com/baeldung/spring/kafka/sasl/SprintContextTest.java @@ -1,4 +1,4 @@ -package com.baeldung.sasl; +package com.baeldung.spring.kafka.sasl; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -7,7 +7,7 @@ @ExtendWith(SpringExtension.class) @SpringBootTest(classes = KafkaSaslApplication.class) -class SpringContextTest { +class SprintContextTest { @Test void whenSpringContextIsBootstrapped_thenNoExceptions() { diff --git a/spring-kafka/src/test/resources/sasl/Dockerfile b/spring-kafka-2/src/test/resources/sasl/Dockerfile similarity index 100% rename from spring-kafka/src/test/resources/sasl/Dockerfile rename to spring-kafka-2/src/test/resources/sasl/Dockerfile diff --git a/spring-kafka/src/test/resources/sasl/config/kadm5.acl b/spring-kafka-2/src/test/resources/sasl/config/kadm5.acl similarity index 100% rename from spring-kafka/src/test/resources/sasl/config/kadm5.acl rename to spring-kafka-2/src/test/resources/sasl/config/kadm5.acl diff --git a/spring-kafka/src/test/resources/sasl/config/kafka_server_jaas.conf b/spring-kafka-2/src/test/resources/sasl/config/kafka_server_jaas.conf similarity index 100% rename from spring-kafka/src/test/resources/sasl/config/kafka_server_jaas.conf rename to spring-kafka-2/src/test/resources/sasl/config/kafka_server_jaas.conf diff --git a/spring-kafka/src/test/resources/sasl/config/krb5.conf b/spring-kafka-2/src/test/resources/sasl/config/krb5.conf similarity index 100% rename from spring-kafka/src/test/resources/sasl/config/krb5.conf rename to spring-kafka-2/src/test/resources/sasl/config/krb5.conf diff --git a/spring-kafka/src/test/resources/sasl/config/zookeeper_jaas.conf b/spring-kafka-2/src/test/resources/sasl/config/zookeeper_jaas.conf similarity index 100% rename from spring-kafka/src/test/resources/sasl/config/zookeeper_jaas.conf rename to spring-kafka-2/src/test/resources/sasl/config/zookeeper_jaas.conf diff --git a/spring-kafka/src/test/resources/sasl/docker-compose.yml b/spring-kafka-2/src/test/resources/sasl/docker-compose.yml similarity index 100% rename from spring-kafka/src/test/resources/sasl/docker-compose.yml rename to spring-kafka-2/src/test/resources/sasl/docker-compose.yml diff --git a/spring-kafka/src/test/resources/sasl/setup_kdc.sh b/spring-kafka-2/src/test/resources/sasl/setup_kdc.sh similarity index 100% rename from spring-kafka/src/test/resources/sasl/setup_kdc.sh rename to spring-kafka-2/src/test/resources/sasl/setup_kdc.sh