diff --git a/apache-commons-math/pom.xml b/apache-commons-math/pom.xml
new file mode 100644
index 0000000000..98c6953120
--- /dev/null
+++ b/apache-commons-math/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+ com.baeldung
+ apache-commons-math
+ 1.0-SNAPSHOT
+
+
+ 3.6.0
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ 1.8
+ 1.8
+
+
+
+
+
+
+
+ org.apache.commons
+ commons-math3
+ 3.6.1
+
+
+
+ junit
+ junit
+ 4.12
+ test
+
+
+
+
\ No newline at end of file
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/ComplexTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/ComplexTests.java
new file mode 100644
index 0000000000..2e5074453e
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/ComplexTests.java
@@ -0,0 +1,20 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.complex.Complex;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class ComplexTests {
+
+ @Test
+ public void whenComplexPow_thenCorrect() {
+ Complex first = new Complex(1.0, 3.0);
+ Complex second = new Complex(2.0, 5.0);
+
+ Complex power = first.pow(second);
+
+ Assert.assertEquals(-0.007563724861696302, power.getReal(), 1e-7);
+ Assert.assertEquals(0.01786136835085382, power.getImaginary(), 1e-7);
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/FractionTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/FractionTests.java
new file mode 100644
index 0000000000..6efef79b23
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/FractionTests.java
@@ -0,0 +1,20 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.fraction.Fraction;
+import org.apache.commons.math3.fraction.FractionFormat;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class FractionTests {
+
+ @Test
+ public void whenFractionAdd_thenCorrect() {
+ Fraction lhs = new Fraction(1, 3);
+ Fraction rhs = new Fraction(2, 5);
+ Fraction sum = lhs.add(rhs);
+
+ Assert.assertEquals(11, sum.getNumerator());
+ Assert.assertEquals(15, sum.getDenominator());
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/GeometryTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/GeometryTests.java
new file mode 100644
index 0000000000..17cbb607d6
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/GeometryTests.java
@@ -0,0 +1,21 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.geometry.euclidean.twod.Line;
+import org.apache.commons.math3.geometry.euclidean.twod.Vector2D;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class GeometryTests {
+
+ @Test
+ public void whenLineIntersection_thenCorrect() {
+ Line l1 = new Line(new Vector2D(0, 0), new Vector2D(1, 1), 0);
+ Line l2 = new Line(new Vector2D(0, 1), new Vector2D(1, 1.5), 0);
+
+ Vector2D intersection = l1.intersection(l2);
+
+ Assert.assertEquals(2, intersection.getX(), 1e-7);
+ Assert.assertEquals(2, intersection.getY(), 1e-7);
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/IntegrationTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/IntegrationTests.java
new file mode 100644
index 0000000000..62ae898fa8
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/IntegrationTests.java
@@ -0,0 +1,21 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.analysis.UnivariateFunction;
+import org.apache.commons.math3.analysis.integration.SimpsonIntegrator;
+import org.apache.commons.math3.analysis.integration.UnivariateIntegrator;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class IntegrationTests {
+
+ @Test
+ public void whenUnivariateIntegratorIntegrate_thenCorrect() {
+ final UnivariateFunction function = v -> v;
+ final UnivariateIntegrator integrator = new SimpsonIntegrator(1.0e-12, 1.0e-8, 1, 32);
+
+ final double i = integrator.integrate(100, function, 0, 10);
+
+ Assert.assertEquals(16 + 2d/3d, i, 1e-7);
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/LinearAlgebraTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/LinearAlgebraTests.java
new file mode 100644
index 0000000000..981f839280
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/LinearAlgebraTests.java
@@ -0,0 +1,25 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.linear.*;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class LinearAlgebraTests {
+
+ @Test
+ public void whenDecompositionSolverSolve_thenCorrect() {
+ RealMatrix a =
+ new Array2DRowRealMatrix(new double[][] { { 2, 3, -2 }, { -1, 7, 6 }, { 4, -3, -5 } },
+ false);
+ RealVector b = new ArrayRealVector(new double[] { 1, -2, 1 }, false);
+
+ DecompositionSolver solver = new LUDecomposition(a).getSolver();
+
+ RealVector solution = solver.solve(b);
+
+ Assert.assertEquals(-0.3698630137, solution.getEntry(0), 1e-7);
+ Assert.assertEquals(0.1780821918, solution.getEntry(1), 1e-7);
+ Assert.assertEquals(-0.602739726, solution.getEntry(2), 1e-7);
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/ProbabilitiesTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/ProbabilitiesTests.java
new file mode 100644
index 0000000000..41ccb16c5a
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/ProbabilitiesTests.java
@@ -0,0 +1,15 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.distribution.NormalDistribution;
+import org.junit.Test;
+
+public class ProbabilitiesTests {
+
+ @Test
+ public void whenNormalDistributionSample_thenSuccess() {
+ final NormalDistribution normalDistribution = new NormalDistribution(10, 3);
+
+ System.out.println(normalDistribution.sample());
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/RootFindingTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/RootFindingTests.java
new file mode 100644
index 0000000000..3e6b542c01
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/RootFindingTests.java
@@ -0,0 +1,20 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.analysis.UnivariateFunction;
+import org.apache.commons.math3.analysis.solvers.BracketingNthOrderBrentSolver;
+import org.apache.commons.math3.analysis.solvers.UnivariateSolver;
+import org.junit.Assert;
+import org.junit.Test;
+
+public class RootFindingTests {
+
+ @Test
+ public void whenUnivariateSolverSolver_thenCorrect() {
+ final UnivariateFunction function = v -> Math.pow(v, 2) - 2;
+ UnivariateSolver solver = new BracketingNthOrderBrentSolver(1.0e-12, 1.0e-8, 5);
+ double c = solver.solve(100, function, -10.0, 10.0, 0);
+
+ Assert.assertEquals(-Math.sqrt(2), c, 1e-7);
+ }
+
+}
diff --git a/apache-commons-math/src/test/java/com/baeldung/commons/math/StatisticsTests.java b/apache-commons-math/src/test/java/com/baeldung/commons/math/StatisticsTests.java
new file mode 100644
index 0000000000..c1b0619b11
--- /dev/null
+++ b/apache-commons-math/src/test/java/com/baeldung/commons/math/StatisticsTests.java
@@ -0,0 +1,38 @@
+package com.baeldung.commons.math;
+
+import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+public class StatisticsTests {
+
+ private double[] values;
+ private DescriptiveStatistics descriptiveStatistics;
+
+ @Before
+ public void setUp() {
+ values = new double[] {65, 51 , 16, 11 , 6519, 191 ,0 , 98, 19854, 1, 32};
+
+ descriptiveStatistics = new DescriptiveStatistics();
+ for(double v : values) {
+ descriptiveStatistics.addValue(v);
+ }
+ }
+
+ @Test
+ public void whenDescriptiveStatisticsGetMean_thenCorrect() {
+ Assert.assertEquals(2439.8181818181815, descriptiveStatistics.getMean(), 1e-7);
+ }
+
+ @Test
+ public void whenDescriptiveStatisticsGetMedian_thenCorrect() {
+ Assert.assertEquals(51, descriptiveStatistics.getPercentile(50), 1e-7);
+ }
+
+ @Test
+ public void whenDescriptiveStatisticsGetStandardDeviation_thenCorrect() {
+ Assert.assertEquals(6093.054649651221, descriptiveStatistics.getStandardDeviation(), 1e-7);
+ }
+
+}
diff --git a/apache-fop/src/main/resources/logback.xml b/apache-fop/src/main/resources/logback.xml
index 62d0ea5037..ec0dc2469a 100644
--- a/apache-fop/src/main/resources/logback.xml
+++ b/apache-fop/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,10 +7,13 @@
-
+
+
+
+
+
-
\ No newline at end of file
diff --git a/apache-velocity/src/main/resources/logback.xml b/apache-velocity/src/main/resources/logback.xml
index 70a420a57a..ec0dc2469a 100644
--- a/apache-velocity/src/main/resources/logback.xml
+++ b/apache-velocity/src/main/resources/logback.xml
@@ -1,23 +1,19 @@
-
-
-
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
- %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n
-
+
+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/aspectj/pom.xml b/aspectj/pom.xml
index 90b527c14f..cbc98dac81 100644
--- a/aspectj/pom.xml
+++ b/aspectj/pom.xml
@@ -70,11 +70,6 @@
spring-aop
4.3.4.RELEASE
-
- log4j
- log4j
- 1.2.17
-
diff --git a/aspectj/src/main/resources/log4j.properties b/aspectj/src/main/resources/log4j.properties
deleted file mode 100644
index 9e2afcd5b0..0000000000
--- a/aspectj/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-log4j.rootLogger=TRACE, stdout
-
-# Redirect log messages to console
-log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-log4j.appender.stdout.Target=System.out
-log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
-
-log4j.logger.org.springframework.aop.interceptor.PerformanceMonitorInterceptor=TRACE, stdout
-log4j.logger.com.baeldung.performancemonitor.MyPerformanceMonitorInterceptor=INFO, stdout
\ No newline at end of file
diff --git a/aspectj/src/main/resources/logback.xml b/aspectj/src/main/resources/logback.xml
index 8b566286b8..ec0dc2469a 100644
--- a/aspectj/src/main/resources/logback.xml
+++ b/aspectj/src/main/resources/logback.xml
@@ -1,18 +1,19 @@
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n
-
-
+
+
-
-
-
+
+
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/core-java-9/src/main/resources/logback.xml b/core-java-9/src/main/resources/logback.xml
index eefdc7a337..ec0dc2469a 100644
--- a/core-java-9/src/main/resources/logback.xml
+++ b/core-java-9/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,10 +7,13 @@
-
+
+
+
+
+
-
+
-
\ No newline at end of file
diff --git a/core-java/README.md b/core-java/README.md
index a7c8b0e855..45695f13f6 100644
--- a/core-java/README.md
+++ b/core-java/README.md
@@ -91,4 +91,4 @@
- [Avoiding ConcurrentModificationException when iterating and removing](http://www.baeldung.com/avoiding-concurrentmodificationexception-when-iterating-and-removing)
- [Removing all nulls from a List in Java](http://www.baeldung.com/java-remove-nulls-from-list)
- [Removing all duplicates from a List in Java](http://www.baeldung.com/java-remove-duplicates-from-list)
-
+- [An Introduction to ThreadLocal in Java](http://www.baeldung.com/java-threadlocal)
diff --git a/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java b/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java
index 84c069a746..0a9a5df850 100644
--- a/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java
+++ b/core-java/src/main/java/com/baeldung/logforging/LogForgingDemo.java
@@ -14,9 +14,9 @@ public class LogForgingDemo {
public static void main(String[] args) {
LogForgingDemo demo = new LogForgingDemo();
- demo.addLog(String.valueOf(300));
- demo.addLog(String.valueOf(300 + "\n\nweb - 2017-04-12 17:47:08,957 [main] INFO Amount reversed successfully"));
- demo.addLog(String.valueOf(encode(300 + "\n\nweb - 2017-04-12 17:47:08,957 [main] INFO Amount reversed successfully")));
+ demo.addLog("300");
+ demo.addLog("300 \n\nweb - 2017-04-12 17:47:08,957 [main] INFO Amount reversed successfully");
+ demo.addLog(encode("300 \n\nweb - 2017-04-12 17:47:08,957 [main] INFO Amount reversed successfully"));
}
public static String encode(String message) {
diff --git a/core-java/src/main/resources/logback.xml b/core-java/src/main/resources/logback.xml
index 62d0ea5037..ec0dc2469a 100644
--- a/core-java/src/main/resources/logback.xml
+++ b/core-java/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,10 +7,13 @@
-
+
+
+
+
+
-
\ No newline at end of file
diff --git a/couchbase-sdk/src/main/resources/logback.xml b/couchbase-sdk/src/main/resources/logback.xml
index efcc6fb4c7..ec0dc2469a 100644
--- a/couchbase-sdk/src/main/resources/logback.xml
+++ b/couchbase-sdk/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -8,10 +8,12 @@
-
+
+
+
+
-
\ No newline at end of file
diff --git a/couchbase-sdk/src/test/resources/logback.xml b/couchbase-sdk/src/test/resources/logback.xml
index efcc6fb4c7..ec0dc2469a 100644
--- a/couchbase-sdk/src/test/resources/logback.xml
+++ b/couchbase-sdk/src/test/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -8,10 +8,12 @@
-
+
+
+
+
-
\ No newline at end of file
diff --git a/gson/src/main/resources/logback.xml b/gson/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/gson/src/main/resources/logback.xml
+++ b/gson/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/guava/src/main/resources/logback.xml b/guava/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/guava/src/main/resources/logback.xml
+++ b/guava/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/handling-spring-static-resources/src/main/resources/logback.xml b/handling-spring-static-resources/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/handling-spring-static-resources/src/main/resources/logback.xml
+++ b/handling-spring-static-resources/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/hazelcast/src/main/resources/logback.xml b/hazelcast/src/main/resources/logback.xml
index 8b566286b8..ec0dc2469a 100644
--- a/hazelcast/src/main/resources/logback.xml
+++ b/hazelcast/src/main/resources/logback.xml
@@ -1,18 +1,19 @@
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n
-
-
+
+
-
-
-
+
+
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/httpclient/src/main/resources/logback.xml b/httpclient/src/main/resources/logback.xml
index aa1e9cd522..ec0dc2469a 100644
--- a/httpclient/src/main/resources/logback.xml
+++ b/httpclient/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,11 +7,13 @@
-
-
+
+
+
+
+
-
\ No newline at end of file
diff --git a/jackson/src/main/resources/logback.xml b/jackson/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/jackson/src/main/resources/logback.xml
+++ b/jackson/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/jaxb/src/main/resources/logback.xml b/jaxb/src/main/resources/logback.xml
index 8b566286b8..ec0dc2469a 100644
--- a/jaxb/src/main/resources/logback.xml
+++ b/jaxb/src/main/resources/logback.xml
@@ -1,18 +1,19 @@
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg %n
-
-
+
+
-
-
-
+
+
-
-
-
-
+
+
+
\ No newline at end of file
diff --git a/jsf/src/main/resources/logback.xml b/jsf/src/main/resources/logback.xml
index e9ae1894a6..ec0dc2469a 100644
--- a/jsf/src/main/resources/logback.xml
+++ b/jsf/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,8 +7,13 @@
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/kotlin/src/test/kotlin/com/baeldung/kotlin/GenericsTest.kt b/kotlin/src/test/kotlin/com/baeldung/kotlin/GenericsTest.kt
new file mode 100644
index 0000000000..b189d0f483
--- /dev/null
+++ b/kotlin/src/test/kotlin/com/baeldung/kotlin/GenericsTest.kt
@@ -0,0 +1,143 @@
+package com.baeldung.kotlin
+
+import org.junit.Test
+import kotlin.test.assertEquals
+import kotlin.test.assertTrue
+
+class GenericsTest {
+
+ @Test
+ fun givenParametrizeClass_whenInitializeItWithSpecificType_thenShouldBeParameterized() {
+ //given
+ val parameterizedClass = ParameterizedClass("string-value")
+
+ //when
+ val res = parameterizedClass.getValue()
+
+ //then
+ assertTrue(res is String)
+ }
+
+ @Test
+ fun givenParametrizeClass_whenInitializeIt_thenShouldBeParameterizedByInferredType() {
+ //given
+ val parameterizedClass = ParameterizedClass("string-value")
+
+ //when
+ val res = parameterizedClass.getValue()
+
+ //then
+ assertTrue(res is String)
+ }
+
+ @Test
+ fun givenParameterizedProducerByOutKeyword_whenGetValue_thenCanAssignItToSuperType() {
+ //given
+ val parameterizedProducer = ParameterizedProducer("string")
+
+ //when
+ val ref: ParameterizedProducer = parameterizedProducer
+
+ //then
+ assertTrue(ref is ParameterizedProducer)
+ }
+
+ @Test
+ fun givenParameterizedConsumerByInKeyword_whenGetValue_thenCanAssignItToSubType() {
+ //given
+ val parameterizedConsumer = ParameterizedConsumer()
+
+ //when
+ val ref: ParameterizedConsumer = parameterizedConsumer
+
+ //then
+ assertTrue(ref is ParameterizedConsumer)
+ }
+
+ @Test
+ fun givenTypeProjections_whenOperateOnTwoList_thenCanAcceptListOfSubtypes() {
+ //given
+ val ints: Array = arrayOf(1, 2, 3)
+ val any: Array = arrayOfNulls(3)
+
+ //when
+ copy(ints, any)
+
+ //then
+ assertEquals(any[0], 1)
+ assertEquals(any[1], 2)
+ assertEquals(any[2], 3)
+
+ }
+
+ fun copy(from: Array, to: Array) {
+ assert(from.size == to.size)
+ for (i in from.indices)
+ to[i] = from[i]
+ }
+
+ @Test
+ fun givenTypeProjection_whenHaveArrayOfIn_thenShouldAddElementsOfSubtypesToIt() {
+ //given
+ val objects: Array = arrayOfNulls(1)
+
+ //when
+ fill(objects, 1)
+
+ //then
+ assertEquals(objects[0], 1)
+ }
+
+ fun fill(dest: Array, value: Int) {
+ dest[0] = value
+ }
+
+ @Test
+ fun givenStartProjection_whenPassAnyType_thenCompile() {
+ //given
+ val array = arrayOf(1,2,3)
+
+ //then
+ printArray(array)
+
+ }
+
+ fun printArray(array: Array<*>) {
+ array.forEach { println(it) }
+ }
+
+ @Test
+ fun givenFunctionWithDefinedGenericConstraints_whenCallWithProperType_thenCompile(){
+ //given
+ val listOfInts = listOf(5,2,3,4,1)
+
+ //when
+ val sorted = sort(listOfInts)
+
+ //then
+ assertEquals(sorted, listOf(1,2,3,4,5))
+ }
+
+ fun > sort(list: List): List{
+ return list.sorted()
+ }
+
+ class ParameterizedClass(private val value: A) {
+
+ fun getValue(): A {
+ return value
+ }
+ }
+
+ class ParameterizedProducer(private val value: T) {
+ fun get(): T {
+ return value
+ }
+ }
+
+ class ParameterizedConsumer {
+ fun toString(value: T): String {
+ return value.toString()
+ }
+ }
+}
diff --git a/libraries/README.md b/libraries/README.md
index 7d95caa6b1..8a32a8b0e7 100644
--- a/libraries/README.md
+++ b/libraries/README.md
@@ -5,7 +5,8 @@
- [String Processing with Apache Commons Lang 3](http://www.baeldung.com/string-processing-commons-lang)
- [Introduction to Javatuples](http://www.baeldung.com/java-tuples)
- [Introduction to Javassist](http://www.baeldung.com/javassist)
-- [Embedded Jetty Server in Java](http://www.baeldung.com/jetty-embedded)
+- [Embedded Jetty Server in Java](http://www.baeldung.com/jetty-embedded)
+- [Introduction to Apache Flink with Java](http://www.baeldung.com/apache-flink)
The libraries module contains examples related to small libraries that are relatively easy to use and does not require any separate module of its own.
diff --git a/mockito/src/main/resources/logback.xml b/mockito/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/mockito/src/main/resources/logback.xml
+++ b/mockito/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java b/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java
index 588707383b..e96a4837db 100644
--- a/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java
+++ b/mybatis/src/main/java/com/baeldung/mybatis/mapper/AddressMapper.java
@@ -4,21 +4,18 @@ import com.baeldung.mybatis.model.Address;
import com.baeldung.mybatis.model.Person;
import org.apache.ibatis.annotations.*;
-
public interface AddressMapper {
- @Insert("Insert into address (streetAddress,personId) values(#{streetAddress},#{personId})")
- @Options(useGeneratedKeys = true,flushCache=true )
- public Integer saveAddress(Address address);
+ @Insert("Insert into address (streetAddress,personId) values(#{streetAddress},#{personId})")
+ @Options(useGeneratedKeys = true, flushCache = true)
+ public Integer saveAddress(Address address);
- @Select("SELECT addressId, streetAddress FROM Address WHERE addressId = #{addressId}")
- @Results(value = {
- @Result(property = "addressId", column = "addressId"),
- @Result(property = "streetAddress", column = "streetAddress"),
- @Result(property = "person", column = "personId",javaType =Person.class,one=@One(select = "getPerson"))
- })
- Address getAddresses(Integer addressID);
+ @Select("SELECT addressId, streetAddress FROM Address WHERE addressId = #{addressId}")
+ @Results(value = { @Result(property = "addressId", column = "addressId"),
+ @Result(property = "streetAddress", column = "streetAddress"),
+ @Result(property = "person", column = "personId", javaType = Person.class, one = @One(select = "getPerson")) })
+ Address getAddresses(Integer addressID);
- @Select("SELECT personId FROM address WHERE addressId = #{addressId})")
- Person getPerson(Integer personId);
+ @Select("SELECT personId FROM address WHERE addressId = #{addressId})")
+ Person getPerson(Integer personId);
}
diff --git a/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java b/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java
index ab207325ad..7021777ed1 100644
--- a/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java
+++ b/mybatis/src/main/java/com/baeldung/mybatis/mapper/PersonMapper.java
@@ -9,44 +9,39 @@ import org.apache.ibatis.mapping.StatementType;
import java.util.List;
import java.util.Map;
-
public interface PersonMapper {
- @Insert("Insert into person(name) values (#{name})")
- public Integer save(Person person);
+ @Insert("Insert into person(name) values (#{name})")
+ public Integer save(Person person);
- @Update("Update Person set name= #{name} where personId=#{personId}")
- public void updatePerson(Person person);
+ @Update("Update Person set name= #{name} where personId=#{personId}")
+ public void updatePerson(Person person);
- @Delete("Delete from Person where personId=#{personId}")
- public void deletePersonById(Integer personId);
+ @Delete("Delete from Person where personId=#{personId}")
+ public void deletePersonById(Integer personId);
- @Select("SELECT person.personId, person.name FROM person WHERE person.personId = #{personId}")
- Person getPerson(Integer personId);
+ @Select("SELECT person.personId, person.name FROM person WHERE person.personId = #{personId}")
+ Person getPerson(Integer personId);
- @Select("Select personId,name from Person where personId=#{personId}")
- @Results(value ={
- @Result(property = "personId", column = "personId"),
- @Result(property="name", column = "name"),
- @Result(property = "addresses",javaType = List.class,column = "personId",
- many=@Many(select = "getAddresses"))
+ @Select("Select personId,name from Person where personId=#{personId}")
+ @Results(value = { @Result(property = "personId", column = "personId"), @Result(property = "name", column = "name"),
+ @Result(property = "addresses", javaType = List.class, column = "personId", many = @Many(select = "getAddresses"))
- })
- public Person getPersonById(Integer personId);
+ })
+ public Person getPersonById(Integer personId);
- @Select("select addressId,streetAddress,personId from address where personId=#{personId}")
- public Address getAddresses(Integer personId);
+ @Select("select addressId,streetAddress,personId from address where personId=#{personId}")
+ public Address getAddresses(Integer personId);
- @Select("select * from Person ")
- @MapKey("personId")
- Map getAllPerson();
+ @Select("select * from Person ")
+ @MapKey("personId")
+ Map getAllPerson();
- @SelectProvider(type=MyBatisUtil.class,method="getPersonByName")
- public Person getPersonByName(String name);
+ @SelectProvider(type = MyBatisUtil.class, method = "getPersonByName")
+ public Person getPersonByName(String name);
-
- @Select(value= "{ CALL getPersonByProc( #{personId, mode=IN, jdbcType=INTEGER})}")
- @Options(statementType = StatementType.CALLABLE)
- public Person getPersonByProc(Integer personId);
+ @Select(value = "{ CALL getPersonByProc( #{personId, mode=IN, jdbcType=INTEGER})}")
+ @Options(statementType = StatementType.CALLABLE)
+ public Person getPersonByProc(Integer personId);
}
diff --git a/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java b/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java
index f32e47aef2..ea9a91c666 100644
--- a/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java
+++ b/mybatis/src/main/java/com/baeldung/mybatis/model/Address.java
@@ -1,49 +1,46 @@
package com.baeldung.mybatis.model;
-
public class Address {
- private Integer addressId;
- private String streetAddress;
- private Integer personId;
+ private Integer addressId;
+ private String streetAddress;
+ private Integer personId;
- public Address() {
- }
+ public Address() {
+ }
- public Integer getPersonId() {
- return personId;
- }
+ public Integer getPersonId() {
+ return personId;
+ }
- public void setPersonId(Integer personId) {
- this.personId = personId;
- }
+ public void setPersonId(Integer personId) {
+ this.personId = personId;
+ }
+ public Address(String streetAddress) {
+ this.streetAddress = streetAddress;
+ }
+ public Person getPerson() {
+ return person;
+ }
- public Address(String streetAddress) {
- this.streetAddress =streetAddress;
- }
+ public void setPerson(Person person) {
+ this.person = person;
+ }
- public Person getPerson() {
- return person;
- }
+ private Person person;
- public void setPerson(Person person) {
- this.person = person;
- }
+ public Address(int i, String name) {
+ this.streetAddress = name;
+ }
- private Person person;
+ public Integer getAddressId() {
+ return addressId;
+ }
- public Address(int i, String name) {
- this.streetAddress = name;
- }
-
- public Integer getAddressId() {
- return addressId;
- }
-
- public String getStreetAddress() {
- return streetAddress;
- }
+ public String getStreetAddress() {
+ return streetAddress;
+ }
}
diff --git a/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java b/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java
index 248e3ca7a1..2de08a9f7c 100644
--- a/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java
+++ b/mybatis/src/main/java/com/baeldung/mybatis/model/Person.java
@@ -3,38 +3,38 @@ package com.baeldung.mybatis.model;
import java.util.ArrayList;
import java.util.List;
-
public class Person {
- private Integer personId;
- private String name;
- private List addresses;
+ private Integer personId;
+ private String name;
+ private List addresses;
- public Person() {
- }
+ public Person() {
+ }
- public Person(Integer personId, String name) {
- this.personId=personId;
- this.name = name;
- addresses = new ArrayList();
- }
+ public Person(Integer personId, String name) {
+ this.personId = personId;
+ this.name = name;
+ addresses = new ArrayList();
+ }
- public Person(String name) {
- this.name=name;
- }
+ public Person(String name) {
+ this.name = name;
+ }
- public Integer getPersonId() {
- return personId;
- }
+ public Integer getPersonId() {
+ return personId;
+ }
- public String getName() {
- return name;
- }
- public void addAddress(Address address){
- addresses.add(address);
- }
+ public String getName() {
+ return name;
+ }
- public List getAddresses() {
- return addresses;
- }
+ public void addAddress(Address address) {
+ addresses.add(address);
+ }
+
+ public List getAddresses() {
+ return addresses;
+ }
}
diff --git a/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java b/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java
index a045e70333..fb8e15245a 100644
--- a/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java
+++ b/mybatis/src/main/java/com/baeldung/mybatis/utils/MyBatisUtil.java
@@ -1,33 +1,50 @@
package com.baeldung.mybatis.utils;
+
+import com.baeldung.mybatis.mapper.AddressMapper;
+import com.baeldung.mybatis.mapper.PersonMapper;
+import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.jdbc.SQL;
+import org.apache.ibatis.mapping.Environment;
+import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
+import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
public class MyBatisUtil {
- private static SqlSessionFactory sqlSessionFactory;
- static {
- String resource = "mybatis-config.xml";
- InputStream inputStream;
- try {
- inputStream = Resources.getResourceAsStream(resource);
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static SqlSessionFactory getSqlSessionFactory(){
- return sqlSessionFactory;
- }
+ public static final String DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";
+ public static final String URL = "jdbc:derby:testdb1;create=true";
+ public static final String USERNAME = "sa";
+ public static final String PASSWORD = "pass123";
+ private static SqlSessionFactory sqlSessionFactory;
- public String getPersonByName(String name){
- return new SQL(){{
- SELECT("*");
- FROM("person");
- WHERE("name like #{name} || '%'");
- }}.toString();
- }
+ public static SqlSessionFactory buildqlSessionFactory() {
+ DataSource dataSource = new PooledDataSource(DRIVER, URL, USERNAME, PASSWORD);
+ Environment environment = new Environment("Development", new JdbcTransactionFactory(), dataSource);
+ Configuration configuration = new Configuration(environment);
+ configuration.addMapper(PersonMapper.class);
+ configuration.addMapper(AddressMapper.class);
+ SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
+ SqlSessionFactory factory = builder.build(configuration);
+ return factory;
+
+ }
+
+ public static SqlSessionFactory getSqlSessionFactory() {
+ return sqlSessionFactory;
+ }
+
+ public String getPersonByName(String name) {
+ return new SQL() {
+ {
+ SELECT("*");
+ FROM("person");
+ WHERE("name like #{name} || '%'");
+ }
+ }.toString();
+ }
}
diff --git a/mybatis/src/main/resources/mybatis-config.xml b/mybatis/src/main/resources/mybatis-config.xml
deleted file mode 100644
index 6987797068..0000000000
--- a/mybatis/src/main/resources/mybatis-config.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java b/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java
index 8724aaa545..8dbf7d2589 100644
--- a/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java
+++ b/mybatis/src/test/java/com/baeldung/mybatis/mapper/PersonMapperTest.java
@@ -18,132 +18,128 @@ import static junit.framework.TestCase.assertEquals;
public class PersonMapperTest {
- SqlSession session;
+ SqlSession session;
- @Before
- public void setup() throws SQLException {
+ @Before
+ public void setup() throws SQLException {
- session = MyBatisUtil.getSqlSessionFactory().openSession();
- createTables(session);
+ session = MyBatisUtil.buildqlSessionFactory().openSession();
+ createTables(session);
- }
+ }
- private void createTables(SqlSession session) throws SQLException {
+ private void createTables(SqlSession session) throws SQLException {
- String createPersonTable = "create table person ("
- + "personId integer not null generated always as"
- + " identity (start with 1, increment by 1), "
- + "name varchar(30) not null, "
- + "constraint primary_key_person primary key (personId))";
+ String createPersonTable = "create table person (" + "personId integer not null generated always as"
+ + " identity (start with 1, increment by 1), " + "name varchar(30) not null, "
+ + "constraint primary_key_person primary key (personId))";
- String createAddressTable = "create table address ("
- + "addressId integer not null generated always as"
- + " identity (start with 1, increment by 1), "
- + "streetAddress varchar(300), personId integer, "
- + "constraint primary_key_address primary key (addressId))";
+ String createAddressTable = "create table address (" + "addressId integer not null generated always as"
+ + " identity (start with 1, increment by 1), " + "streetAddress varchar(300), personId integer, "
+ + "constraint primary_key_address primary key (addressId))";
- String alterTable="ALTER TABLE " +
- " address ADD CONSTRAINT fk_person FOREIGN KEY (personId) REFERENCES person (personId)";
+ String alterTable = "ALTER TABLE "
+ + " address ADD CONSTRAINT fk_person FOREIGN KEY (personId) REFERENCES person (personId)";
+ session.getConnection().createStatement().execute(createPersonTable);
+ session.getConnection().createStatement().execute(createAddressTable);
+ session.getConnection().createStatement().execute(alterTable);
- session.getConnection().createStatement().execute(createPersonTable);
- session.getConnection().createStatement().execute(createAddressTable);
- session.getConnection().createStatement().execute(alterTable);
+ }
- }
+ @Test
+ public void whenPersonAdressSaved_ThenPersonAddressCanBeQueried() {
+ Person person = new Person("Baljeet S");
+ Address address = new Address("Pune");
+ PersonMapper personMapper = session.getMapper(PersonMapper.class);
+ Integer id = personMapper.save(person);
+ address.setPersonId(id);
+ AddressMapper addressMapper = session.getMapper(AddressMapper.class);
+ addressMapper.saveAddress(address);
- @Test
- public void whenPersonAdressSaved_ThenPersonAddressCanBeQueried(){
- Person person=new Person("Baljeet S");
- Address address = new Address("Pune");
- PersonMapper personMapper=session.getMapper(PersonMapper.class);
- Integer id =personMapper.save(person);
- address.setPersonId(id);
- AddressMapper addressMapper=session.getMapper(AddressMapper.class);
- addressMapper.saveAddress(address);
+ Person returnedPerson = personMapper.getPersonById(id);
+ assertEquals("Baljeet S", returnedPerson.getName());
+ assertEquals("Pune", returnedPerson.getAddresses().get(0).getStreetAddress());
+ }
- Person returnedPerson= personMapper.getPersonById(id);
- assertEquals("Baljeet S", returnedPerson.getName());
- assertEquals("Pune", returnedPerson.getAddresses().get(0).getStreetAddress());
- }
+ @Test
+ public void whenPersonSaved_ThenPersonCanBeQueried() {
+ Person person = new Person("Baljeet S");
+ Address address = new Address("Pune");
+ PersonMapper personMapper = session.getMapper(PersonMapper.class);
+ Integer id = personMapper.save(person);
+ address.setPersonId(id);
+ AddressMapper addressMapper = session.getMapper(AddressMapper.class);
+ addressMapper.saveAddress(address);
- @Test
- public void whenPersonSaved_ThenPersonCanBeQueried(){
- Person person=new Person("Baljeet S");
- Address address = new Address("Pune");
- PersonMapper personMapper=session.getMapper(PersonMapper.class);
- Integer id =personMapper.save(person);
- address.setPersonId(id);
- AddressMapper addressMapper=session.getMapper(AddressMapper.class);
- addressMapper.saveAddress(address);
+ Person returnedPerson = personMapper.getPerson(id);
+ assertEquals("Baljeet S", returnedPerson.getName());
+ }
- Person returnedPerson= personMapper.getPerson(id);
- assertEquals("Baljeet S", returnedPerson.getName());
- }
+ @Test
+ public void whenPersonUpdated_ThenPersonIsChanged() {
+ Person person = new Person("Baljeet S");
+ Address address = new Address("Pune");
+ PersonMapper personMapper = session.getMapper(PersonMapper.class);
+ Integer id = personMapper.save(person);
+ address.setPersonId(id);
+ AddressMapper addressMapper = session.getMapper(AddressMapper.class);
+ addressMapper.saveAddress(address);
- @Test
- public void whenPersonUpdated_ThenPersonIsChanged(){
- Person person=new Person("Baljeet S");
- Address address = new Address("Pune");
- PersonMapper personMapper=session.getMapper(PersonMapper.class);
- Integer id =personMapper.save(person);
- address.setPersonId(id);
- AddressMapper addressMapper=session.getMapper(AddressMapper.class);
- addressMapper.saveAddress(address);
+ personMapper.updatePerson(new Person(id, "Baljeet1"));
+ Person returnedPerson = personMapper.getPerson(id);
+ assertEquals("Baljeet1", returnedPerson.getName());
+ }
- personMapper.updatePerson(new Person(id,"Baljeet1"));
- Person returnedPerson= personMapper.getPerson(id);
- assertEquals("Baljeet1", returnedPerson.getName());
- }
- @Test
- public void whenPersoSaved_ThenMapIsReturned(){
- Person person=new Person("Baljeet S");
- Address address = new Address("Pune");
- PersonMapper personMapper=session.getMapper(PersonMapper.class);
- Integer id =personMapper.save(person);
- address.setPersonId(id);
- AddressMapper addressMapper=session.getMapper(AddressMapper.class);
- addressMapper.saveAddress(address);
+ @Test
+ public void whenPersoSaved_ThenMapIsReturned() {
+ Person person = new Person("Baljeet S");
+ Address address = new Address("Pune");
+ PersonMapper personMapper = session.getMapper(PersonMapper.class);
+ Integer id = personMapper.save(person);
+ address.setPersonId(id);
+ AddressMapper addressMapper = session.getMapper(AddressMapper.class);
+ addressMapper.saveAddress(address);
- Map returnedPerson= personMapper.getAllPerson();
- assertEquals(1, returnedPerson.size());
- }
+ Map returnedPerson = personMapper.getAllPerson();
+ assertEquals(1, returnedPerson.size());
+ }
- @Test
- public void whenPersonSearched_ThenResultIsReturned(){
- Person person=new Person("Baljeet S");
- Address address = new Address("Pune");
- PersonMapper personMapper=session.getMapper(PersonMapper.class);
- Integer id =personMapper.save(person);
- address.setPersonId(id);
- AddressMapper addressMapper=session.getMapper(AddressMapper.class);
- addressMapper.saveAddress(address);
+ @Test
+ public void whenPersonSearched_ThenResultIsReturned() {
+ Person person = new Person("Baljeet S");
+ Address address = new Address("Pune");
+ PersonMapper personMapper = session.getMapper(PersonMapper.class);
+ Integer id = personMapper.save(person);
+ address.setPersonId(id);
+ AddressMapper addressMapper = session.getMapper(AddressMapper.class);
+ addressMapper.saveAddress(address);
- Person returnedPerson= personMapper.getPersonByName("Baljeet S");
- assertEquals("Baljeet S", returnedPerson.getName());
- }
+ Person returnedPerson = personMapper.getPersonByName("Baljeet S");
+ assertEquals("Baljeet S", returnedPerson.getName());
+ }
- @Test
- public void whenAddressSearched_ThenResultIsReturned(){
- Person person=new Person("Baljeet S");
- Address address = new Address("Pune");
- PersonMapper personMapper=session.getMapper(PersonMapper.class);
- Integer id =personMapper.save(person);
- address.setPersonId(id);
- AddressMapper addressMapper=session.getMapper(AddressMapper.class);
- Integer addressId=addressMapper.saveAddress(address);
- Address returnedAddress=addressMapper.getAddresses(addressId);
+ @Test
+ public void whenAddressSearched_ThenResultIsReturned() {
+ Person person = new Person("Baljeet S");
+ Address address = new Address("Pune");
+ PersonMapper personMapper = session.getMapper(PersonMapper.class);
+ Integer id = personMapper.save(person);
+ address.setPersonId(id);
+ AddressMapper addressMapper = session.getMapper(AddressMapper.class);
+ Integer addressId = addressMapper.saveAddress(address);
+ Address returnedAddress = addressMapper.getAddresses(addressId);
- assertEquals("Pune", returnedAddress.getStreetAddress());
- }
+ assertEquals("Pune", returnedAddress.getStreetAddress());
+ }
- @After
- public void cleanup() throws SQLException {
- session.getConnection().createStatement().execute("drop table address");
- session.getConnection().createStatement().execute("drop table person");
+ @After
+ public void cleanup() throws SQLException {
+ session.getConnection().createStatement().execute("drop table address");
+ session.getConnection().createStatement().execute("drop table person");
- session.close();
+ session.close();
- }
+ }
}
diff --git a/querydsl/src/main/resources/logback.xml b/querydsl/src/main/resources/logback.xml
index d0a1dc06ac..ec0dc2469a 100644
--- a/querydsl/src/main/resources/logback.xml
+++ b/querydsl/src/main/resources/logback.xml
@@ -1,37 +1,19 @@
-
-
- %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p: %c - %m%n
-
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
-
-
-
-
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
\ No newline at end of file
diff --git a/rest-assured/pom.xml b/rest-assured/pom.xml
index bbeef8bb9c..2c8039401e 100644
--- a/rest-assured/pom.xml
+++ b/rest-assured/pom.xml
@@ -60,14 +60,15 @@
- log4j
- log4j
- ${log4j.version}
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
- org.slf4j
- slf4j-log4j12
- ${slf4j.version}
+ ch.qos.logback
+ logback-core
+ ${logback.version}
@@ -276,8 +277,9 @@
1.4.7
9.4.0.v20161208
- 1.2.17
1.7.21
+ 1.1.7
+
3.5
1.2
diff --git a/rest-assured/src/test/resources/log4j.properties b/rest-assured/src/test/resources/log4j.properties
deleted file mode 100644
index d3c6b9e783..0000000000
--- a/rest-assured/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-## Logger configure
-datestamp=yyyy-MM-dd HH:mm:ss
-log4j.rootLogger=TRACE, file, console
-
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.maxFileSize=1GB
-log4j.appender.file.maxBackupIndex=5
-log4j.appender.file.File=log/rest-assured.log
-log4j.appender.file.threshold=TRACE
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{${datestamp}} %5p: [%c] - %m%n
-
-log4j.appender.console=org.apache.log4j.ConsoleAppender
-log4j.appender.console.Threshold=INFO
-log4j.appender.console.layout=org.apache.log4j.PatternLayout
-log4j.appender.console.layout.ConversionPattern=%d{${datestamp}} %5p\: [%c] - %m%n
\ No newline at end of file
diff --git a/rest-assured/src/test/resources/logback.xml b/rest-assured/src/test/resources/logback.xml
new file mode 100644
index 0000000000..ec0dc2469a
--- /dev/null
+++ b/rest-assured/src/test/resources/logback.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/rest-testing/src/main/resources/logback.xml b/rest-testing/src/main/resources/logback.xml
index aa1e9cd522..ec0dc2469a 100644
--- a/rest-testing/src/main/resources/logback.xml
+++ b/rest-testing/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,11 +7,13 @@
-
-
+
+
+
+
+
-
\ No newline at end of file
diff --git a/resteasy/bin/src/main/webapp/WEB-INF/classes/logback.xml b/resteasy/bin/src/main/webapp/WEB-INF/classes/logback.xml
index d94e9f71ab..ec0dc2469a 100644
--- a/resteasy/bin/src/main/webapp/WEB-INF/classes/logback.xml
+++ b/resteasy/bin/src/main/webapp/WEB-INF/classes/logback.xml
@@ -1,3 +1,19 @@
-
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resteasy/src/main/webapp/WEB-INF/classes/logback.xml b/resteasy/src/main/webapp/WEB-INF/classes/logback.xml
index d94e9f71ab..ec0dc2469a 100644
--- a/resteasy/src/main/webapp/WEB-INF/classes/logback.xml
+++ b/resteasy/src/main/webapp/WEB-INF/classes/logback.xml
@@ -1,3 +1,19 @@
-
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-all/src/main/resources/logback.xml b/spring-all/src/main/resources/logback.xml
index 45c9697f77..ec0dc2469a 100644
--- a/spring-all/src/main/resources/logback.xml
+++ b/spring-all/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-boot/src/main/resources/logback.xml b/spring-boot/src/main/resources/logback.xml
index 78913ee76f..ec0dc2469a 100644
--- a/spring-boot/src/main/resources/logback.xml
+++ b/spring-boot/src/main/resources/logback.xml
@@ -1,14 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java
index d98e22f822..84792deed1 100644
--- a/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java
+++ b/spring-cloud/spring-cloud-zookeeper/Greeting/src/main/java/com/baeldung/spring/cloud/greeting/GreetingController.java
@@ -6,8 +6,7 @@
package com.baeldung.spring.cloud.greeting;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@@ -16,8 +15,7 @@ public class GreetingController {
@Autowired
private HelloWorldClient helloWorldClient;
- @RequestMapping(value = "/get-greeting", method = RequestMethod.GET)
-
+ @GetMapping("/get-greeting")
public String greeting() {
return helloWorldClient.HelloWorld();
diff --git a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java
index 9048e6bed8..6c662e1111 100644
--- a/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java
+++ b/spring-cloud/spring-cloud-zookeeper/HelloWorld/src/main/java/com/baeldung/spring/cloud/helloworld/HelloWorldController.java
@@ -5,14 +5,13 @@
*/
package com.baeldung.spring.cloud.helloworld;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
- @RequestMapping(path = "/helloworld", method = RequestMethod.GET)
+ @GetMapping("/helloworld")
public String HelloWorld() {
return "Hello World!";
}
diff --git a/spring-custom-aop/spring-custom-aop/src/main/resources/logback.xml b/spring-custom-aop/spring-custom-aop/src/main/resources/logback.xml
index 78913ee76f..ec0dc2469a 100644
--- a/spring-custom-aop/spring-custom-aop/src/main/resources/logback.xml
+++ b/spring-custom-aop/spring-custom-aop/src/main/resources/logback.xml
@@ -1,14 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-data-cassandra/src/main/resources/logback.xml b/spring-data-cassandra/src/main/resources/logback.xml
index 215eeede64..ec0dc2469a 100644
--- a/spring-data-cassandra/src/main/resources/logback.xml
+++ b/spring-data-cassandra/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -16,5 +16,4 @@
-
\ No newline at end of file
diff --git a/spring-data-couchbase-2/src/main/resources/logback.xml b/spring-data-couchbase-2/src/main/resources/logback.xml
index d9067fd1da..ec0dc2469a 100644
--- a/spring-data-couchbase-2/src/main/resources/logback.xml
+++ b/spring-data-couchbase-2/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -8,10 +8,12 @@
-
+
+
+
+
-
\ No newline at end of file
diff --git a/spring-data-couchbase-2/src/test/resources/logback.xml b/spring-data-couchbase-2/src/test/resources/logback.xml
index d9067fd1da..ec0dc2469a 100644
--- a/spring-data-couchbase-2/src/test/resources/logback.xml
+++ b/spring-data-couchbase-2/src/test/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -8,10 +8,12 @@
-
+
+
+
+
-
\ No newline at end of file
diff --git a/spring-data-dynamodb/src/main/resources/logback.xml b/spring-data-dynamodb/src/main/resources/logback.xml
index c0bc602910..ec0dc2469a 100644
--- a/spring-data-dynamodb/src/main/resources/logback.xml
+++ b/spring-data-dynamodb/src/main/resources/logback.xml
@@ -1,14 +1,19 @@
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
-
+
+
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-data-elasticsearch/src/main/resources/logback.xml b/spring-data-elasticsearch/src/main/resources/logback.xml
index db75fcbe40..ec0dc2469a 100644
--- a/spring-data-elasticsearch/src/main/resources/logback.xml
+++ b/spring-data-elasticsearch/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
-
- elasticsearch - %date [%thread] %-5level %logger{36} - %message%n
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
-
-
-
+
+
-
\ No newline at end of file
diff --git a/spring-data-mongodb/src/main/resources/logback.xml b/spring-data-mongodb/src/main/resources/logback.xml
index 215eeede64..ec0dc2469a 100644
--- a/spring-data-mongodb/src/main/resources/logback.xml
+++ b/spring-data-mongodb/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -16,5 +16,4 @@
-
\ No newline at end of file
diff --git a/spring-data-neo4j/src/main/resources/logback.xml b/spring-data-neo4j/src/main/resources/logback.xml
index 215eeede64..ec0dc2469a 100644
--- a/spring-data-neo4j/src/main/resources/logback.xml
+++ b/spring-data-neo4j/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -16,5 +16,4 @@
-
\ No newline at end of file
diff --git a/spring-data-neo4j/src/test/resources/logback.xml b/spring-data-neo4j/src/test/resources/logback.xml
index 39a6538324..ec0dc2469a 100644
--- a/spring-data-neo4j/src/test/resources/logback.xml
+++ b/spring-data-neo4j/src/test/resources/logback.xml
@@ -1,16 +1,19 @@
-
-
+
- %d %5p %40.40c:%4L - %m%n
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
-
+
+
-
-
+
+
+
+
+
-
-
+
\ No newline at end of file
diff --git a/spring-data-redis/src/main/resources/logback.xml b/spring-data-redis/src/main/resources/logback.xml
index 215eeede64..ec0dc2469a 100644
--- a/spring-data-redis/src/main/resources/logback.xml
+++ b/spring-data-redis/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -16,5 +16,4 @@
-
\ No newline at end of file
diff --git a/spring-exceptions/src/main/resources/logback.xml b/spring-exceptions/src/main/resources/logback.xml
index 45c9697f77..ec0dc2469a 100644
--- a/spring-exceptions/src/main/resources/logback.xml
+++ b/spring-exceptions/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-hibernate3/src/main/resources/logback.xml b/spring-hibernate3/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-hibernate3/src/main/resources/logback.xml
+++ b/spring-hibernate3/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-hibernate4/src/main/resources/logback.xml b/spring-hibernate4/src/main/resources/logback.xml
index 71a6d50a58..ec0dc2469a 100644
--- a/spring-hibernate4/src/main/resources/logback.xml
+++ b/spring-hibernate4/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-hibernate5/src/main/resources/logback.xml b/spring-hibernate5/src/main/resources/logback.xml
index 71a6d50a58..ec0dc2469a 100644
--- a/spring-hibernate5/src/main/resources/logback.xml
+++ b/spring-hibernate5/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-jersey/src/main/resources/logback.xml b/spring-jersey/src/main/resources/logback.xml
index 788096686a..ec0dc2469a 100644
--- a/spring-jersey/src/main/resources/logback.xml
+++ b/spring-jersey/src/main/resources/logback.xml
@@ -1,15 +1,19 @@
+
-
- web - %date [%thread] %-5level %logger{36} -
- %message%n
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/spring-jpa/src/main/resources/logback.xml b/spring-jpa/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-jpa/src/main/resources/logback.xml
+++ b/spring-jpa/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-ldap/src/main/resources/logback.xml b/spring-ldap/src/main/resources/logback.xml
index 788096686a..ec0dc2469a 100644
--- a/spring-ldap/src/main/resources/logback.xml
+++ b/spring-ldap/src/main/resources/logback.xml
@@ -1,15 +1,19 @@
+
-
- web - %date [%thread] %-5level %logger{36} -
- %message%n
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/spring-mvc-java/src/main/resources/logback.xml b/spring-mvc-java/src/main/resources/logback.xml
index e0721aa890..ec0dc2469a 100644
--- a/spring-mvc-java/src/main/resources/logback.xml
+++ b/spring-mvc-java/src/main/resources/logback.xml
@@ -1,21 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
-
- %date [%thread] %-5level %logger{6} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-mvc-xml/src/main/resources/logback.xml b/spring-mvc-xml/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-mvc-xml/src/main/resources/logback.xml
+++ b/spring-mvc-xml/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-quartz/src/main/resources/logback.xml b/spring-quartz/src/main/resources/logback.xml
index be0937fefe..ec0dc2469a 100644
--- a/spring-quartz/src/main/resources/logback.xml
+++ b/spring-quartz/src/main/resources/logback.xml
@@ -1,16 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-rest/pom.xml b/spring-rest/pom.xml
index a9b208bcd2..6afe4004c3 100644
--- a/spring-rest/pom.xml
+++ b/spring-rest/pom.xml
@@ -188,6 +188,12 @@
kryo
${kryo.version}
+
+
+ com.jayway.jsonpath
+ json-path
+
+
@@ -358,7 +364,8 @@
3.4.1
-
+
+ 2.2.0
diff --git a/spring-rest/src/main/java/org/baeldung/web/controller/BazzNewMappingsExampleController.java b/spring-rest/src/main/java/org/baeldung/web/controller/BazzNewMappingsExampleController.java
new file mode 100644
index 0000000000..4bcafc04fc
--- /dev/null
+++ b/spring-rest/src/main/java/org/baeldung/web/controller/BazzNewMappingsExampleController.java
@@ -0,0 +1,55 @@
+package org.baeldung.web.controller;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.baeldung.web.dto.Bazz;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+
+@RestController
+@RequestMapping("/bazz")
+public class BazzNewMappingsExampleController {
+
+ @GetMapping
+ public ResponseEntity> getBazzs() throws JsonProcessingException{
+ List data = Arrays.asList(
+ new Bazz("1", "Bazz1"),
+ new Bazz("2", "Bazz2"),
+ new Bazz("3", "Bazz3"),
+ new Bazz("4", "Bazz4"));
+ return new ResponseEntity<>(data, HttpStatus.OK);
+ }
+
+ @GetMapping("/{id}")
+ public ResponseEntity> getBazz(@PathVariable String id){
+ return new ResponseEntity<>(new Bazz(id, "Bazz"+id), HttpStatus.OK);
+ }
+
+ @PostMapping
+ public ResponseEntity> newBazz(@RequestParam("name") String name){
+ return new ResponseEntity<>(new Bazz("5", name), HttpStatus.OK);
+ }
+
+ @PutMapping("/{id}")
+ public ResponseEntity> updateBazz(@PathVariable String id,
+ @RequestParam("name") String name){
+ return new ResponseEntity<>(new Bazz(id, name), HttpStatus.OK);
+ }
+
+ @DeleteMapping("/{id}")
+ public ResponseEntity> deleteBazz(@PathVariable String id){
+ return new ResponseEntity<>(new Bazz(id), HttpStatus.OK);
+ }
+
+}
diff --git a/spring-rest/src/main/java/org/baeldung/web/dto/Bazz.java b/spring-rest/src/main/java/org/baeldung/web/dto/Bazz.java
new file mode 100644
index 0000000000..d9a495b726
--- /dev/null
+++ b/spring-rest/src/main/java/org/baeldung/web/dto/Bazz.java
@@ -0,0 +1,22 @@
+package org.baeldung.web.dto;
+
+public class Bazz {
+
+
+ public String id;
+ public String name;
+
+ public Bazz(String id){
+ this.id = id;
+ }
+ public Bazz(String id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "Bazz [id=" + id + ", name=" + name + "]";
+ }
+
+}
diff --git a/spring-rest/src/main/resources/logback.xml b/spring-rest/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-rest/src/main/resources/logback.xml
+++ b/spring-rest/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerTest.java b/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerTest.java
new file mode 100644
index 0000000000..f2f00a40d8
--- /dev/null
+++ b/spring-rest/src/test/java/org/baeldung/web/test/BazzNewMappingsExampleControllerTest.java
@@ -0,0 +1,80 @@
+
+package org.baeldung.web.test;
+
+import static org.hamcrest.Matchers.hasSize;
+import static org.hamcrest.Matchers.is;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.put;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+
+import org.baeldung.config.WebConfig;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
+import org.springframework.test.context.web.WebAppConfiguration;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+
+@RunWith(SpringJUnit4ClassRunner.class)
+@ContextConfiguration(classes = WebConfig.class)
+@WebAppConfiguration
+public class BazzNewMappingsExampleControllerTest {
+
+ private MockMvc mockMvc;
+
+ @Autowired
+ private WebApplicationContext webApplicationContext;
+
+ @Before
+ public void setUp() {
+ mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
+ }
+
+ @Test
+ public void whenGettingAllBazz_thenSuccess() throws Exception{
+ mockMvc.perform(get("/bazz"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$", hasSize(4)))
+ .andExpect(jsonPath("$[1].id", is("2")))
+ .andExpect(jsonPath("$[1].name", is("Bazz2")));
+ }
+
+ @Test
+ public void whenGettingABazz_thenSuccess() throws Exception{
+ mockMvc.perform(get("/bazz/1"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.id", is("1")))
+ .andExpect(jsonPath("$.name", is("Bazz1")));
+ }
+
+ @Test
+ public void whenAddingABazz_thenSuccess() throws Exception{
+ mockMvc.perform(post("/bazz").param("name", "Bazz5"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.id", is("5")))
+ .andExpect(jsonPath("$.name", is("Bazz5")));
+ }
+
+ @Test
+ public void whenUpdatingABazz_thenSuccess() throws Exception{
+ mockMvc.perform(put("/bazz/5").param("name", "Bazz6"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.id", is("5")))
+ .andExpect(jsonPath("$.name", is("Bazz6")));
+ }
+
+ @Test
+ public void whenDeletingABazz_thenSuccess() throws Exception{
+ mockMvc.perform(delete("/bazz/5"))
+ .andExpect(status().isOk())
+ .andExpect(jsonPath("$.id", is("5")));
+ }
+}
diff --git a/spring-security-mvc-boot/src/main/java/org/baeldung/config/SecurityConfig.java b/spring-security-mvc-boot/src/main/java/org/baeldung/config/SecurityConfig.java
index 8cc9d45823..acb7e6820a 100644
--- a/spring-security-mvc-boot/src/main/java/org/baeldung/config/SecurityConfig.java
+++ b/spring-security-mvc-boot/src/main/java/org/baeldung/config/SecurityConfig.java
@@ -24,7 +24,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(final AuthenticationManagerBuilder auth) throws Exception {
- auth.userDetailsService(userDetailsService);
+ auth.authenticationProvider(authenticationProvider());
}
@Override
diff --git a/spring-security-mvc-custom/src/main/resources/logback.xml b/spring-security-mvc-custom/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-mvc-custom/src/main/resources/logback.xml
+++ b/spring-security-mvc-custom/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-mvc-digest-auth/src/main/resources/logback.xml b/spring-security-mvc-digest-auth/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-mvc-digest-auth/src/main/resources/logback.xml
+++ b/spring-security-mvc-digest-auth/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-mvc-ldap/src/main/resources/logback.xml b/spring-security-mvc-ldap/src/main/resources/logback.xml
index 2dc76c96f3..ec0dc2469a 100644
--- a/spring-security-mvc-ldap/src/main/resources/logback.xml
+++ b/spring-security-mvc-ldap/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-mvc-login/src/main/resources/logback.xml b/spring-security-mvc-login/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-mvc-login/src/main/resources/logback.xml
+++ b/spring-security-mvc-login/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml b/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml
+++ b/spring-security-mvc-persisted-remember-me/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-mvc-session/src/main/resources/logback.xml b/spring-security-mvc-session/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-mvc-session/src/main/resources/logback.xml
+++ b/spring-security-mvc-session/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-rest-basic-auth/src/main/resources/logback.xml b/spring-security-rest-basic-auth/src/main/resources/logback.xml
index 90f61a95bc..ec0dc2469a 100644
--- a/spring-security-rest-basic-auth/src/main/resources/logback.xml
+++ b/spring-security-rest-basic-auth/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-rest-custom/src/main/resources/logback.xml b/spring-security-rest-custom/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-rest-custom/src/main/resources/logback.xml
+++ b/spring-security-rest-custom/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-rest-digest-auth/src/main/resources/logback.xml b/spring-security-rest-digest-auth/src/main/resources/logback.xml
index 90f61a95bc..ec0dc2469a 100644
--- a/spring-security-rest-digest-auth/src/main/resources/logback.xml
+++ b/spring-security-rest-digest-auth/src/main/resources/logback.xml
@@ -1,22 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-rest-full/src/main/resources/logback.xml b/spring-security-rest-full/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-rest-full/src/main/resources/logback.xml
+++ b/spring-security-rest-full/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-security-rest/src/main/resources/logback.xml b/spring-security-rest/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-security-rest/src/main/resources/logback.xml
+++ b/spring-security-rest/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/spring-thymeleaf/src/main/resources/logback.xml b/spring-thymeleaf/src/main/resources/logback.xml
index 1146dade63..ec0dc2469a 100644
--- a/spring-thymeleaf/src/main/resources/logback.xml
+++ b/spring-thymeleaf/src/main/resources/logback.xml
@@ -1,20 +1,19 @@
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
-
-
- web - %date [%thread] %-5level %logger{36} - %message%n
-
-
-
+
+
-
-
-
-
-
-
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/testng/src/test/resources/logback.xml b/testng/src/test/resources/logback.xml
index 346682f033..035520aa15 100644
--- a/testng/src/test/resources/logback.xml
+++ b/testng/src/test/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,8 +7,13 @@
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/vertx/src/main/resources/logback.xml b/vertx/src/main/resources/logback.xml
index e9ae1894a6..ec0dc2469a 100644
--- a/vertx/src/main/resources/logback.xml
+++ b/vertx/src/main/resources/logback.xml
@@ -1,5 +1,5 @@
+
-
web - %date [%thread] %-5level %logger{36} - %message%n
@@ -7,8 +7,13 @@
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/xstream/pom.xml b/xstream/pom.xml
index 7af8efa659..ee1882850a 100644
--- a/xstream/pom.xml
+++ b/xstream/pom.xml
@@ -27,10 +27,23 @@
- log4j
- log4j
- ${log4j.version}
+ org.slf4j
+ slf4j-api
+ ${org.slf4j.version}
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+ ch.qos.logback
+ logback-core
+ ${logback.version}
+
+
@@ -51,7 +64,9 @@
1.4.9
1.3.8
- 1.2.17
+ 1.7.21
+ 1.1.7
+
4.12
diff --git a/xstream/src/main/resources/log4j.properties b/xstream/src/main/resources/log4j.properties
deleted file mode 100644
index 03d8c51aa0..0000000000
--- a/xstream/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# Root logger option
-log4j.rootLogger=DEBUG, file
-# Redirect log messages to console
-# log4j.appender.stdout=org.apache.log4j.ConsoleAppender
-# log4j.appender.stdout.Target=System.out
-# log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
-# log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
-# Redirect log messages to a log file, support file rolling.
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=D:\\Test\\xstream-application.log
-log4j.appender.file.MaxFileSize=5MB
-log4j.appender.file.MaxBackupIndex=10
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
\ No newline at end of file
diff --git a/xstream/src/main/resources/logback.xml b/xstream/src/main/resources/logback.xml
new file mode 100644
index 0000000000..ec0dc2469a
--- /dev/null
+++ b/xstream/src/main/resources/logback.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ web - %date [%thread] %-5level %logger{36} - %message%n
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file